| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1215 人关注过本帖
标题:[新手]请问如何统计打入的int变量的个数
只看楼主 加入收藏
rock1013
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-23
收藏
 问题点数:0 回复次数:13 
[新手]请问如何统计打入的int变量的个数
我打一些数(int),但不知道个数
1.如何统计这些数的个数呢?并且如何同时将这些数放入数组求平均值呢?
求教
谢谢

搜索更多相关主题的帖子: int 变量 统计 
2007-06-29 15:12
rock1013
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-23
收藏
得分:0 

我刚才想了想,贴个上来
#include<stdio.h>
#include<math.h>
main()
{
char b[256];
int a[256];
int i,num=1,sum=0;
printf("please enter the numbers\n");
gets(b);
//printf("%s\n",b);
for (i=0;;i++)
{
if (b[i]=='\0')
break;
if (b[i]==' ')
num=num+1;
}
//printf("%d\n",num);
for (i=0;i<num;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
sum=sum/num;
printf("%d",sum);

}


但是有个问题的,我这个需要打两遍,有什么法子解决伐?

2007-06-29 15:27
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
你可以这样输入1,2,3,4,5.....
然后用strtok这个函数就行了,这样就只要一个循环

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-06-29 16:47
rock1013
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-23
收藏
得分:0 

不太理解,我刚查了一下,strtok函数是分割字符串的。
具体怎么编译的,请详述一下,谢谢啦。
(ps:分割出来的是不是还是字符串呢?可以加载到int数组中么?)
2007-06-29 17:29
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
收藏
得分:0 
简直就是多此一举,直接放int数组里面就不可以了吗?在加一个计数器,用一个while循环,直到输入终止字符结束.然后计算int数组中所有数的平均值.
void main()
{
int array[255];
memset(array,0,sizeof(array));
int count=0,i=0,sum=0;
float average;
printf("Enter a number:");
scanf("%d",&array[i]);
count++;
while(array[i]!=999999) //假设输入999999时终止
{
i++;
printf("Enter a number:");
scanf("%d",&array[i]);
count++;
}
array[i]=0;
count--;//去掉最后输入的999999
for(int j=0;j<count;j++)//求平均值,当然也可在上面输入的时候就计算
{
sum+=array[j];
}
average=(float)sum/(float)count;
printf("输入的个数:%d , 平均值:%f",sum,average);
}

只有想不到,没有做不到
2007-06-29 20:17
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
收藏
得分:0 
memset是动态分配内存,包含在头文件string.h中

只有想不到,没有做不到
2007-06-29 20:24
rock1013
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-23
收藏
得分:0 

谢谢你~~方法很好

2007-06-29 21:04
rock1013
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-6-23
收藏
得分:0 
不过感觉不是太完美
别人打数字的时候为什么要最后+个奇怪的数字啊?
有没有直接打回车中止的呀?
求教
谢谢
2007-06-29 21:20
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
5楼的方法岂不是要先划定内存?
如果我只用两个,而你分配了255个,这岂不是太浪费了?
这可是C语言的一个劣势,应当避免吧

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-06-30 02:09
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
收藏
得分:0 
回复:(rock1013)[em13]不过感觉不是太完美别人打数...

该了一下上面的程序,回车的时候终止,不过看起来的有的复杂,因为输入的数是以字符的形式存储的.
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>

int main()
{
int array[255];
char str[255];
char str_temp[128];

memset(array,0,sizeof(array));
memset(str,0,sizeof(str));

int count=0,i=0,sum=0,num,j;
float average;

printf("请输入整数以','隔开:"); //例如输入:1,2,3,5,6,7
str[i]=getchar();
while(str[i]!='\n')//输入整数,注意不要加空格,要以','隔开 ,当输入回车终止
{
i++;
str[i]=getchar();
if(str[i]==',')
count++;//存储输入整数的个数
}
str[i]='\0';//去掉最后输入回车
count++;
num=i;//存储输入字符的个数
i=0;

memset(str_temp,0,sizeof(str_temp));
strcpy(str_temp,strtok(str,","));
array[i++]=atoi(str_temp);

if(count==2)//只输入两个数,提取最后一个数
{
memset(str_temp,0,sizeof(str_temp));
strcpy(str_temp,strtok(NULL,"\0"));
array[i++]=atoi(str_temp);
}
else
{
for(j=0;j<count-2;j++)
{
memset(str_temp,0,sizeof(str_temp));
strcpy(str_temp,strtok(NULL,","));
array[i++]=atoi(str_temp);
}
memset(str_temp,0,sizeof(str_temp));
strcpy(str_temp,strtok(NULL,"\0"));
array[i++]=atoi(str_temp);

}

for(int k=0;k<count;k++)//求和
{
sum+=array[k];
}
average=(float)sum/(float)count;//计算平均值
printf("输入的个数:%d , 平均值:%f",count,average);
getch();
return 0;
}


只有想不到,没有做不到
2007-07-10 17:25
快速回复:[新手]请问如何统计打入的int变量的个数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037368 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved