还剩3页未读,继续阅读
文本内容:
语言改错题常见错误归纳C
一、书写错误l:mian一main见彳列一2:print一print3:includestdio.h^#includestdio.h
二、类型定义错误在主函数中,要注意计算时用到的与定义是否一致1是十进制整数,是实数,是双精度、只是较int floatdouble float更精确见例四在子函数中注意大括号外定义类型与里面的要相同2见例
三三、格式错误常见格式1intT%d,long-%ld,float-%f,doubleT%lf所需输出结果与已定义类型不同,可以利用强制转换2符如定义为但要输出实数可以sum int,float,float sumo见例
一四、固定语句格式错误;;1for2while后面无分号见例五3switch{}j_for,while,switch(足(结构后面有分号)
五、4do{Jwhile do{}while赋值错误未赋初值如求和时一般求阶乘时一般1sum=O,n=1o见例一注意题中赋值是否正确如究竟是赋还是见例2i10
五六、大小关系错误大于号和小于号与所求程序不符见例一1是否携带等号=,=2
七、返回值错误在子函数中,是要返回到主函数的值1return ii在子函数中,返回主函数是执行后的结2return1yes果返回执行后的结果见例二jeturnO no一般在主函数中很少涉及返回值的错误3
八、其他错误、参数未定义程序中出现的任何变量或常量都要1i j=1,定义他们的类型、等号与赋值弄混好==为等号,=为赋值号见例二
2、与搭配未加地址符,也不可加换行符在后3scant\n d%面,scanf d”,i;、行末未加分号,每行后面需要分号
4、子函数中形参为定义好见例六5经典例题例一#include/zstdio.h〃mian/*1主函数名拼写错误,应改为main*/int a
[10],i,k,sum;/*2变量sum应初始化,改为sum=O;也可将变量声明为float并初始化,改为…k;float sum=0;*/printf/z\nPlease enter10numbers/;fori=0;i10;i++;/*3应去掉行末分号*/scanf〃%d〃,a[i];/*4未加地址符,a[i]应改为a[i]*/printf z,\nPlease enter another number k二〃;scanf〃%d〃,k;fori=0;i=k;i++/*5循环条件应改为i〈k*/sum+=a[i];}printf\nsum=%d,z,sum;/*6输出应改为二%f〃,floatsum/k若前述变量定义sum已声明为float,则仅改为..二%f〃,sum/k*//*打印结果*/例二#includestdio.hvoid isSuShuint num/*1函数类型void应改为int或short*/int K二num/2;int i;for i=2;i=K;i++ifnum%i=0/*2等号写错,应改为num%i=0*/return0;return1;void mainintN,K,i,count=0;printf〃请输入一个正整数〃;scanf〃%d”,N;getchar;printf〃请输入每行显示的数的个数:〃;scanf〃断T,K;/*3未加地址符,k应改为k*/getchar;printf〃小于%d的素数如下:\n〃,N;fori=2;iN;i++if isSuShui==0/*4条件表达错,应改为isSuShui=1或isSuShui*/count=0;/*5本句应改为:count++;或count+=l;*/printf〃%d\t〃,i;if count%K=0printf〃\n〃;}例三ttinclude stdio.h intfunint n/*1函数类型错,int应改为double*/double res=l.0;ifn=0/*2等号写错,应改为n=0*/whilenln170;/*3应去掉行末分号*/res*=n——;res=l/res;return res;return
1.0;main;/*4应去掉行末分号*/int n;printfInput N:〃;scanf z,%dzz,n;/*5未加地址符,n应改为n*/printf/z\n%d!=%f\n,z,n,funn;/*6输出格式%£应改为%lf*/例四ttinclude^stdio.h〃main inta
[6],i,k,sum;sum=0;printfXnPlease enter6numbers:;fori=0;i6;i++scanf,z%dz,,a[i];/*1未加地址符,a[i]应改为a[i]*/printf CAnPleaseenteranothernumberk=〃;scanf〃%d〃,k;fori=l;i=k;i++/*2循环初值应改为;0;*//*3循环条件应改为ik;*/sum+=a[i];printf,z\n sum=〃,sum;/*4少了输出格式字符,应改为〃\n sum=%d*/例五ttinclude stdio.h maininti,a
[100]={90,80,70,80,59,53,40,75,80,90},b
[6];for i=0;i6;i++b[i]=0;/*1循环初值应改为i=l;*/fori=0;i10;i++;/*2应去掉行末分号*/if a[i]60a[i]=0;else a[i]=a[i]/10;switch a[i]case0:b[l]++;break;/*3行首或上一行末应加大括号{*/case6:b⑵++;break;case7:b
[3]++;break;case8:b
[4]++;break;case9:b
[5]++;/*4行末应加break;*/default:b
[5]++;printf,zThe resultis:\n〃;for i=l;i6;i++printf〃%d0number is:\n〃,i+4,b[i];/*5少了一个输出格式字符,应改为〃%d……is:%d\n〃*/printf〃\n〃;例六ttdefine stdio.h〃/*1ttdefine应改为ttinclude*/funint a,b/*2形参声明错,应改为funint a,int b*/returna+b;main{/*3一多变量声明错,中间的分号应改为逗号,int x=2;y=5;z=8;r;本行应改为int x=2,y=5,z=8,r;*//*4行末缺少分号*/r=funfunx,y,z/*5输出格式字符错,应改为%d*/printf〃%f\n〃,r;/*6此处圆括号应改为大括号}*/这是我总结的总结的C语言的改错题的一些常见类型希望对大家能够有所帮助,其中也有不少疏漏之处希望大家见谅!。
个人认证
优秀文档
获得点赞 0