程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。
1.求1⨯2⨯3⨯4⨯ ⨯nmain(){ long int sum;int n,i=1;scanf("%d",n);printf(“\n”);while(i<n){ sum=sum*i;i++;}printf("sum=%d",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)}*3. 求3+4int a=3,b=4;main(){ int a,c;c=a+b;printf(“c=%d”);}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);}5.用指针作函数参数,对输入的两个整数按大小顺序输出。
swap(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);}前五题答案:1.sum应初始化即加入sum=1第四行改为:scanf(“%d”,&n);第六行改为:while(i<=n)第十行改为:printf("sum=%ld",sum);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. 第三行改为:int c;第五行改为:printf(“c=%d”,c);4. 第一行改为:float sum(float x, float y );第四行改为:return(z);第八行:float c;第十一行:printf("\nSum is %f",c);5. 第2、3行:{ int t;t=*p1;*p1=*p2;*p2=t;第9行:q1=&a,q2=&b;第10行:if(a<b) swap(q1,q2);第11行:printf("\n%d,%d\n",*q1,*q2);6.程序读入20个整数,统计非负数个数,并计算非负数之和.#include “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);7. 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); }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);}9. 从1加到100,并输出.Main ( ){int i , sumi=1;While ( i<=100 ){ sum=sum*i;i++ ;}printf ( “%c”, sum )}10、求一个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);}12.求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);}*13.调用起泡法函数排序void sort(int a[], n);{ int i,j,temp,*p;for(i=0; i<n-1; i++)for(j=n-1; j>i; j--)if(data[j]< data[j-1]) {temp=a[j];a[j]= a[j-1];a[j-1]=temp; }main(){ int data[10];*p=data;printf("Please input 10 numbers:\n");for(i=0; i<NUM; i++,p++) scanf("%d", &p);p=&data[0]; sort(data[10],10);printf("\nthe result of sort:\n");for(i=0; i<10; i++)printf("%d ",data[i]);}15. 编程计算下面分段函数, 输入x, 输出y⎪⎩⎪⎨⎧>-≤≤-<-=101131001201x x x x x x ymain(){ 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);}16. 求100~300间能被3整除的数的和。
main(){ int n; long sum;for(n=100;n<=300;n++){ if(n%3=0)sum=sum*n;}printf(“%l d ”,sum);}17. 用函数实现两个整数的交换。
swap(int *p1,int *p2) { int *p;p=p1;p1=p2;p2=p;}main(){ int a,b;printf(“\nInput a,b: ”);scanf(“%d,%d”,&a,&b);swap(&a , &b );printf(“\n%d,%d”,a,b);}18. 实现华氏温度转换为摄氏温度,公式为:c=95*(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);}19.下面程序的功能是计算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);}20.编程计算12+32+52+…+92,要求输出中间计算结果。
main(){ int i , sum=0;for(i=1;i<=9;i+2)sum+=i ;printf("sum = %d",sum);}21. 求表达式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;}22、通过函数调用,求两个数之差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);}23、求1到100的累加和.main ( ){int i , sumi=1;while ( i<=100 ){ sum=sum*i ;i++ ;}printf ( “%c”, sum )}24、一个小于1000的正整数每位上的数字是多少。
#include "stdio.h"main(){ int n,i,j,k;printf("Input a number n(0<n<1000):\n");scanf("%d",n);if(n<=0||n>=1000){printf("error");exit(0);}k=n%10.0;j=(n%100)/10;i=n/100;printf("%s %s %s\n",i,j,k);}25、输入三角形的三边长,求三角形的面积。