第七次作业——程序改错完成实验教程《C语言程序设计上机指导与习题》中的程序改错题:一、P155——四、程序改错1.从键盘输入两个整数,求出较大数并输出。
main(){ int x,y,max;/**********FOUND(1)**********/printf("%d %d",&x,&y);/**********FOUND(2)**********/if(x>y);max=x;/**********FOUND(3)**********/else(x<=y)/**********FOUND(4)**********/y=max;printf("max=%d\n",max);}2.从键盘输入一个实数,求其绝对值并输出。
main(){/**********FOUND(1)**********/int x,y;/**********FOUND(2)**********/scanf("%f",&x)if(x>=0)/**********FOUND(3)**********/y=-x;else/**********FOUND(4)**********/y=x;printf("y=%f\n",y);}3.从键盘输入x的值,求y的值并输出。
main(){/**********FOUND(1)**********/float x;scanf("%f",&x);/**********FOUND(2)**********/if(x>0);y=1;/**********FOUND(3)**********/else if(x=0)y=0;elsey=-1;/**********FOUND(4)**********/ printf("y=%f\n",x);}二、P166——四、程序改错1.求1+4+7+……+100之和。
main(){int s,i;s=0;/**********FOUND(1)**********/i=0;/**********FOUND(2)**********/while(i<100){s=s+i;/**********FOUND(3)**********/i+=1;}/**********FOUND(4)**********/printf("s=%f\n",s);}2.求1到100之间的奇数之和与偶数之和。
main(){int s1,s2,i;/**********FOUND(1)**********/s1=s2;for(i=1;i<=100;i++){/**********FOUND(2)**********/if(i/2==1)/**********FOUND(3)**********/s1=i; /*奇数之和*//**********FOUND(4)**********/else ifs2=s2+i; /*偶数之和*/}printf("s1=%d,s2=%d\n",s1,s2);}3.用循环程序求10的阶乘。
main(){/**********FOUND(1)**********/int p;int i;/**********FOUND(2)**********/p=0;/**********FOUND(3)**********/for(i=0;i<=10;i++)/**********FOUND(4)**********/p*i;printf("p=%ld\n",p);}4.求1*3*5*...*19之积。
main(){/**********FOUND(1)**********/int p;int i;/**********FOUND(2)**********/p=0;/**********FOUND(3)**********/for(i=1;i<=19;i++)p=p*i;/**********FOUND(4)**********/printf("p=%d\n",p);}5.从键盘输入一个正整数n,求1+2+3+...+n之和并输出。
main(){int i,n;long s;/**********FOUND(1)**********/s=1;/**********FOUND(2)**********/scanf("%d",n);/**********FOUND(3)**********/for(i=1;i<=n;++i)s=s+i;/**********FOUND(4)**********/printf("s=%d\n",s);}三、P171——四、程序改错1.在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
注意:不可以增加或删除程序行,也不可以更改程序的结构。
#define N 11main(){int i,j,t,number,a[N]={21,22,44,46,47,49,112,115,149,156};printf("please enter an integer to insert in the array:\n");scanf("%d",&number);printf("The original array:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");for(i=N-2;i>=0;i--)/**********FOUND(1)**********/ if(number<a[i])/**********FOUND(2)**********/ a[i-1]=a[i];else{/**********FOUND(3)**********/ a[i]=number;/**********FOUND(4)**********/ continue;}if(number<a[0])a[0]=number;printf("The result array:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}2.fun函数的功能是:实现3行3列矩阵的转置,即行列互换。
请改正程序中的错误,使它能得出正确的结果。
fun(int a[3][3],int m,int n){int i,j,t;for(i=0;i<m;i++)for(j=0;j<n;j++)/**********FOUND(1)**********/scanf("%d",a[i][j]);for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}for(i=0;i<m;i++)/**********FOUND(2)**********/for(j=0;j<n;j++){t=a[i][j];a[j][i]=a[i][j];a[j][i]=t;}for(i=0;i<m;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}}main(){/**********FOUND(4)**********/int b[2][2];fun(b,3,3);}3.有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置.main( ){int i,a[10],min,k=0;printf("\n please input array 10 elements\n");for(i=0;i<=10;i++)scanf("%d", &a[i]);for(i=0;i<10;i++)printf("%d",a[i]);min=a[0];for(i=1;i<10;i++)/**********FOUND(2)**********/if(a[i]>min){min=a[i];k=i;}/**********FOUND(3)**********/a[k]=a[i];a[0]=min;printf("\n after eschange:\n");/**********FOUND(4)**********/ for(i=1;i<10;i++)printf("%d",a[i]);printf("\nk=%d\nmin=%d\n",k,min); }4.输入5个字符串,将其中最小的打印出来。
main(){/**********FOUND(1)**********/int str[10],temp[10];int i;/**********FOUND(2)**********/gets(&temp);for(i=0;i<4;i++){gets(str);if(strcmp(temp,str)>0)/**********FOUND(3)**********/strcpy(str,temp);}/**********FOUND(4)**********/printf("\nThe first string is:%s\n",temp[10]);}5.统计一行语句中的单词数。
#include "stdio.h"main(){int i,c,num=0,word=0;char string[81];gets(string);/**********FOUND(1)**********/for(i=0;(c=string[i])=='\0';i++);/**********FOUND(2)**********/if(c=32)word=0;/**********FOUND(3)**********/else if(word=0){/**********FOUND(4)**********/word=0;num++;}printf("there are %d words in the line\n",num);}四、P179——四、程序改错1. 题目:函数fun 的功能是:根据整型形参m 的值,计算如下公式的值。