C语言常见改错
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int K=num/2; int i; for(i=2;i<=K;i++) {
if(num%i=0) /*(2)等号写错,应改为:num%i==0*/ return 0;
} return 1; } void main() { int N,K,i,count=0; printf("请输入一个正整数:"); scanf("%d",&N); getchar(); printf("请输入每行显示的数的个数:"); scanf("%d",K); /*(3)未加地址符, k 应改为&k */ getchar(); printf("小于%d 的素数如下:\n",N); for(i=2;i<N;i++) {
五、赋值错误 1:未赋初值。如求和时一般 sum=0,求阶乘时一般 n=1。
见例一 2:注意题中赋值是否正确。如究竟 i 是赋 1 还是 0。 见
例五 六、大小关系错误
1:大于号和小于号与所求程序不符。见例一 2:是否携带等号 <=,>= 七、返回值错误 1:在子函数中,return (i) i 是要返回到主函数的值。 2:在子函数中,return(1)返回主函数是执行后 yes 的结果,return(0) 返回执行后 no 的结果。见例二 3:一般在主函数中很少涉及返回值的错误 八、其他错误 1、参数未定义:程序中出现的任何变量 i 或常量 j=1,都 要定义他们的类型。 2、等号与赋值弄混好:==为等号,=为赋值号。见例二 3、与 scanf 搭配未加地址符, 也不可加 \n 换行符在 d 后面,scanf(“%d”,&i); 4、行末未加分号,每行后面需要分号。 5、子函数中形参为定义好。见例六
for(i=0;i<6;i++) b[i]=0; /*(1)循环初值应改为:i=1; */
for(i=0;i<10;i++); /*(2)应去掉行末分号*/
{
if (a[i]< 60) a[i]=0;
else a[i]=a[i]/10;
switch(a[i])
case 0: b[1]++; break; /*(3)行首或上一行末应加大括号:{ */
}
main()
{
int x=2;y=5;z=8;r; /*(3)多变量声明错,中间的分号应改为逗号,
本行应改为:int x=2, y=5, z=8, r; */
r=fun(fun(x,y),z) /*(4)行末缺少分号*/
printf("%f\n",r); /*(5)输出格式字符错,%f 应改为%d */
C 语言改错题常见错误归纳
一、书写错误 1:mian→(main)见例一 2:print→(printf) 3:include<stdio.h>→(#include<stdio.h>)
二、类型定义错误 1:在主函数中,要注意计算时用到的与定义是否一致。
(int 是十进制整数,float 是实数,double 是双精度、只是较 float 更精确)见例四
)
/*(6)此处圆括号应改为大括号:} */
这是我总结的总结的 C 语言的改错题的一些常见类型希望对大家能够有所帮助,其中也 有不少疏漏之处希望大家见谅!
}
例四
#include"stdio.h" main() {
int a[6],i,k,sum; sum=0; printf("\nPlease enter 6 numbers:"); for(i=0;i<6;i++) {
scanf("%d",a[i]); /*(1)未加地址符,a[i]应改为&a[i] */ } printf("\nPlease enter another number k="); scanf("%d",&k); for(i=1;i<=k;i++) /*(2)循环初值应改为:i=0;*/ /*(3)循环条件应改为:i<k; */ {
if(isSuShu(i)==0) /*(4)条件表达错,应改为(isSuShu(i)==1)或(isSuShu(i))*/ {
count=0; /*(5)本句应改为:count++;或 count+=1;*/
printf("%d\t",i);
if(count%K==0)
printf("\n");
case 6: b[2]++; break;
case 7: b[3]++; break;
case 8: b[4]++; break;
case 9: b[5]++;
/*(4)行末应加:break; */
default: b[5]++;
}
}
}
printf("The result is: \n");
for (i=1; i<6; i++) printf("%d0 number is: \n ", i+4,b[i]);
2:在子函数中注意大括号外定义类型与里面的要相同。 见例三 三、格式错误
1:常见格式 int→%d,long→%ld,float→%f,double→%lf 2:所需输出结果与已定义类型不同,可以利用强制转 换符。如定义 sum 为 int,但要输出实数 float,可以(float) sum 。见例一 四、固定语句格式错误 1:for( ; ; ); 2:while( ); 3:switch(){ };(for,while,switch 后面无分号) 见例五 4:do{ }while( );(do{ }while 结构后面有分号)
{
sum+=a[i];
}
printf("\nsum= %d",sum); /*(6)输出应改为:"...=%f",(float)sum/k
若前述变量定义 sum 已声明为 float,则仅改为:"...=%f",sum/k */
/*打印结果*/
}
例二:
#include<stdio.h> void isSuShu(int num) /*(1)函数类型 void 应改为 int 或 short */ {
经典例题
例一:
#include"stdio.h"
mian()
/*(1)主函数名拼写错误,应改为:main() */
{
int a[10],i,k,sum; /*(2)变量 sum 应初始化,改为:sum=0;
也可将变量声明为 float 并初始化,改为:…k; float sum=0; */
printf("\nPlease enter 10 numbers:");
sum+=a[i]; } printf("\n sum= ",sum); /*(4)少了输出格式字符,应改为:"\n sum=%d " */ } 例五: #include <stdio.h> main() {
int i,a[100]={90,80, 70,80, 59, 53, 40, 75, 80,90},b[6]; {
}
}
}
例三:
#include <stdio.h>
int fun(int n)
/*(1)函数类型错,int 应改为 double */
{
double res=1.0;
if(n=0)
/*(2)等号写错,应改为:n==0 */
return 1.0;
while(n>1 && n<170);
/*(3)应去掉行末分号*/
/*(5)少了一个输出格式字符,应改为:"%d……is: %d\n " */
printf("\n");
例六
#define "stdio.h" /*(1)#define 应改为:#include */
fun(int a,b) /*(2)形参声明错,应改为:fun(int a,int b) */
{
return(a+b);
for(i=0; i<10; i++); /*(3)应去掉行末分号*/
{
scanf("%d",a[i]); /*(4)未加地址符,a[i]应改为&a[i] */
}
printf("\nPlease enter another number k=");
scanf("%d",&k);
for(i=0; i<=k; i++) /*(5)循环条件应改为:i<k */
res*=n--;
res=1/res;
return res;
}
main();
/*(4)应去掉行末分号*/
{
int n;
printf("Input N:");
scanf("%d",n);
/*(5)未加地址符,n 应改为&n */
printf("\n%d!=%f\n",n,fun(n));பைடு நூலகம்/*(6)输出格式%f 应改为%lf */
if(num%i=0) /*(2)等号写错,应改为:num%i==0*/ return 0;
} return 1; } void main() { int N,K,i,count=0; printf("请输入一个正整数:"); scanf("%d",&N); getchar(); printf("请输入每行显示的数的个数:"); scanf("%d",K); /*(3)未加地址符, k 应改为&k */ getchar(); printf("小于%d 的素数如下:\n",N); for(i=2;i<N;i++) {
五、赋值错误 1:未赋初值。如求和时一般 sum=0,求阶乘时一般 n=1。
见例一 2:注意题中赋值是否正确。如究竟 i 是赋 1 还是 0。 见
例五 六、大小关系错误
1:大于号和小于号与所求程序不符。见例一 2:是否携带等号 <=,>= 七、返回值错误 1:在子函数中,return (i) i 是要返回到主函数的值。 2:在子函数中,return(1)返回主函数是执行后 yes 的结果,return(0) 返回执行后 no 的结果。见例二 3:一般在主函数中很少涉及返回值的错误 八、其他错误 1、参数未定义:程序中出现的任何变量 i 或常量 j=1,都 要定义他们的类型。 2、等号与赋值弄混好:==为等号,=为赋值号。见例二 3、与 scanf 搭配未加地址符, 也不可加 \n 换行符在 d 后面,scanf(“%d”,&i); 4、行末未加分号,每行后面需要分号。 5、子函数中形参为定义好。见例六
for(i=0;i<6;i++) b[i]=0; /*(1)循环初值应改为:i=1; */
for(i=0;i<10;i++); /*(2)应去掉行末分号*/
{
if (a[i]< 60) a[i]=0;
else a[i]=a[i]/10;
switch(a[i])
case 0: b[1]++; break; /*(3)行首或上一行末应加大括号:{ */
}
main()
{
int x=2;y=5;z=8;r; /*(3)多变量声明错,中间的分号应改为逗号,
本行应改为:int x=2, y=5, z=8, r; */
r=fun(fun(x,y),z) /*(4)行末缺少分号*/
printf("%f\n",r); /*(5)输出格式字符错,%f 应改为%d */
C 语言改错题常见错误归纳
一、书写错误 1:mian→(main)见例一 2:print→(printf) 3:include<stdio.h>→(#include<stdio.h>)
二、类型定义错误 1:在主函数中,要注意计算时用到的与定义是否一致。
(int 是十进制整数,float 是实数,double 是双精度、只是较 float 更精确)见例四
)
/*(6)此处圆括号应改为大括号:} */
这是我总结的总结的 C 语言的改错题的一些常见类型希望对大家能够有所帮助,其中也 有不少疏漏之处希望大家见谅!
}
例四
#include"stdio.h" main() {
int a[6],i,k,sum; sum=0; printf("\nPlease enter 6 numbers:"); for(i=0;i<6;i++) {
scanf("%d",a[i]); /*(1)未加地址符,a[i]应改为&a[i] */ } printf("\nPlease enter another number k="); scanf("%d",&k); for(i=1;i<=k;i++) /*(2)循环初值应改为:i=0;*/ /*(3)循环条件应改为:i<k; */ {
if(isSuShu(i)==0) /*(4)条件表达错,应改为(isSuShu(i)==1)或(isSuShu(i))*/ {
count=0; /*(5)本句应改为:count++;或 count+=1;*/
printf("%d\t",i);
if(count%K==0)
printf("\n");
case 6: b[2]++; break;
case 7: b[3]++; break;
case 8: b[4]++; break;
case 9: b[5]++;
/*(4)行末应加:break; */
default: b[5]++;
}
}
}
printf("The result is: \n");
for (i=1; i<6; i++) printf("%d0 number is: \n ", i+4,b[i]);
2:在子函数中注意大括号外定义类型与里面的要相同。 见例三 三、格式错误
1:常见格式 int→%d,long→%ld,float→%f,double→%lf 2:所需输出结果与已定义类型不同,可以利用强制转 换符。如定义 sum 为 int,但要输出实数 float,可以(float) sum 。见例一 四、固定语句格式错误 1:for( ; ; ); 2:while( ); 3:switch(){ };(for,while,switch 后面无分号) 见例五 4:do{ }while( );(do{ }while 结构后面有分号)
{
sum+=a[i];
}
printf("\nsum= %d",sum); /*(6)输出应改为:"...=%f",(float)sum/k
若前述变量定义 sum 已声明为 float,则仅改为:"...=%f",sum/k */
/*打印结果*/
}
例二:
#include<stdio.h> void isSuShu(int num) /*(1)函数类型 void 应改为 int 或 short */ {
经典例题
例一:
#include"stdio.h"
mian()
/*(1)主函数名拼写错误,应改为:main() */
{
int a[10],i,k,sum; /*(2)变量 sum 应初始化,改为:sum=0;
也可将变量声明为 float 并初始化,改为:…k; float sum=0; */
printf("\nPlease enter 10 numbers:");
sum+=a[i]; } printf("\n sum= ",sum); /*(4)少了输出格式字符,应改为:"\n sum=%d " */ } 例五: #include <stdio.h> main() {
int i,a[100]={90,80, 70,80, 59, 53, 40, 75, 80,90},b[6]; {
}
}
}
例三:
#include <stdio.h>
int fun(int n)
/*(1)函数类型错,int 应改为 double */
{
double res=1.0;
if(n=0)
/*(2)等号写错,应改为:n==0 */
return 1.0;
while(n>1 && n<170);
/*(3)应去掉行末分号*/
/*(5)少了一个输出格式字符,应改为:"%d……is: %d\n " */
printf("\n");
例六
#define "stdio.h" /*(1)#define 应改为:#include */
fun(int a,b) /*(2)形参声明错,应改为:fun(int a,int b) */
{
return(a+b);
for(i=0; i<10; i++); /*(3)应去掉行末分号*/
{
scanf("%d",a[i]); /*(4)未加地址符,a[i]应改为&a[i] */
}
printf("\nPlease enter another number k=");
scanf("%d",&k);
for(i=0; i<=k; i++) /*(5)循环条件应改为:i<k */
res*=n--;
res=1/res;
return res;
}
main();
/*(4)应去掉行末分号*/
{
int n;
printf("Input N:");
scanf("%d",n);
/*(5)未加地址符,n 应改为&n */
printf("\n%d!=%f\n",n,fun(n));பைடு நூலகம்/*(6)输出格式%f 应改为%lf */