程序改错
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序改错
一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。
(20分)
1.求1⨯2⨯3⨯4⨯ ⨯n
main()
{ long int sum;
int n,i=1;
scanf("%d",n);
printf(“\n”);
while(i<n)
{ sum=sum*i;
i++;
}
printf("sum=%d",sum);
}
1.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)
}
2. 第四行改为: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. 求3+4
int a=3,b=4;
main()
{ int a,c;
c=a+b;
printf(“c=%d”);
}3. 第三行改为:int c;
第五行改为:printf(“c=%d”,c);
4.用一个函数求两个数之和。
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);
}
4. 第一行改为:float sum(float x, float y );
第四行改为:return(z);
第八行:float c;
第十一行:printf("\nSum is %f",c);
5.用指针作函数参数,对输入的两个整数按大小顺序输出。
swap(p1,p2)
int *p1,*p2;
{ int *p;
*p=*p1;*p1=*p2;*p2=*p;
}
main()
{ int a,b;
int *q1,*q2;
scanf("%d,%d",&a,&b);
&q1=a,&q2=b;
if(a<b) swap(*q1,*q2);
printf("\n%d,%d\n",q1,q2);
}5. 第三、四行:{ int t;
t=*p1;*p1=*p2;*p2=t;
第十行:q1=&a,q2=&b;
第十一行:if(a<b) swap(q1,q2);
第十二行:printf("\n%d,%d\n",*q1,*q2);
6.程序读入20个整数,统计非负数个数,并计算非负数之和.
#incl ude “stdio.h”
main()
{
int i, a[20], s , count ;
s=count=1; s=count=0;
for( i=1; i<20; i- -) for(i=0;i<20;i--)
scanf(“%d”, a[i] );scanf(“%d”,&a[i]);
for(i=0;i<20;i++)
{
if(a[i]<0)
break; continue;
s +=a[i];
count++;
}
printf(“s=%f count=%f\n”, s, count);
}
printf(“s=%d count=%d\n”,s,count);
8. 从键盘输入整数x的值,并输出y的值.
main()
{ float x,y; 正确的: int x; float y;
scanf(“%d”,x);
y=3.5+x;
printf(“y=%d”); printf(“y=%f”,y);
}
*27、下面程序实现的功能是求两整数的最小公倍数。
#include "stdio.h"
main( )
{ int m ,n , result1; result
print(“input two integers: \n”);
scaf(“%d%d”, m, n); &m,&n
result=m<n ? n: m ;
while( (result % m !=0 ) || ( result % n = =0) ) != result++;
printf(“The least common multiple of m and n is %d\n”, &result);
result
}
29. 把用户输入的数据累加,直到输入零为止,输出累加的结果。
#include<stdio.h>
main()
{ float sum=0,d;
printf("Enter a serial of numbers ended by 0:\n");
for( ; ; )
{scanf("%f",d); 正确:
if(d=0.0) break; 正确:
sum+=d;
}
printf("sum=%d\n",sum); 正确:
}
29答案:把用户输入的数据累加,直到输入零为止,输出累加的结果
{scanf("%f",d); 正确: scanf("%f",&d if(d=0.0) break; 正确:if(d= =0.0)
printf("sum=%d\n",sum); 正确: printf("sum=%f\n",sum); }。