首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新手C语言有关问题

2012-03-09 
新手C语言问题#includestdio.h#includemath.hdouble aver(int add[])/*函数声明,这是个求平均值的函

新手C语言问题
#include<stdio.h>
#include<math.h>
double aver(int add[]);/*函数声明,这是个求平均值的函数*/
int Min,Max;/*定义两个全局变量*/
int main()
{
int add[10],i;
double average;
for(i=0;i<10;i++)
scanf("%d",&add[i]);/*初始化数组*/
average=aver(add);
printf("%d %d %lf",Min,Max,average);
return 0;
}
double aver(int add[])
{
int i;
double z=0.0;
Min=add[0];
Max=add[0];
for(i=0;i<10;i++)
{
if(add[i]<=Min)Min=add[i];
else if(add[i]>=Max)Max=add[i];
z+=add[i];
printf("%lf\n",z);
}

  return z/10;
}
输入 
1 2 3 4 5 6 7 8 9

输出
0 9 4.5000

但...为什么当我把double average;改为int average.....输出结果变为了0 9 0.000000,理论上应该是0 9 4啊。。。求高手指点。。





还有一个问题


第一个:

#include<stdio.h>  
#include<string.h>
int main()
{
char a[90];
int i;
scanf("%d",&i);
scanf("%s",a);
printf("%d\n",i);
printf("%s\n",a);
return 0;
}

第二个:
#include<stdio.h>
#include<string.h>
int main()
{
char a[90];
int i;
scanf("%d",&i);
/*这里出了问题,当我输入i的值后,按一个回车,程序就结束了,但我还没有输入a啊,求高手指导,谢谢*/
gets(a);
printf("%d\n",i);
printf("%s\n",a);
return 0;
}。。。。。。。。。。。。为什么第一个程序没问题而第二个却有问题呢?/*这里出了问题,当我输入i的值后,按一个回车,程序就结束了,但我还没有输入a啊,求高手指导,谢谢*/


[解决办法]
但...为什么当我把double average;改为int average.....0 9 4啊。。。求高手指点。。
因为你输出的时候printf("%d %d %lf",Min,Max,average);红色部分没改成%d
[解决办法]
第二个问题是缓冲区的问题,因为你输入了i值后按回车,那么'\n'就留在了缓冲区中,造成你gets的时候获取了'\n',而结束,你可以在gets前加个getchar();

热点排行