程序改错练习题
下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。
1.求1⨯2⨯3⨯4⨯ ⨯n
main()
{ int sum; 正确:int sum=1;
int n,i=1;
scanf("%d",n); scanf(“%d”,&n);
printf(“\n”);
while(i<n) while(i<=n)
{ sum=sum*i;
i++; }
printf("sum=%c",sum); printf("sum=%d",sum);
}
2.求一个数组中最大值及其下标。
main( )
{ int max,j,m;
int a[5];
for(j=1;j<=5;j++) 正确:for(j=0;j<5;j++)
scanf(“%d”,a); scanf(“%d”,&a[j]);
max=a[0];
for(j=1;j<=5;j++) for(j=0;j<5;j++)
if(max>a[j]) if(max<a[j])
{ max=a[j];
m=j;
}
printf(“下标:%d\n最大值:%d”, j, max) printf(“下标:%d\n最大值:%d”, m,max);
}
3.用一个函数求两个数之和。
sum(x,y) 正确:float sum(float x, float y )
{ float z;
z=x+y;
return ; return z;
}
main()
{ float a,b;
int c; float c;
scanf("%f,%f",&a,&b);
c=sum(a,b);
printf("\nSum is %f",sum); printf("\nSum is %f",c);
}
4. x , y两个数中,让x中存较大的数,y存较小的数
#include<stdio.h>
main( ){
int x , y=200 , z=0;
x=180;
if ( x<y)
z=x; x=y; y=z; 正确:{ z=x;x=y;y=z;}
printf(“x=%d,y=%d\n”,&x,&y); printf(“x=%d,y=%d\n”,x,y);
}
5.用指针作函数参数,对输入的两个整数按大小顺序输出。
swap(int *p1,*p2)
{ int *p; 正确:int t;
*p=*p1;*p1=*p2;*p2=*p; t=*p1;*p1=*p2;*p2=t;
}
main()
{ int a,b;
int *q1,*q2;
scanf("%d,%d",&a,&b);
&q1=a,&q2=b; q1=&a,q2=&b;
if(a<b) swap(*q1,*q2); if(a<b) swap(q1,q2);
printf("\n%d,%d\n",q1,q2); printf("\n%d,%d\n",*q1,*q2); }
6. 求100~300间能被3整除的数的和。
main()
{ int n;
sum;
for(n=100;n<=300;n++) { if(n%3=0)
sum=sum*n;
}
printf(“%l d ”,sum);
}
7. 实现华氏温度转换为摄氏温度,公式为:c=
9
5*(f-32),要求输出结果取2位小数。
main() { int c,f ;
printf("Please enter f:");
scanf("%f", &f);
c=5/9*(f-32);
printf("f=%f,c=%f",c ,f);
}
8.下面程序的功能是计算n!。
main()
{ int i ,n ;
int s ;
printf("Please enter n:");
scanf("%d", n);
for(i=1;i<=n ;i++) ; s=*i ;
printf("%d! = %d",i ,s);}
9、求一个4×4矩阵的对角线元素之和
main( )
{int a[4][4], sum=0;
int i,j;
printf(“Enter data:\n ”);
for(i=0;i<=4;I++)
for(j=0,j<=4;j++)
scanf(“%d ”,&a[i][j]);
for(i=0;i<4;I++)
for(j=0;j<4;j++)
sum=sum+a[i][j];
printf(“sum=%5d\n ”,sum);
}
10. 编程计算下面分段函数, 输入x, 输出y
⎪⎩⎪⎨⎧>-≤≤-<-=10
1131001201x x x x x x y
main() { int x,y;
p rintf(“\n Input x:\n”);
scanf(“%d”, x);
if(x<0)
y=x-1; else if(x>=0||x<=10)
y=2x-1;
else y=3x-1;
printf(“y=%d”,&y);
}
11. 求表达式ab c =的值
#include <stdio.h>
#include <math.h>
int fun(int x, int y);
main()
{ int a,b; float f;
scanf(“%d,%d ”,a,b); if(ab>0)
{ f = fun(a,b); printf("The result is:%d\n", &f)
} else printf(“error!”);} fun(x, y)
{ float result;
result = sqrt(a+b);
return;
}
12、通过函数调用,求两个数之差
sub(x,y)
{ float z;
z=x-y;
return;
}
main()
{ float a,b;
int c;
scanf(“%f,%f”,&a,&b);
c=sub(a,b);
printf(“\nSub is %f”,sub);
}
13、输入三角形的三边长,求三角形的面积。
#include <math.h>
main( )
{float a,b,c,s,area;
scan("%d,%d,%d",a,b,c);
s=1.0/2*(a+b+c);
area=sqrt(s(s-a)(s-b)(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",&a,&b,&c,&s);
printf("area=%7.2f\n",&area)
}
14、求和1!+2!+3!+4!+……+20!。
main( )
{
float s=0,t=0;
int n;
for(n=0;n<20;n++)
{
t=t+n;
s=s*t;
}
printf("1!+2!+3!+4!+……+20!=%d\n",s);
}
15. 求一个3×3矩阵的主对角线元素之和
main( )
{ int a[3][3];
int sum;
int i,j;
printf(“Enter data:\n”);
for(i=0;i<3;i++)
for(j=0,j<3,j++)
scanf(“%f”,&a[i][j]);
for(i=0;i<3;i++)
for(j=0,j<=3;j++)
if (i=j)
sum +=a[i][j];
printf(“sum=%5d\n”,sum);
}。