一、 程序改错
一、 下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。
1.求1234n
main()
{ long int sum;
int n,i=1;
scanf("%d",n);
printf(“\n”);
while(i<n)
{ sum=sum*i;
i ;
}
printf("sum=%d",sum);
}
sum应初始化 即加入sum=1
第四行改为:scanf(“%d”,&n);
第六行改为:while(i<=n)
第十行改为:printf("sum=%ld",sum);
2.求一个数组中最大值及其下标。
main( )
{ int max,j,m;
int a[5];
for(j=1;j<=5;j )
scanf(“%d”,a);
max=a[0];
for(j=1;j<=5;j )
if(max>a[j])
{ max=a[j];
m=j;
}
printf(“下标:%d\n最大值:%d”, j, max)
}
第四行改为:for(j=0;j<5;j )
第五行改为:scanf(“%d”,&a[j]);
第七行改为:for(j=0;j<5;j )
第八行改为:if(max<a[j])
第十三行改为:printf(“下标:%d\n最大值:%d”, m,max)
3.用一个函数求两个数之和。
sum(x,y)
{ float z;
z=x y;
return;
}
main()
{ float a,b;
int c;
scanf("%f,%f",&a,&b);
c=sum(a,b);
printf("\nSum is %f",sum);
}
第一行改为:float sum(float x, float y );
第四行改为:return(z);
第八行:float c;
第十一行:printf("\nSum is %f",c);
4. 程序读入20个整数,统计非负数个数,并计算非负数之和.
#include “stdio.h”
main()
{
int i, s , count ,n=20;
int a[n];
s=count=1;
for( i=1, i<20, i- -)
scanf(“%d”, a[i] );
for(i=0;i<20;i )
{
if(a[i]<0)
break;
s =a[i];
count ;
}
printf(“s=%f count=%f\n”, s, count);
}
printf(“s=%d count=%d\n”,s,count);
答案:int a[20]
s=count=0;
for(i=0;i<20;i--)
scanf(“%d”,&a[i]);
continue;
5. 从键盘输入整数x的值,并输出y的值.
main()
{ float x,y;
scanf(“%d”,&x);
y=3.5 x;
printf(“y=%d”);
}
正确的: int x; float y;
printf(“y=%f”,y);
6 编程计算下面分段函数, 输入x, 输出y
main()
{ int x,y;
printf(“\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);
}
7. 求100~300间能被3整除的数的和。
main()
{ int n;
long sum;
for(n=100,n<=300,n )
{
if(n%3=0)
sum=sum*n;
}
printf(“%ld ”,sum);
}
8. 求表达式的值
#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){
fun(a,b);
printf("The result is:%d\n", &f)
}
else printf(“error!”);}
fun(x, y)
{ float result;
result = sqrt(a b);
return;
}
9、通过函数调用,求两个数之差
sub(x,y)
{ float z;
z=x-y;
return;
}
main()
{ float a,b;
int c;
scanf(“%f,%f”,&a,&b);
sub(a,b);
printf(“\nSub is %f”,sub);
}