【程序改错】功能:将一个字符串中的大写字母转换成小写字母。
例如:输入aSdFG输出为asdfg。 #include
/**********ERROR**********/
bool fun(char *c) {
if(*c<='Z'&&*c>='A')*c-='A'-'a'; /**********ERROR**********/ fun= c; } main() {
/**********ERROR**********/ char s[81],p=s; gets(s); while(*p) {
*p=fun(p);
/**********ERROR**********/
puts(*p); p++; }
putchar('\\n'); }
【1】char fun(char *c) 【2】return *c; 【3】char s[81],*p=s; 【4】putchar(*p);
【程序改错】题目:下列给定程序中,将字符串tt中的小写字符改成大写字母,
其他字符不变。例如:输入\输出 \ED\。
#include
for(i=0;tt[i];i++) {
/***********ERROR***********/ if((tt[i]>='a')||(tt[i]<='z')) /***********ERROR***********/ tt[i]+=32; } } main() {
char tt[81];
printf(\
gets(tt);
/***********ERROR***********/ fun(tt[81]);
printf(\输出变化后的字符串:\ puts(tt); }
参考答案if((tt[i]>='a')&&(tt[i]<='z')) tt[i]-=32; fun(tt);
【程序改错】功能:读入一行英文文本,将其中每个单词的最后一个字母改成
大写,然后输出此文本行 (这里的“单词”是指由空格
隔开的字符串)。 #include \ #include \ #include \ #include \ up1st ( char *p ) {
/**********ERROR**********/ integer k = 0; for ( ; *p; p++ ) if ( k ) {
/**********ERROR**********/ if ( *p = ' ' ) { k = 0;
/**********ERROR**********/
*(p -1 ) = toupper( *( p - 1 ); } }
else if ( *p != ' ' ) k = 1; *( p-1 ) = toupper( *(p-1) ); } main( ) {
char chrstr[81];
printf( \ gets ( chrstr );
printf( \ up1st( chrstr );
printf( \ } 【1】
int k=0;
【2】 if ( *p == ' ' )
【3】 *(p -1 ) = toupper( *( p - 1 ));
【程序改错】功能:输入一行英文文本,将每一个单词的
1
第一个字母变成大 写。 #include
/**********ERROR**********/ do while(*p=='\\0') {
if(k==0&&*p!=' ') {
*p=toupper(*p);
/**********ERROR**********/ k=0; }
else if(*p!=' ') k=1; else k=0;
/**********ERROR**********/ *p+; } } main() {
char str[81];
printf(\ gets(str);
printf(\ puts(str); fun(str);
printf(\ puts(str); }
【参考答案】fun(char *p) while(*p) k=1; p++;
【程序改错】题目:任意输入一个字符,如果是小写字母以大写字母输出,
是大写字母以小写字母输出;否则,按原样输出。 程序中共有4条错误语句,请改正错误。 #include
char ch;
printf(\ /**********ERROR**********/ ch=getchar(r); /**********ERROR**********/ if(ch>=a&&ch<=z) putchar(ch-32); /**********ERROR**********/ else if(ch>=A&&ch<=Z) putchar(ch+32); /**********ERROR**********/ else putchar();
}
【参考答案】ch=getchar(); if(ch>='a'&&ch<='z') else if(ch>=65&&ch<=90) else putchar(ch);
【程序改错】功能:计算正整数num的各位上的数字之积。例如:输入252,则输出应该是20。 #include \ long fun (long num) {
/**********ERROR**********/ long k; do {
k*=num;
/**********ERROR**********/ num\\=10; } while (num); return k; } main() { long n;
printf(\ /**********ERROR**********/
scanf(\ /**********ERROR**********/
printf(\ }
【1】long k=1; 【2】num/=10; 【3】scanf(\ 【4】printf(\ 【程序改错】功能:求1到10的阶乘的和。 #include
2
{ int i; float s=0; float fac(int n);
/**********ERROR**********/ for(i=1;i<10;i++)
/**********ERROR**********/ s=fac(i); printf(\ }
float fac(int n) {
/**********ERROR**********/ int y=1; int i;
for(i=1 ;i<=n;i++) y=y*i;
/**********ERROR**********/ return; }
答案for(i=1;i<=10;i++) s=s+fac(i); float y=1.0; return y;
【程序改错】功能:求1到20的阶乘之和。#include
float s=0.0,t=1.0; for(n=1;n<=20;n++) {
/**********ERROR**********/ s=1;
for(j=1;j<=n;j++)
/**********ERROR**********/ t=t*n;
/**********ERROR**********/ s+t=s; }
/**********ERROR**********/ printf(\ } main() { fun(); 答案:t=1; t=t*j; s=s+t;
printf(\ 【程序改错】功能:实现两个字符串的连接。 #include\ main() {
char s1[80],s2[80];
void scat(char s1[],char s2[]); gets(s1); gets(s2); scat(s1,s2); puts(s1); }
void scat (char s1[],char s2[]) {
int i=0,j=0;
/**********ERROR**********/
while(s1[i]= ='\\0') i++; /**********ERROR**********/
while(s2[j]= ='\\0') {
/**********ERROR**********/
s2[j]=s1[i]; i++; j++; }
/**********ERROR**********/ s2[j]='\\0'; } 【1】
while(s1[i]!='\\0')i++;
【2】 while(s2[j]) 【3】 s1[i]=s2[j]; 【4】 s1[i]='\\0';
【程序改错】题目:比较两个字符串的长度,输出长度大的字符串。 #include \ main() {
char a[80],b[80]; int i,j;
printf(\给字符串a赋值:\\n\ gets(a);
printf(\给字符串b赋值:\\n\ gets(b);
printf(\输出原字符串a:\\n\ puts(a);
printf(\输出原字符串b:\\n\ puts(b);
/***********ERROR***********/ for(i=0;a[i]!='\\0';i++)
3
/***********ERROR***********/ for(j=0;b[j]!='\\0';j++) printf(\ /***********ERROR***********/ if(i 答案for(i=0;a[i]!='0\\';i++); for(j=0;b[j]!='\\0';j++); if(i>j) 【程序改错】功能:生成一个周边元素为5,其它元素为1的3*3的二维数组。 #include \ void fun(int arr[][3]) { /**********ERROR**********/ int i,j /**********ERROR**********/ for(i=1;i<3;i++) for(j=0;j<3;j++) /**********ERROR**********/ if(i==0&&j==0||i==2||j==2) arr[i][j]=5; else arr[i][j]=1; } main() { int a[3][3],i,j; fun(a); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(\ printf(\ } } 【1】 int i,j; 【2】 for(i=0;i<3;i++) 【3】 if(i==0||j==0||i==2||j==2) 【程序改错】功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值 小于等于0.0001。 #include { int i=1; /**********ERROR**********/ int s=0,t=1,p=1; /**********ERROR**********/ while(fabs(t)<=1e-4) { s=s+t; p=-p; i=i+2; t=p/i; } /**********ERROR**********/ printf(\ } main() { fun(); } 答案#include 【程序改错】题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 #include /***********ERROR***********/ int vector[VSIZE] int fun(int list[],int size) { int max,i,j=0; /***********ERROR***********/ max=list[i]; for(i=1;i int i; for(i=0;i if(i%5==0) printf(\ printf(\ 4 } /***********ERROR***********/ i=int fun(vector,VSIZE); printf(\ } 【1】int vector[VSIZE]; 【2】max=list[0]; 【3】if(max 【程序改错】功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。 #include /**********ERROR**********/ int i;k; for(i=m+1;;i++) { for(k=2;k /**********ERROR**********/ if(i%k!=0) break; /**********ERROR**********/ if(k=i) return(i); } } main() { int n; printf(\ scanf(\ printf(\ } 答案int i,k; if(i%k==0) if(k==i) 【程序改错】功能:找出大于m的最小素数,并将其作为函数值返回。 #include \ #include \ int fun( int m) { int i,k; for(i=m+1;;i++) { /**********ERROR**********/ for(k=1;k /**********ERROR**********/ if(i%k!=0) break; /**********ERROR**********/ if(k /**********ERROR**********/ return k; } } void main() { int n; scanf(\ printf(\ } 【程序改错】功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。 max代表最高分,min代表最低分,avg代表平均分。 #include /***********ERROR***********/ float a[8],min,max,avg; printf(\ for(i=0;i<=9;i++) { /***********ERROR***********/ scanf(\ } /***********ERROR***********/ max=min=avg=a[1]; for(i=1;i<=9;i++) { /***********ERROR***********/ if(min avg=avg/10; printf(\ } 答案float a[10],min,max,avg; scanf(\ max=min=avg=a[0]; if (min>a[i]) 【程序改错】功能:给定n个实数,输出平均值,并统计 5