c语言问题 我想知道这道题的C为什么错了,谢谢了 如何查看c语言错误位置
为什么C语言运行错误问题
编译没出错表明的是语法是正确的!而连接的错误是因为逻辑性的问题,出现了没有解决的外部参数。按照你的意思,应该是求1到10的和。那么在for循环这里是肯定有问题的。还有Int只是定义了变量,但是变量的值是随机的,所以按照你这样的做法是可能进入不到循环的。应该对变量初始化正确的写法是这样的: int i,sum=0; for(i=0,i<=10;i++) sum=sum+i; printf("sum=%d\n",sum); 还有main也写错了
C语言编程时的错误
展开全部
我已经测试了,主要是语法错误。在VC++6.0中编译阶段就能得到错误信息。要保证代码正确性,首先代码格式要良好,这样才容易找出错误。
{a[0].score=a[2].score;j=2;}};这句最后的};是多余的。
还有一个逻辑问题。学生姓名是字符串类型,最后一句输出时你却用%c,显然应当用%s,并且将a[j].name[20]修改为a[j].name
最后一个建议:最后一句输出也加上\n
帮我看下这个C程序为什么不对?
你这个程序看起来是没有问题的,在函数传递时传递指针,score、shuzu都指向同样的地址控件,在函数中改变数组中的值。这些都没有问题。
只是有一点你忽略掉了,就是printf()函数搞得鬼。 printf()这个函数没有掌握好。这个函数是从右到左进行计算。
也就是说printf("平均分是:%f\n最高分数是:%f\n最低分数是:%f\n",HH(shuzu),shuzu[0],shuzu[1]);是先使用shuzu[1],再使用shuzu[0],最后才会用到HH(shuzu)。在调用HH(shuzu)之前,已经使用完shuzu[0],shuzu[1];即使你调用HH(shuzu)改变了数组中的值,也已经没有用了。看起来没有修改数组中的值,实际上已经修改了shuzu中的值。只不过是printf()调用先后顺序不同造成的。
所以你可以修改printf()函数为printf("最高分数是:%f\n最低分数是:%f\n平均分是:%f\n",shuzu[0],shuzu[1],HH(shuzu))。
另外,该函数中存在逻辑错误,我对整个程序进行了修改。
#include <stdio.h>
#include <StdAfx.h>
float HH(float score[])
{
float Max=0,Min=32767,sum=0;
for(int i=0;i<10;i++)
{
sum+=score[i];
if(score[i]>Max)
Max=score[i];
if(Min>score[i])
Min=score[i];
}
score[0]=Max;//这个地方为什么不能改变值?
score[1]=Min;//这个地方?
return sum/10;
}
void main()
{
float shuzu[10];
for(int i=0;i<10;i++)
scanf("%f",&shuzu[i]);
printf("最高分数是:%f\n最低分数是:%f\n平均分是:%f\n",shuzu[0],shuzu[1],HH(shuzu));
}
这样就可以成功运行。
总结:这个错误是非常隐蔽的一个错误。以后用VC6.0时可以单步调试,查看数组中的值是否改变,这样定位错误是非常快的。
自己在消化一下这个printf()的使用方法,如果还是不懂,可以继续问我。祝你好运!
分析一下这C语言个错误?
首先,上面的错误显示,是比较低级的错误,比如格式错误,函数名错了,缺少括号,分号什么的,以及用错变量,具体哪错了,从这里是看不出来的,所以你放源文件才行.
那么下面分析你的源文件.
#include <stdio.h>
int array[3][3]; //全局变量自动初始化为0.
void main ()
{ void convert(int array[][3]); //不要和{这个花括号在同一行输入代码.
int i,j; //所有变量要初始化,这是习惯,防止后面在未初始化前就使用而造成未知错误,比如段错误,那是很隐晦的错误,也许找到你头都大了才发现原来是没初始化就在使用变量.
printf(" 输入数组元素:\n");
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf("%d",&array[i][j]); //这里,反括号和分号居然是全角的.所有符号都必须是半角的英文符号标点!!!!!
printf("\n 数组是:\n");
for(i=0;i<3;i++)
{ fori=0;i<3;j++) //没看到你的for后面少了个正括号吗?另外花括号同一行不要输入代码
rintf(%5d",array[i][j]); //printf 少了个p,编译器当然不认识rintf是什么函数了. 另外 "%5d" 你少了前引号!!
printf("\n");
}
convert(array);
printf("转置数组是:\n");
for (i=0;i<3;i++)
{ for(j=0;j<3;j++) //花括号同一行不要输入代码
printf("%5d",array[i][j]);
printf("\n");
}
}
void convert(int array [][3])
{ int i,j,t; //花括号同一行不要输入代码
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
{ t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
下面呢?没了?断尾?for循环还少个括号呢 convert函数还少个括号呢!
}
}
帮你填上.
最后,我建议你以后出问题,好好把英文看懂,学会自己去理解下错误.很多错误一看英文就知道的,而且你的源代码所有错误全部是格式,语法错误,这是最低级的错误,也是最容易自己解决的错误,虽然也是错误率最高的,对新手来说.