for(i=0;i =======(答案1)======= a[i]=a[i+1]; =========或========= a[i]=a[1+i]; =======(答案2)======= b[i/N][i%N]=a[i]; =========或========= b[i/N][i-i/N*N]=a[i]; =======(答案3)======= a[i*M+j]=b[j][i]; =========或========= a[M*i+j]=b[j][i]; =========或========= a[j+i*M]=b[j][i]; =========或========= a[j+M*i]=b[j][i]; 第4题 (30.0分) 题号:579 难度:中 第1章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 题目:void add(char a[],char b[],char c[])函数将由'0','1' 组成的字符串a,b按二进制数加法规则相加,和仍以'0','1' 组成的字符串形式保存到字符串c中。 例如:字符串a为\字符串b为\调用add函数后字符串c 为\。 请改正程序中的错误,使它能得出正确的结果。 --------------------------------------------------------- 注意:不得增行或删行,也不得更改程序的结构。 --------------------------------------------------------*/ #include int i,len; char t; /*******************FOUND*******************/ len=strlen(s-1); for(i=0;i t=s[i]; s[i]=s[len-i-1]; s[len-i-1]=t; } } void add(char a[],char b[],char c[]) { int i,j,k,t,flag; i=strlen(a)-1; j=strlen(b)-1; k=flag=0; while(i>=0||j>=0) { if(i<0) t=b[j]-48+flag; else if(j<0) t=a[i]-48+flag; else t=a[i]-48+b[j]-48+flag; /*******************FOUND*******************/ c[k]=t/2; k++; flag=0; if(t>1) flag=1; i--; j--; } /*******************FOUND*******************/ if(flag==0) c[k++]='1'; c[k]='\\0'; reverse(c); } int main() { char a[50],b[50],c[51]; printf(\ scanf(\ printf(\ scanf(\ add(a,b,c); printf(\ return 0; } 答案: =======(答案1)======= len=strlen(s); =======(答案2)======= c[k]=t%2+48; =========或========= c[k]=48+t%2; =========或========= c[k]=t%2+'0'; =========或========= c[k]='0'+t%2; =======(答案3)======= if(flag) =========或========= if(flag==1) =========或========= if(flag!=0) =========或========= if(t>1) =========或========= if(t>=2) 第5题 (30.0分) 题号:580 难度:中 第1章 /*------------------------------------------------------- 【程序改错】 --------------------------------------------------------- 题目:int find(char a[],char b[],int c[])统计字符串a中出 现字符串b的次数,并将字符串b每次在字符串a中出现的起 始下标依次保存在数组c中。 例如:若字符串a为\ 字符串b为\,字符串b在a中出现2次,起始下标依 次为10,33。若字符串a为\字符串b为 \,字符串b在a中出现3次,起始下标依次为6,7,13。 请改正程序中的错误,使它能得出正确的结果。 --------------------------------------------------------- 注意:不得增行或删行,也不得更改程序的结构。 --------------------------------------------------------*/ #include int find(char a[],char b[],int c[]) { int i,j,n=0; i=0; while(a[i]) { j=0; while(a[i]==b[j]&&a[i]&&b[j]) { i++;j++; } if(b[j]=='\\0') { /*******************FOUND*******************/ c[n]=i; n++; } /*******************FOUND*******************/ i=j; } /*******************FOUND*******************/ return n-1; } int main() { char a[80]=\