C语言程序改错基本题库Word下载.docx
《C语言程序改错基本题库Word下载.docx》由会员分享,可在线阅读,更多相关《C语言程序改错基本题库Word下载.docx(17页珍藏版)》请在冰点文库上搜索。
,&
a,&
b);
c=sum(a,b);
\nSumis%f"
5•用指针作函数参数,对输入的两个整数按大小顺序输出。
s*p1,*p2)
{int*p;
*p=*p1;
*p1=*p2;
*p2=*p;
{inta,b;
int*q1,*q2;
%d,%d"
&
q仁a,&
q2=b;
if(a<
b)swap(*q1,*q2);
\n%d,%d\n"
q1,q2);
前五题答案:
1、sum应初始化即加入sum=1
第四行改为:
scanf(“%d,&
n);
第六行改为:
=n)
第十行改为:
printf("
sum=%ld"
2、第四行改为:
for(j=0;
5;
第五行改为:
scanf(%d"
,&
a[j]);
第七行改为:
第八行改为:
if(max<
第十三行改为:
printf(下标:
%d\n最大值:
%d”,m,max)
3、第三行改为:
printf(c=%d”,c);
4、第一行改为:
floatsum(floatx,floaty);
第四行改为:
return(z);
第八行:
floatc;
第^一行:
c);
5、第2、3行:
{intt;
t=*p1;
*p2=t;
第9行:
q仁&
a,q2=&
b;
第10行:
b)s);
第11行:
printf("
*q1,*q2);
6.程序读入20个整数,统计非负数个数,并计算非负数之与、
#include“stdioh”
{
inti,a[20],s,count;
s=count=1;
for(i=1;
i<
20;
i--)
seanf(“%(:
a[i]);
s=count=0;
for(i=0;
i<
i--)scanf(%d:
a[i]);
i++){
if(a[i]<
0)break;
s+=a[i];
count++;
}printf(“s=%
continue;
n”,s,count);
printf(s=%dcount=%d\n”,s,count);
7、x,y两个数中让x中存较大的数,y存较小的数
#include<
stdio、h>
intx,y=200,z=0;
x=180;
if(x<
y)
z=x;
x=y;
y=z;
{z=x;
x=y;
y=z;
printf(“=%d,y=%d\n"
x,&
y);
printf(x=%d,y=%d\n:
x,y);
}
8、从键盘输入整数x的值,并输出y的值、
{floatx,y;
正确的:
scanf(%d:
&
x);
y=3、5+x;
printf(y=%d”):
9、从1加到100,并输出、
Main()
{inti,sum
i=1;
While(i<
=100)
{sum=sum*i:
i++:
}printf(“%C,sum)
10、求一个4X4矩阵的对角线元素之与
intx;
floaty;
printf(y=%f”,y);
{inta[4][4],sum=O;
inti,j;
printf(Enterdata:
\n”;
for(i=0;
=4;
l++)for(i=0,i<
i++)scanf(%d”&
a[i][j]);
4;
I++)for(j=0:
4:
j++)sum=sum+a[i][j];
printf(§
um=%5d\n”,sum);
12.求1+2+3+4+n的值。
scanf("
d"
printf(\n”;
while(i>
{sum=sumi:
i++;
*13.调用起泡法函数排序
voidsort(inta[],n);
sort(data[10],10);
\ntheresultofsort:
\n"
);
10;
i++)
%d”,data[i]);
15、编程计算下面分段函数,输入x,输出y
{intx,y;
printf(“n”);
scanf(“%d'
x);
if(x<
0)
y=x_1;
elseif(x>
=0llx<
=10)
y=2x-1;
else
y=3x-1:
printf(“y=%d”>
;
16、求100~300间能被3整除的数的与。
{intn;
longsum:
for(n=100;
*=300;
n++)
if(n%3=0)
sum=sum*n;
printf(Id%”,sum);
17、用函数实现两个整数的交换。
s*p1,int*p2)
p=p1:
p1=p2;
p2=p;
printf(nlnputa,b:
”);
scanf(“%d,%d'
s,&
b);
printf(n%d,%d"
a,b);
2位小数。
18、实现华氏温度转换为摄氏温度,公式为:
c=*(f-32),要求输出结果取
{intc,f;
Pleaseenterf:
"
%f"
f);
c=5/9*(f-32);
f=%f,c=%f"
c,f);
19.下面程序的功能就是计算n!
。
{inti,n;
ints;
Pleaseentern:
”);
for(i=1;
=n;
i++);
%d!
=%d"
i,s);
20.编程计算12+32+52+…+92,要求输出中间计算结果。
{inti,sum=0;
=9;
i+2)
sum+=i;
sum=%d"
21、求表达式的值
#include<
math、h>
intfun(intx,inty);
floatf;
seanf(“%d,%d,a,b);
if(ab>
{f=fun(a,b);
printf("
Theresultis:
%d\n"
f)}
elseprintf(“error!
fun(x,y)
{floatresult;
result=sqrt(a+b);
return;
22、通过函数调用,求两个数之差
sub(x,y)
z=x-y;
scanf(“%f,%f”,&
c=sub(a,b);
printf(“\nSubis%f”,sub);
23、求1到100的累加与、
main()
while(i<
{sum=sum*i:
}printf(“%C'
sum)
24、一个小于1000的正整数每位上的数字就是多少。
#include"
stdio、h"
{intn,i,j,k;
Inputanumbern(0<
n<
1000):
scanf("
if(n<
=0||n>
=1000)
{printf("
error"
exit(0);
k=n%10、0;
j=(n%100)/10;
i=n/100;
%s%s%s\n"
i,j,k):
25、输入三角形的三边长,求三角形的面积。
math、h>
{floata,b,c,s,area;
sean("
%d,%d,%d"
a,b,c);
s=1、0/2*(a+b+c);
area=sqrt(s(s-a)(s-b)(s-c));
a=%7、2f,b=%7、2f,c=%7、2f,s=%7、2f\n”,&
b,&
c,&
s):
area=%7、2f\n”,&
area)
26、求与1!
+2!
+3!
+4!
+……+20!
floats=0,t=0;
intn;
for(n=0;
n++)
t=t+n;
s=s*t;
1!
+2!
+3!
++20!
=%d\n"
s);
*27、下面程序实现的功能就是求两整数的最小公倍数。
{intm,n,resultl;
result
print("
inputtwointegers”);
scaf(“Wf'
mn);
&
m,&
n
result=m<
n?
n:
m:
while((result%m!
=0)||(result%n==0))!
=
result++;
printf(“Theleastcommonmultipleofmandnis%d&
result);
result
28.下列程序实现按分数从高到低的顺序输出,划线处存在错误,请予以更正、
#defineARR_SIZE40
voidSort(floatscore[],Iongnum[],intn)
{floatscore[ARR_SIZE];
intn,i;
longnum[ARR_SIZE];
Pleaseentertotalnumber:
seanf("
Pleaseenterthenumberandscore:
'
n"
for(i=0;
n;
{scanf("
%ld%f"
num[i],&
score[i]);
}Sort(score,num,n);
Sortedresults:
for(i=0;
n;
i++)
{printf("
%ld\t%4、0f\n"
num[i],score[i]);
}}voidSort(score,num,n)
{inti,j;
floattempi;
longtemp2;
n-1;
{for(j=i;
j<
=n;
j++)
{if(sco
{tempi=score[j];
score[j]=score[i];
score[i]=tempi;
temp2=num[j];
num[j]=num[i];
num[i]=temp2;
}29.把用户输入的数据累加,直到输入零为止,输出累加的结果。
{inttsum=0,d;
Enteraserialofnumbersendedby0:
{scanf("
d);
if(d=0)break;
sum+=d;
sum=%f\n"
sum):
while(i)
正确:
d==0
sum=%d\n"
sum):
30、求1+2+3+4++n(n<
100)
fun(n);
正确:
{intp,n;
p=intfun(n);
p=%d"
p);
intfun(intm)
{inttotal;
inti=1;
=m)
{total=total+i;
32、求一个3X3矩阵的主对角线元素之与
{inta[3][3];
intsum:
3;
for(j=0,j<
3,j++)
seanf(%f"
=3;
if(i=j)
sum+=a[i][j];
printf(sum=%5d\n”,sum);
33、摄氏温度C=(5/9)(F-32),求华氏温度F=100时对应的摄氏温度
#inelude<
stdoi、h>
voidmain(void)
intcelsius;
fahr;
fahr=100;
celsius=5*(fahr-32)/9;
fahr=d,Celsius=%d\n"
fahr,Celsius);
二、下列程序有逻辑错误,请改正,使之能完成要求的功能
1.输入6个整数,按每行3个数输出这些整数,最后输出6个整数的平均值。
stdio、h>
voidmain()
{inti,a[6],sum=0,n=0;
intav;
a[i]);
{printf("
if(i%3==0)
i!
{sum+=a[i];
av=sum/n;
av=%f\n"
av);
2、输入一系列学生成绩,输入负数为止。
统计不及格的人数,计算平均分。
#defineARR_SIZE80
{intscore[ARR_SIZE];
inti;
intno_pass=0;
floatave;
Pleaseinputthescore:
scanf(%d”&
score[i]);
while(score[i]>
=0)
{if(score[i]<
60)
no_pass++;
ave=ave+score[i];
ave=ave/n;
notpassnum:
%d\n"
no_pass);
theaveis:
%f\n"
ave);