C语言改错题真题解析(30题)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.改错题(30题)

第一题:

#include

void main()

{

int a,b,c;

/**/ float f; /**/ f为小数类型,具体下方f的输出用%f可看出为float 类型

clrscr();

printf("Please input a b :");

scanf("%d%d",/**/&a,&b/**/);变量a,b必须取地址,除非数组名不取地址,因数组名就是地址

f=/**/ (float)a/b; /**/ a,b均为整数,要获得结果的小数部分必须进行强制类型转换

c=(int)((f-(int)f)*10);

printf("\n%f %d\n",f,c);

getch();

}

第二题:

#include

void find(/**/int m /**/)参数类型必须指出,具体main函数中调用find函数的参数k为int 类型,所以对应的参数m也是int类型

{

int a1,a2;

a1=m%10;求m的个位

a2=m/10;求m的十位

if(m%3==0 &&(/**/ a1==4 || a2==4 /**/))如果m能被3整除且个位或者十位是4 printf("%d\n",m);则输出m

}

void main()

{ int k;

for(k=10;k<=99;k++)k从10到99,一一尝试

/**/ find( k ) /**/;调用函数find,函数的作用是寻找满足条件的数

getch();

}

第三题:

#include

void main()

{

/**/ int a,tag; /**/语法错误c语言的变量区分大小写,程序中用到小写tag,此处改为小写int num1=0,num2=0; num1和num2分别为大于个数和小于个数的计数器,程序开始归零clrscr();

printf("please input numbers :");

scanf("%d",/**/ &a /**/);语法错误变量a需取地址,输入第一个数

tag=a;将第一个数放入tag中

while(a)程序以0结束,循环的条件为:只要不输入0

{ scanf("%d",&a);程序循环输入数字,存入a

/**/ if(!a) /**/ continue;逻辑错误,程序执行的条件,a不为0

else if(a

else if(a>tag) num2++;如果a中数比tag大,计数器num2增加1

}

printf("\n%d %d\n",num1,num2);

getch();

}

第四题:

#include

long int fsum(int n) fsum函数用于求阶乘

{

long int k;

if(n==1)

/**/ k=1 /**/;逻辑错误,1的阶乘为1

else

k=n*fsum(n-1);n的阶乘为n-1的阶乘乘以n

return (/**/ k /**/);逻辑错误,运算结果在k中

}

void main()

{ int i;

long int sum;

sum=0;

for(i=1;i<=9;/**/ i++,i++ /**/)语法错误for语句格式不符

sum+=fsum(i);

printf("sum=%ld\n",sum);

getch();

}

第五题:

#include

void main()

{ int i,a=0;

/**/char c1,c2; /**/ 语法错误c1,c2为字符类型,程序中用getchar()获取

clrscr();

printf("Enter an 8 bit binary number :");

c2=getchar();

/**/ for(i=1;i<=7;i++) /**/语法错误for语句中间为;

{ c1=getchar();

a=a*2+c1-'0';

}

/**/ if (c2=='1') /**/ a=(-1)*a;如果依照题意c2=='1',a是负数

printf("\n%d \n",a);

getch();

}

第六题:

#include

void main( )

{

int i,n;

/**/ n = 0; /**/n为计数器,从0开始

for(i=10;i<=100;i++)判断10-99是否是对称数

if(i/10==i%10) i/10得到十位,i%10得到个位,若相等则是对称数

{printf("%5d",i);输出对称数

n++;计数器增加1

if(/**/ n%9==0 /**/)语法错误表示相等的关系用双等号;

printf("\n");9个数一行输出,换行

}

for(i=100;i<=999;i++)判断100-999是否是对称数

if(/**/ i/100==i%10 /**/) i/100得到百位,i%10得到个位,若相等则是对称数

{printf("%5d",i);

n++;

if(n%9==0)

printf("\n");

}

相关文档
最新文档