哪位C罒肖高手代码仙帮忙查代码错误

哪位高手帮忙看一下这个C语言程序代码有什么错误!_百度知道
哪位高手帮忙看一下这个C语言程序代码有什么错误!
#include &stdio.h&#include &string.h&struct student{ char name[20]; float grade[3];}stu[50];static int m=0;input(){ struct student *p;
for(i=1,p=i&50;i++,p++)
{ printf(&Number%d:&,i);
scanf(&%d&,&p-&number);
if(p-&number==0)
printf(&\nName:&);
scanf(&%s&,p-&name);
printf(&\nChinese:&);
scanf(&%d&,p-&grade[0]);
printf(&\nMaths:&);
scanf(&%d&,p-&grade[1]);
printf(&\nEnglish:&);
scanf(&%d&,p-&grade[2]);
m=i;}void average(){ struct student *q=
for(i=0;i&=m;q++) q-&average=(q-&grade[0]+q-&grade[1]+q-&grade[2])/3;}void output(){ struct student *q=
for(i=1;i&=m;i++,q++) {printf(&Number%d\tName\tChinese\tMaths\tEnglish\tAverage\n&,i);
printf(&%d\t%s\n&,q-&number,q-&name);
for(n=0;n&3;n++)
printf(&%f\t&,q-&grade[n]);
printf(&%f\n&,q-&average);
}}main(){ input();
average();
output();}输入多个学生的学号、姓名、3门课成绩,求其平均值,然后输出。我在输入时没出现问题,但运行结果却是:Floating point error:Domain.Null pointer assignment
提问者采纳
#include &stdio.h&#include &string.h&struct student{ char name[20]; float grade[3];}stu[50];static int m=0;void input()
// 这里我加了个void类型{ struct student *p;
for(i=1,p=i&50;i++,p++)
{ printf(&Number%d:&,i);
scanf(&%d&,&p-&number);
if(p-&number==0)
printf(&\nName:&);
scanf(&%s&,p-&name);
printf(&\nChinese:&);
scanf(&%f&,&p-&grade[0]); //%d改为%f
还有加了个&
printf(&\nMaths:&);
scanf(&%f&,&p-&grade[1]); //同上
printf(&\nEnglish:&);
scanf(&%f&,&p-&grade[2]); //同上
// 将原来的i 改为i-1 因为最后的i没有输入数据}void average(){ struct student *q=
for(i=0;i&=m;i++,q++) //你粗心少些了,i++ q-&average=(q-&grade[0]+q-&grade[1]+q-&grade[2])/3;}void output(){ struct student *q=
for(i=1;i&=m;i++,q++) {printf(&Number%d\tName\tChinese\tMaths\tEnglish\tAverage\n&,i);
printf(&%d\t%s\n&,q-&number,q-&name);
for(n=0;n&3;n++)
printf(&%.2f\t&,q-&grade[n]); // 为了美观 使其精确到小数点后两位
printf(&%.2f\n&,q-&average); //
average();
//我加了这个 更标准化}//以上的代码通过了测试 运行和结果输出都成功了
其他类似问题
为您推荐:
其他2条回答
struct student{ char name[20]; float grade[3];}stu[50];static int m=0;input(){ struct student *p;
for(i=1,p=i&50;i++,p++)
{ printf(&Number%d:&,i);
scanf(&%d&,&p-&number);错误!类型不一致!应是%ld
if(p-&number==0)
printf(&\nName:&);
scanf(&%s&,p-&name);
printf(&\nChinese:&);
scanf(&%d&,p-&grade[0]); 错误!你的类型定义是float,这里却是%d 另外 p-&grade[0] 改成 &p-&grade[0] 下同。
printf(&\nMaths:&);
scanf(&%d&,p-&grade[1]);错误!
printf(&\nEnglish:&);
scanf(&%d&,p-&grade[2]);错误!
scanf语句写错了,应该是
scanf(&%d&,&p-&grade[0]);
scanf(&%d&,&p-&grade[1]);
scanf(&%d&,&p-&grade[2]);
c语言程序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁肿瘤检测 C语言。哪位大神帮忙看看我的代码错在哪了,为啥输不出结果呢_百度知道
肿瘤检测 C语言。哪位大神帮忙看看我的代码错在哪了,为啥输不出结果呢
#include&stdio.h&int main(){int a[100][100];int N;int b,c;int i,j;b=0;c=0;scanf(&%d&,&N);for(i=0;i&N;i++){for(j=0;j&N;j++){scanf(&%d &,&a[i][j]);}}for(i=0;i&N;i++){for(j=0;j&N;j++){if(a[i][j]&=50){b=b+1;if(a[i][j-1]&50||a[i][j+1]&50||a[i-1][j]&50||a[i+1][j]&50){c=c+1;}}}}printf(&%d %d &,b ,c );return 0;}
一张CT扫描的灰度图像可以用一个N*N(0 & N & 100)的矩阵描述,矩阵上的每个点对应一个灰度值(整数),其取值范围是0-255。我们假设给定的图像中有且只有一个肿瘤。在图上监测肿瘤的方法如下:如果某个点对应的灰度值小于等于50,则这个点在肿瘤上,否则不在肿瘤上。我们把在肿瘤上的点的数目加起来,就得到了肿瘤在图上的面积。任何在肿瘤上的点,如果它是图像的边界或者它的上下左右四个相邻点中至少有一个是非肿瘤上的点,则该点称为肿瘤的边界点。肿瘤的边界点的个数称为肿瘤的周长。现在给定一个图像,要求计算其中的肿瘤的面积和周长。
输入第一行包含一个正整数N(0 & N & 100),表示图像的大小;接下来N行,每行包含图像的一行。图像的一行用N个整数表示(所有整数大于等于0,小于等于255),两个整数之间用一个空格隔开。
输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。
提问者采纳
for(i=1;i&N-1;i++){for(j=1;j&N-1;j++){if(a[i][j]&=50){b=b+1;if(a[i][j-1]&50||a[i][j+1]&50||a[i-1][j]&50||a[i+1][j]&50){c=c+1;}}}}输入图像的边界点是你这个程序中是没有办法处理的,所以如果要使程序正常运行得这样操作,限制处理点的范围。或者你自己扩展数组,比如定义的时候a[102][102], 进行输入的时候是从第二行第二列开始,这样的话你就能处理到所有边界上的点。
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
其他类似问题
为您推荐:
其他2条回答
把char当做一字节整型用,节省空间懂不懂,记住一切皆是数据;for循环里的输入scanf最好不要在%d后加“空格”把空格去了,已调过可以运行,要不然每次输入后面必须接一个空格,才不会影响,你还是学着用fget()吧还有打印都加个“\n”,养成好习惯
可以输出的吧
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁一段C语言程序代码,没查出错误,但就是输入后运行不出结果……求高手、大神查错……_百度知道
一段C语言程序代码,没查出错误,但就是输入后运行不出结果……求高手、大神查错……
#include&stdio.h&#include&math.h&float f(float x){return(((x-5.0)*x+16.0)*x-80.0);}float L(float a,float b){return((a*f(b)-b*f(a))/(f(b)-f(a)));}main(){float a,b,c;float e=10^-6;printf(&Please input two numbers to start the program...\n&);scanf(&%f%f&,&a,&b);while(f(a)*f(b)&0){printf(&Unideal numbers,please input two numbers again...\n&);scanf(&%f%f&,&a,&b);}do{c=L(a,b);if(f(c)*f(a)&=0){a=c;}else{b=c;}}while(fabs(f(c))&e);printf(&The ideal answer is %f.\nThe distance is %f.\n&,c,f(c));printf(&Press anykey for end.\n&);getch();}
提问者采纳
你那个e是什么啊?e=10^-6还有弱弱的问一下fabs是什么函数?没用过。。。
e只是一个浮点数,我后面用来作对比判断循环是否终止的……fabs()是浮点数取绝对值的函数……在开始的#include&math.h&里已经包含了……
关键是你最后循环有没有终止。。。。vs2010运行后它并没有跳出循环。。。那个do{}while();没跳出去当然没有结果。。。不知道你的程序要干嘛。。
提问者评价
多谢了!~~~找出错误了…我忘了浮点数的精度了…e太小了永远达不到…变成死循环了…还是多谢了~~~
其他类似问题
为您推荐:
c语言程序的相关知识
其他1条回答
#include&stdio.h&#include&math.h&float&f(float&x){return&(((x-5.0)*x+16.0)*x-80.0);}float&L(float&a,float&b){return&((a*f(b)-b*f(a))/(f(b)-f(a)));}main(){float&a,b,c;float&e=10^-6;printf(&Please&input&two&numbers&to&start&the&program...\n&);scanf(&%f&%f&,&a,&b);while(f(a)*f(b)&0){printf(&Unideal&numbers,please&input&two&numbers&again...\n&);scanf(&%f%f&,&a,&b);}do{c=L(a,b);if(f(c)*f(a)&=0){a=c;}else{b=c;}}while(fabs(f(c))&e);//问题所在,这里fabs(f(c))肯定永远大于e,&//你的e是-16,&正数永远大于负数,这是个死循环printf(&The&ideal&answer&is&%f.\nThe&distance&is&%f.\n&,c,f(c));printf(&Press&anykey&for&end.\n&);getch();return&0;}
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁哪位高手告诉我,我的C程序错误出现在哪里?_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:169,739贴子:
哪位高手告诉我,我的C程序错误出现在哪里?收藏
我应该改哪里? #include&iostream&class complex{public:complex(double r=0.0,double i=0.0){real=r;imag=i;}complex operator&&(complex c2);complex operator&&(complex c3);void display();private:};complex complex::operator&&(complex c2){return complex(real&&c2.real,imag&&c2.imag);}complex complex::operator&&(complex c3){return complex(real&&c3.real,imag&&c3.imag);}void complex::display(){cout&&"("&&real&&","&&imag&&")"&&}int main(){complex c1(2,5),c2(1,3),c3;cin&&"c1=";c1.display();cout&&"c2=";c3.display();cout&&"c3=c1+c2=";c3.display();}
错误提示:2.cppc:\documents and settings\administrator\2.cpp(16) : error C2296: '&&' : illegal, left operand has type 'double'c:\documents and settings\administrator\2.cpp(16) : error C2297: '&&' : illegal, right operand has type 'double'c:\documents and settings\administrator\2.cpp(16) : error C2296: '&&' : illegal, left operand has type 'double'c:\documents and settings\administrator\2.cpp(16) : error C2297: '&&' : illegal, right operand has type 'double'c:\documents and settings\administrator\2.cpp(20) : error C2296: '&&' : illegal, left operand has type 'double'c:\documents and settings\administrator\2.cpp(20) : error C2297: '&&' : illegal, right operand has type 'double'c:\documents and settings\administrator\2.cpp(20) : error C2296: '&&' : illegal, left operand has type 'double'c:\documents and settings\administrator\2.cpp(20) : error C2297: '&&' : illegal, right operand has type 'double'c:\documents and settings\administrator\2.cpp(33) : warning C4508: 'main' : function s 'void' return type assumedError executing cl.exe.2.obj - 8 error(s), 1 warning(s)
&&和&&这两个运算符你想让他有什么作用。。
快试试吧,可以对自己使用挽尊卡咯~◆◆
回复:2楼运算符的作用。。
你的重载是要做什么?有错误,&& &&右操作数只能是整数型最后一个警告是说main函数没有返回值,加个return 0;在结尾就行了
具体一点 运算符里面return complex(real&&c2.real,imag&&c2.imag);这句话你是想要干啥 不然不能从根源上解决问题
回复:4楼如果把它换成整形数据,那我程序基本都是错的咯?
不知道这个重载的目的是什么
回复:7楼其实我不怎么懂程序,是作业,这个程序,我自己都不怎么看得懂。 《和》,一个是插入符,一个是提取符。。。 老师说用运算符《和》输入和输出复数。
回复:5楼其实我不怎么懂程序,是作业,这个程序,我自己都不怎么看得懂。《和》,一个是插入符,一个是提取符。。。老师说用运算符《和》输入和输出复数。
参考这里的&&和&&
回复:10楼谢谢,我又重写了一个程序。。。写好了。
你的运算符要放在类外面。。不要放在类里面
而且你的返回值也不正确!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 江门市哪位副市长被查 的文章

 

随机推荐