2015高考C语言题 下载本文

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 #include void reverse(char s[]) {

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 #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]=\