程序改错练习题/*---------------------------------------------------- 【程序改错】第1题------------------------------------------------------ 功能:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
----------------------------------------------------*/ #include <stdio.h>main(){char c;int letters=0,space=0,digit=0,others=0;printf("please input some characters\n");/**********FOUND**********/while((c=getchar())=='\n'){/**********FOUND**********/if(c>='a'&&c<='z'&&c>='A'&&c<='Z')letters++;/**********FOUND**********/else if(c=!' ')space++;else if(c>='0'&&c<='9')digit++;elseothers++;}printf("all in all:char=%d space=%d digit=%dothers=%d\n",letters,space,digit,others);}答案:=======(答案1)=======while((c=getchar())!='\n')=======(答案2)=======if( c>='a'&&c<='z' || c>='A'&&c<='Z' )=========或=========if( c<='z'&&c>='a' || c>='A'&&c<='Z' )=========或=========if( c <= 'z' && c >= 'a' || c >= 'A' && c<='Z' )=======(答案3)=======else if(c==' ')/*---------------------------------------------------- 【程序改错】第2题------------------------------------------------------ 功能:实现交换两个整数的值。
例如:给a和b分别输入3和6 ,输出为a=6 b=3----------------------------------------------------*/ #include <stdio.h>/**********FOUND**********/void fun (int a, b){int t;/**********FOUND**********/ t=a;/**********FOUND**********/a=b;/**********FOUND**********/b=t;}main(){int a,b;printf("enter a,b:");scanf("%d%d",&a,&b);fun(&a,&b);printf("a=%d b=%d\n",a,b);}答案:=======(答案1)=======void fun (int *a,int *b)=========或=========fun (int *a,int *b)=======(答案2)=======t=*a;=======(答案3)=======*a=*b;=======(答案4)=======*b=t;/*---------------------------------------------------- 【程序改错】第3题------------------------------------------------------ 功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
----------------------------------------------------*/ #include <stdio.h>#define N 11main(){int i,number,a[N]={1,2,4,6,8,9,12,15,149,156};printf("please enter an integer to insert in the array:\n");/**********FOUND**********/scanf("%d",&number)printf("The original array:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********FOUND**********/for(i=N-1;i>=0;i--)if(number<=a[i])/**********FOUND**********/a[i]=a[i-1];else{a[i+1]=number;/**********FOUND**********/exit;}if(number<a[0]) a[0]=number;printf("The result array:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}答案:=======(答案1)=======scanf("%d",&number);=======(答案2)=======for(i=N-2;i>=0;i--)=========或=========for(i=N-2;0<=i;i--)=======(答案3)=======a[ i + 1 ]=a[i];=======(答案4)=======break;/*---------------------------------------------------- 【程序改错】第4题------------------------------------------------------ 功能:读取7个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*。
----------------------------------------------------*/ #include <stdio.h>main(){int i,a,n=1;/**********FOUND**********/while(n<7){do{scanf("%d",&a);}/**********FOUND**********/while(a<1&&a>50);/**********FOUND**********/for(i=0;i<=a;i++)printf("*");printf("\n");n++;}}答案:=======(答案1)=======while(n<=7)=========或=========while(n<8)=======(答案2)=======while(a<1||a>50);=========或=========while(a>50||a<1);=======(答案3)=======for(i=1;i<=a;i++)/*---------------------------------------------------- 【程序改错】第5题------------------------------------------------------ 功能:求1到10的阶乘的和。
----------------------------------------------------*/ #include <stdio.h>main(){int i;float s=0;float fac(int n);/**********FOUND**********/for(i=1;i<10;i++)/**********FOUND**********/s=fac(i);printf("%f\n",s);}float fac(int n){/**********FOUND**********/int y=1;int i;for(i=1 ;i<=n;i++)y=y*i;/**********FOUND**********/return;}答案:=======(答案1)=======for(i=1;i<=10;i++)=========或=========for(i=1;10>=i;i++)=========或=========for(i=1;i<11;i++)=========或=========for(i=1;11>i;i++)=======(答案2)=======s= s + fac(i) ;=========或=========s+=fac(i);=========或=========s=fac(i)+s;=======(答案3)=======float y=1.0;=========或=========float y=1;=======(答案4)=======return y;=========或=========return(y);=========或=========return (y);/*---------------------------------------------------- 【程序改错】第6题------------------------------------------------------ 题目:下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。