计算机二级C上机题库答案分类汇总(可打印版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a与b合并成c
85 填空 STYPE FILE fp
改错for(i=0;i<=sl;i++) t[sl*2]='\0';将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
4152 *c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;
56 填空 *fw str str
改错void fun(long s,long *t) sl=sl*10; 将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
1524 *c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;
22 填空 fp fclose(fp) fname
改错 for(i=j+1;i<n;i++) p=i; 将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
2514 *c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;
33 填空”r” fs ft
改错 if(d%2==0) s/=10; 将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
5142 *c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10;
83 填空 0 x t++
改错 int i,sl; t[i]=s[sl-i-1]; 将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。
1425 *c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;
80 填空 1 s i*10
改错 int fun(int n,int xx[][M])
printf("%d",xx[i][j]); 将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。
4251 *c=(a/10)*1000+(b%10)*100+(a%10)*10+b/10;
64 填空 k N-1 temp
改错 void fun(int (*a)[M],int m)
a[j][k]=(k+1)*(j+1); 将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
5241 *c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10;
19 填空 struct student* a->score[i] a
改错 char* fun(char (*sq)[M]) return sp; 将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。
2415 *c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;
整除
26 填空 q next next
改错 p=j; p=i; 求出1到m之内(含m)能被7或11整除的所有整数放在数组a中。
int i,j=0; *n=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0) {a[j++]=i;(*n)++;}
28 填空 s[i] ’9’ *t=n
改错 t=*x; *x=y; return(t); 求出1到1000之内能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中。
int i,j=0;
for(i=1;i<=1000;i++)
if((i%7==0||i%11==0) && i%77!=0) a[j++]=i;
*n=j;
34 填空 a[i] a[i] 0
改错 y=1; d=a-i; 计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
int i; double s=0.0;
for(i=1;i<=n;i++)
if(i%5==0||i%9==0) s+=1.0/i;
return s;
48 填空’0’ s++ sum
改错 if((k%13==0)||(k%17==0)) } 求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s。
double s=0.0; int i;
for(i=0;i<n;i++)
if(i%3==0 && i%7==0) s=s+i;
return sqrt(s);
字符串
93 填空 next t->data t
改错 void fun(char *a) printf("%c",*a); 比较两个字符串的长度,函数返回较长的字符串。
char *p,*t1=t,*s1=s;int n=0,m=0;
while(*s1++) n++;
while(*t1++) m++;
if(n>=m) p=s;
else p=t;
return p;
35 填空 [N] i i+1
改错 aa[i]=m%k; printf("%d",aa[i-1]); 从传入的num个字符串中找出最长的一个字符串。
int i;max=a[0];
for(i=0;i<num;i++)
if(strlen(max)<strlen(a[i])) max=a[i];return max;
75 填空 i+1 k=j t
改错 void fun(char *str,char ch)
if(*str!=ch)
str[1]='\0'; 字符串中的内容逆置。
char t; int i,n;
n=strlen(s)-1;
for(i=0;i<n;i++) {t=s[i];s[i]=s[n-i-1];s[n-i-1]=t;}
14 填空 double f1 f2
改错 p=h->next; p=p->next; 判断字符串是否为回文。
int i,n=0,flag=1;char *p=str;while(*p++) n++;
for(i=0;i<n/2;i++)
if(str[i]==str[n-1-i]) continue;else {flag=0;break;}
return flag;
16 填空 ss[i] n+j 1
改错 if(*p==' ') *(p-1)=toupper(*(p-1)); 对长度为7个字符的字符串,除首,尾字符外,将其余5个字符按ASCII码降序排列。
char t; int i,j;
for(i=1;i<num-2;i++)
for(j=i+1;j<num-1;j++)
if(s[i]<s[j]) {t=s[i];s[i]=s[j];s[j]=t;}
98 在带有头结点的单向链表中,查找数据域中值为ch的结点,找
到后通过函数值返回该结点在链表中所处的顺序号。
填空 NULL n head,ch
改错 for(i=0,t=0;p[i];i++) c[t]='\0'; 将字符串ss中所有下标为奇数位置上的字母转换为大写。
int i,n=0; char *p=ss;
while(*p++) n++;
for(i=0;i<n;i++)
if(ss[i]>='a'&&ss[i]<='z'&&i%2!=0) ss[i]-=32;
ss[i]='\0';
65 将a所指4*3矩阵中第k行的元素与第0行的元素交换。
填
空 k N a[k][i]
改错 for(i=strlen(t)-1;i;i--)
if(t[j]>t[j+1]) 将字符串ss中所有下标为奇数位置上的字母转换为大写。
int i,n=0; char *p=ss;
while(*p++) n++;
for(i=0;i<n;i++)
if(ss[i]>='a'&&ss[i]<='z'&&i%2!=0) ss[i]-=32;
ss[i]='\0';
10 填空 0 || 1
改错 t-=1.0/i; return t; 删除字符串中的所有空格。
int i=0;char *p=str;
while(*p)
{if(*p!=’’) str[i++]=*p;p++;} str[i]=’\0’;
89 填空 k len ss[i][j]
改错 result*=n--; return result; 从字符串中删除指定的字符。
Int i=0;char *p=s;
while(*p){if(*p!=c) s[i++]=*p;p++;} s[i]=’\0’;
31 填空 t=I I ’\0’删除一个字符串中指定下标的字符。
改错 while(fabs(t)>=num) t=s/n;
Int I,j=0;
for(i=0;i<LEN;i++)
if(i!=n) b[j++]=a[i];b[j]=’\0’;
54 填空 data next head
改错 while(*r) *a=*r;a++;r++; 将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。
Int I,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(i%2!=0) t[j++]=s[i];
t[j]=’\0’;
25 填空 STU std[i].num std[i]
改错 r++; p++; if(*r==’\0’) 将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
Int I,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(s[i]%2!=0) t[j++]=s[i];
t[j]=’\0’;
18 填空 s[i] k ’\0’
改错 while(*w) if(*r==*p) 将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
Int I,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(s[i]%2==0) t[j++]=s[i];
t[j]=’\0’;
71 填空 j k p
改错 while(i<j) if(*a) 将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。
Int I,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(!(i%2==0 && s[i]%2!=0)) t[j++]=s[i];
t[j]=’\0’;
36 填空 *n next head
改错 a=NULL; if(*r==*p) 将s所指字符串中除了下标为偶数,同时ASCII值也为偶数的字符外,其余的全都删除。
Int I,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(i%2==0&&s[i]%2==0) t[j++]=s[i];
t[j]=’\0’;
72 填空 0 i++ 2.0*i
改错 void fun(char *s,char *t) t[2*d]=’\0’; 将s所指字符串中除了下标为奇数,同时ASCII值也为奇数的字符之外,其余的所有字符都删除。
Int I,j=0,n=strlen(s);
for(i=0;i<n;i++)
if(i%2!=0 && s[i]%2!=0) t[j++]=s[i];
t[j]=’\0’;
42 填空 j++ s[i]=t1[i] j
改错for(j=i+1;j<6;j++) *(pstr+i)=*(pstr+j); 求出ss所指字符串中指定字符的个数。
int cnt=0;
char *p=ss;
while(*p){if(*p==c) cnt++;p++; } return cnt;
77 填空010*x n/10
改错*t=0;if(d%2!=0)实现两个字符串的连接void fun(char p1[], char p2[]) { char *p=p1;
while(*p)p++;
while(*p2) *p++=*p2++;
*p=0;
}
68 填空 [N] len *n=len
改错 t+=1.0/i; return t; 统计一个长度为2的字符串在另一个字符串中出现的次数。
int n=0;char *p,*r;
while(*str)
{p=str;r=substr;
while(*r)
if(*r==*p){r++;p++;}
else break;
if(*r==‘\0’) n++;str++;}
return n;
62 填空 1 s[k] c
改错 long s=0,t=0; t=t/10; 统计在字符串中‘a’到‘z’26个字母各自出现的次数,并依次放在pp所指数组中。
int i;
for(i=0;i<26;i++) pp[i]=0;
while(*tt)
{if(*tt>='a'&& *tt<='z') pp[*tt-'a']++;tt++;}
3 填空 filename fp fp
改错 p=(NODE*)malloc(sizeof(NODE));
return h; 统计一行字符串中单词的个数。
int i,n=0;
for(i=0;i<strlen(s);i++)
if(s[i]>=’a’&&s[i]<=’z’&&s[i+1]==’’||s[i+1]=='\0’) n++;return n;
平均分和结构体
40 填空 x p s
改错 long k=1; num/=10; 计算n门课程的平均分。
float aver=0.0; int i;
for(i=0;i<n;i++) aver+=a[i]; aver/=n; return aver;
59 填空 j 0 i++
改错 for(i=2;i<=m;i++) y-=1.0/(i*i); m个人成绩存放在score数组中,将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
int i,k=0,aver=0;
for(i=0;i<m;i++) aver+=score[i]; aver/=m;
for(i=0;i<m;i++)
if(score[i]<aver) below[k++]=score[i];
return k;
44 填空 char ch<=’9’’0’
改错 b[k]=*p; b[k++]=' '; N名学生的成绩已在一个带头节点的链表结构中,求出平均分。
float aver=0.0;
while(h!=NULL) {aver+=h->s;h=h->next;}
return aver/N;
15 填空 fp == fp
改错 n=strlen(aa); ch=aa[i]; N名学生的成绩已放入一个带头节点的链表结构中,h指向链表的头结点,找出学生的最高分。
double max=h->s;
for(h=h->next;h->next!=NULL;h=h->next)
if(h->s>max) max=h->s;
return max;
57 填空 a[i] a[j] a[j]
改错 switch(g) case 1: case 2: return 1; 某学生的记录由学号,8门课程成绩和平均分组成,求出该学生的平均分放在记录的ave成员中。
double av=0.0; int i;
for(i=0;i<N;i++) av+=a->s[i]; av/=N;
a->ave=av;
88 填空 *a 2 i+1
学生的记录由学号和成绩组成,把低于平均分的学生数据放在b所指的数组中。
改错 sum=0.0; if((i+1)%5==0) double aver=0.0; int i,j=0;
for(i=0;i<N;i++) aver+=a[i].s; aver/=N;
for(i=0;i<N;i++)
if(a[i].s<aver) b[j++]=a[i]; *n=j;
return aver;
29 填空 ->sno ->name &t
改错 double fun(double a,double x0)
if(fabs(x1-x0)>0.00001) 学生的记录由学号和成绩组成,把高于等于平均分的学生数据放在b所指的数组中。
int i,j=0; double aver=0.0;
for(i=0;i<N;i++) aver+=a[i].s;aver/=N;
for(i=0;i<N;i++)
if(a[i].s>=aver) b[j++]=a[i]; *n=j;
return aver;
74 填空 std[i].year std[i] n
改错 IsPrime(int n) if(!(n%i)) 已知学生的记录由学号和学习成绩构成,找出成绩最高的学生记录(规定只有一个最高分)。
int i,max=a[0].s;
for(i=0;i<N;i++)
if(a[i].s>max){max=a[i].s;*s=a[i];}
70 填空 0.0 x[i]/N j++
改错 double fun(int m) for(i=100;i<=m;i+=100) 已知学生的记录由学号和学习成绩构成,找出成绩最低的学生记录(规定只有一个最低分)。
int i,min=a[0].s;
for(i=0;i<N;i++)
if(a[i].s<min){min=a[i].s;*s=a[i];}
99 填空 1 i a[p+i]
改错 float k; if(*a<*c) 学生的记录由学号和成绩组成,把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个。
int i,j=0,n=0,max=a[0].s;
for(i=0;i<N;i++)
if(a[i].s>max) max=a[i].s;
for(i=0;i<N;i++)
if(a[i].s==max) {b[j++]=a[i];n++;}
return n;
24 填空 struct student a.score[i]
改错 if(p==n) return -1; a[i]=a[i+1]; 学生的记录由学号和成绩组成,把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个。
int i,j=0,n=0,min=a[0].s;
for(i=0;i<N;i++)
if(a[i].s<min) min=a[i].s;
for(i=0;i<N;i++)
if(a[i].s==min) {b[j++]=a[i];n++;}
return n;
97 填空 n/2 i a[n-1-i]
改错 n=*p-'0'; n=n*8+*p-'0'; 学生的记录由学号和成绩组成,函数返回指定学号的学生数据,若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1。
int i; STREC h;
for(i=0;i<N;i++)
if(strcmp(a[i].num,b)==0) {h=a[i];break;}
else {strcpy(h.num,""); h.s=-1;}
return h;
82 填空 999 t/10 x
改错 void fun(long s,long *t) while(s>0) 学生记录由学号和成绩组成,按分数高低排列学生的记录,高分在前。
int i,j; STREC t;
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(a[i].s<a[j].s) {t=a[i];a[i]=a[j];a[j]=t;}
17 填空 struct student n-1 a[i].name,a[j].name 学生的记录由学号和成绩组成,把指定分数范围内的学生数据放在b所指的数组中,学生人数由函数值返回。
改错 q=p+i; while(q>p) int i,j=0;
for(i=0;i<N;i++)
if(a[i].s>=l&&a[i].s<=h) b[j++]=a[i];
return j;
二维数组
60 填空 *std PERSON std
改错 int k,q,i; pt[i]=str[k][i]; 使数组左下半三角元素中的值全部置成0。
int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++) a[i][j]=0;
8 填空 STU score[i] &std
改错 if(k>0) else if(k==0) 使数组左下三角元素中的值乘以n。
int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++) a[i][j]=a[i][j]*n;
41 填空 *av i x[j]
改错 float fun(int n) for(i=2;i<=n;i++) 使数组右上半三角元素中的值乘以m。
int i,j;
for(j=0;j<N;j++)
for(i=0;i<=j;i++) a[i][j]=a[i][j]*m;
67 填空 N break n
改错 sum=0; scanf("%d",&a[i][j]); 实现矩阵(3行3列)的转置。
int i,j,t;
for(i=0;i<3;i++)
for(j=0;j<=i;j++)
{t=array[j][i];array[j][i]=array[i][j];array[i][j]=t;}
81 填空 && ’\0’ s[j]
改错 for(i=2;i<=m;i++) y+=1.0/(i*i); 实现B=A+A’,即把矩阵A加上矩阵A的转置,存放在矩阵B中。
int i,j,t,at[3][3];
for(i=0;i<=2;i++)
for(j=0;j<=2;j++) at[i][j]=a[j][i];
for(i=0;i<3;i++)
for(j=0;j<3;j++) b[i][j]=a[i][j]+at[i][j];
20 填空 x[i]/N j++ i++
改错 num[k]=0; switch(*s) 求出二维数组周边元素之和。
int i,j,s=0;
for(j=0;j<N;j++) s+=a[0][j]+a[M-1][j];
for(i=1;i<=M-2;i++) s+=a[i][0]+a[i][N-1]; return s;
21 填空 s/N j++ -1
改错 #include <stdio.h> void upfst(char *p) 求出数组周边元素的平均值。
int i,j,k=0;double s=0.0;
for(j=0;j<N;j++) {s+=w[0][j]+w[N-1][j];k+=2;}
for(i=1;i<=N-2;i++) {s+=w[i][0]+w[i][N-1];k+=2;} return s/k;
13 填空 h->next p->next >
改错 p=h->next; p=p->next; 将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中。
int i,j;
for(i=0;i<mm;i++)
for(j=0;j<nn;j++) {b[*n]=s[i][j];(*n)++;}
12 填空 NODE* next r
改错 if(i%2||s[i]%2==0) t[j]='\0'; 将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
int i,j;
for(j = 0 ;j < nn ; j++) for(i= 0 ;i< mm ; i++) { b[*n] =*(*( s+i)+j) ; *n=*n+1; }
2 填空 FILE* fp ch
改错 s[j++]=s[i]; s[j]='\0'; 将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
int i,j,k=0;
for(j=0;j<N;j++)
for(i=0;i<M;i++)b[n++]=s[i][j];b[n]=’\0’;
11 填空 next NULL r
改错 r=t; if(*r==0) 将放在字符串数组中的M个字符串,按顺序合并组成一个新的字符串。
int i,j,k=0;
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
if(a[i][j]) b[k++]=*(*(a+i)+j);
else break;}
b[k]=’\0’;
素数
86 填空 i t++ count
改错 int fun(int a,int b,int c)
else return 1; 计算并输出3到n之间所有素数的平方根之和。
int m,k,i; double s=0.0;
for(m=3;m<=n;m++)
{k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>=k+1) s+=sqrt(m);}
return s;
23 填空 a[0][i] < x,y
改错 void fun(int *x,int *y) t=*x;*x=*y;*y=t; 求出小于或等于lim的所有素数放在aa数组中,返回所求出的素数的个数。
for(j=2;j<i;j++)
if(i%j==0) break;
else continue;
if(j>=i) aa[k++]=i;
55 填空 s -- return 0
改错 double fun(int n) c=a;a+=b;b=c; 将大于整数m且紧靠m 的k个素数存入xx所指的数组中。
int g=0,i,j,flag=1;
for(i=m+1;1;i++)
{for(j=2;j<i;j++)
{if(i%j!=0) flag=1;
else {flag=0;break;}}
if(flag==1&&j>=i)
{if(k>=0){xx[g++]=i;k--;}
else break;} }
79 填空 M < k
改错 if(('a'<=tt[i])&&(tt[i]<='z'))
tt[i]-=32; 将所有大于1小于整数m的非素数存入xx所指数组中。
int i,j,t=0;
for(i=4;i<m;i++)
for(j=2;j<i;j++)
{if(i%j==0){xx[t++]=i;break;}}
*k=t;
公式和数字
49 填空 *s s++ n
改错 int j,c=0; double xa=0.0; if(x[j]>=xa) )!(!!n m n m P -=
int i; float p,t=1.0;
for(i=1;i<=m;i++) t=t*i; p=t;
for(t=1.0,i=1;i<=n;i++) t=t*i; p=p/t;
for(t=1.0,i=1;i<=m-n;i++) t=t*i; p=p/t;
return p;
90 填空 j=2 i j
改错 sum=j=0; if(sum%4==2) )21121()4131()211(n n S n --+⋅⋅⋅+-+-=
int i; double s=0.0;
for(i=1;i<=n;i++) s+=(1.0/(2*i-1)-1.0/(2*i));
return s;
47 填空 *s 1 k[n]
改错 double fun(int k) return s; )1(1321211++⋅⋅⋅+⨯+⨯=n n s
int i; double s=0.0;
for(i=1;i<=n;i++) s+=1.0/(i*(i+1));
return s;
87 填空 n%10 break break
改错 if(t==0) *zero=count; 50321132112111+⋅⋅⋅++++⋅⋅⋅++++++=S
int i; double s=1.0,t=1.0;
for(i=2;i<=n;i++) {t*=i;s+=1.0/t;}
return s;
100 填空 ’\0’ 0 c
改错 double sum=0.0; sum/=c; n S +++++++++++
= 321132112111
int i; float s=1.0,t=1.0;
for(i=2;i<=n;i++) {t+=i;s+=1.0/t;}
return s;
94 填空 1.0 -1.0 t
改错 for(i=1;i<=3;i++) if(k>=0&&k<=6) !1...!41!31!21!111n s n ++++++=
int i; double t=1.0,s=1.0;
for(i=1;i<=n;i++) {t*=i; s+=1.0/t;}
return s;
46 填空 i ps[j] tp
改错 double fun(int n) return sum; !!3!2132n x x x x S n +⋅⋅⋅++++=
int i,j; double s=1.0,p=1.0,t=1.0;
for(i=1;i<=n;i++) {t=t*i;p=p*x;s+=p/t;}
return s;
96 填空 0 j-- j
改错 double f(double x) return s; s=(ln(1)+ln(2)+ln(3)+…+ln(m))0.5。
int i; double s=0.0,log(double x);
for(i=1;i<=m;i++) s+=log((double)i);
return sqrt(s);
84 填空 a a b
改错 c=c+32; c=c+5; S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n 0.5) int i; double s=1.0,p=1.0;
for(i=2;i<=n;i++) {p+=sqrt(i);s+=p;}
return s;
27 填空 0.0 n (t*t)
改错 for(i=0;str[i];i++)
if(substr[k+1]=='\0') )12(975343219753432175332153213112+⨯⨯⨯⨯⨯⨯⨯⨯⨯⨯++⨯⨯⨯⨯⨯⨯+⨯⨯⨯⨯+⨯⨯++=n n π double s=1.0; float t=1,pi=0,n=1.0;
while((fabs(s))>=eps) {pi+=s;t=n/(2*n+1);s*=t;n++;}
return pi*2;
53 填空 x n fabs(t)
改错 for(i=1;i<=y;i++) t=t%1000; +--+-+
+=32!3)25.0)(15.0(5.0!2)15.0(5.05.01x x x S n n x n n !)15.0()25.0)(15.0(5.0+---+
double s1=1.0,p=1.0,s=0.0,s0,t=1.0; int n=1;
do{s0=s1;s+=s0;t*=n;p*=(0.5-n+1)*x;s1=p/t;n++;} while(fabs(s1-s0)>=1e-6);
return s;
92 填空 1.0 1 i
改错 k=i; c=k%10; 计算给定10个数的方差: ∑==101'101k k x x
int i,j; double s=0.0,s1=0.0;
for(i=0;i<10;i++) s1+=x[i]; s1/=10;
for(j=0;j<10;j++) s+=(x[j]-s1)*(x[j]-s1); s/=10; return sqrt(s);
61 填空 && ’A ’ ch
改错 void fun(int *a) a[j]=a[j-1]; 计算给定整数n 的所有因子之和。
int s=0,i;
for(i=2;i<=n-1;i++)
if(n%i==0) s+=i;
return s;
91 填空 x n t
改错 d=1;s=0; d=d/10; 计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。
double s=0.0; int i,j=1;
for(i=0;i<9;i++)
if(j<=8) {s+=sqrt((x[i]+x[i+1])/2.0);j++;}
return s;
63 填空 i++ m m
改错 while((high>=2)&&(n<10)) yes=0;break; 利用简单迭代方法求方程cos(x)-x=0的一个实根。
Xn+1=cos(Xn) float x1=0.0,x0;
do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=1e-6);
return x1;
52 填空 N N-1 0
改错 s=s+(double)(n+1)/n; return t; 求Fibonacci 数列中大于t 的最小的一个数。
int a=1,b=1,c=0,i;
for(i=4;i<=t;i++)
{if(c<t) {c=a+b;a=b;b=c;}
else break;}
return c;
1 填空 10 0 x
改错 if(n==0) result*=n--;
将一个数字字符串转换为一个整数。
long s=0,t ;int i=0,n=strlen(p),k,s1; if(p[0]==’-’) i++;
for(j=i;j<=n-i;j++)
{t=p[j]-’0’;s1=10;
5.01012')(101⎥⎦
⎤⎢⎣⎡-=∑=K K X X S
for(k=j;k<n-i;k++) t*=s1;s+=t;} if(p[0]==’-’) return –s;
else return s;
7 填空 tt tt.score[i] std
改错 m=i; if(a[k]>a[m]) m=k; w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的后n-1位的数。
unsigned t=w,s=0,sl=1,p=0;
while(t>10) {if(t/10) p=t%10;s+=p*sl;sl*=10;t/=10;}
return s;
69 填空’0’ s++ ctod(a)+ctod(b)
改错 void fun(char *s,int *a,int *b)
*a=*a+1;
*b=*b+1; 对变量h中的值保留2位小数,并对第三位进行四舍五入。
int t; float f;
t=(int)h; f=h-t;
if((int)(f*1000)%10>=5) f=((int)(f*100)%100+1)/100.0; else f=((int)(f*100))/100.0;
return t+f;
58 填空 t,s s[i] ’\0’
改错 if(i%k==0) if(k>=i) 求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中。
int i,j=0,k=0,*t=pp;
for(i=1;i<=x;i++)
if(i%2!=0) t[j++]=i;
for(i=0;i<j;i++)
if(x%t[i]==0) pp[k++]=t[i];
*n=k;
※号
38 填空 1 j++ j
改错 t=b; b=a; a=t; return(b);
删除字符串中所有的*号。
int i=0;char *p=a;
while(*p){if(*p!=‘*’) a[i++]=*p;p++;}
a[i]=’\0’;
50 填空 [N] t[i][j] t[j][i]
改错 #define FU(m,n) (m)/(n)
return(value); 将字符串中的前导*号全部删除,中间和尾部的*号不删除。
int i=0;char *p=a;
while(*p&&*p==‘*’) p++;
while(*p) a[i++]=*p++;a[i]=’\0’;
95 填空 sum=0 t[i][i] 1
改错 double r
while(fabs(n-m)>0.001)除了字符串前导和尾部的*号之外,将串中其它*号全部删除int j=0;
char *q=a;
while(*q && q < h) a[j++] = *q++ ;
while(*h && *p && h < p) {
if(*h != '*') a[j++] = *h ;
h++;
}
while(*p) a[j++] = *p++ ;
a[j] =’\0’ ;
43 填空 N i -1
改错 a2=k/10; return i; 将字符串尾部的*号全部删除,前面和中间的*号不删除。
int i=0;char *p,*q;p=q=a;
while(*p) p++;p--;
while(*p==‘*’) p--;
while(q<=p) a[i++]=*q++;a[i]=’\0’;
37 填空 N substr 0
改错 int fun(int x,int y,int z) return j; 只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。
int i=0;char *p;
for(p=a+h;p<a+n-e;p++) a[i++]=*p;a[i]=’\0’;
78 填空 (*t)[N] i=0;i<N s
改错 int fun(int a[],int m) else if(m>a[mid]) 除了尾部的*号之外,将字符串中其他*号全部删除。
int i=0;char *q=a;
while(q<=p) {if(*q!=‘*’) a[i++]=*q;q++;} while(*q) a[i++]=*q++;a[i]=’\0’;
39 填空 N k ss[i]
改错 int k=0; while(*p||*q) 除了字符串前导的*号之外,将串中其他*号全部删除。
int i=0;char *p=a;
while(*p&&*p==‘*’) a[i++]=*p++;
while(*p)
{if(*p!=‘*’) a[i++]=*p;p++;}
a[i]=’\0’;
32 填空 [M] N ’\0’
改错 t=1; return(2*s); 使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
int i=0,k=0;char *t=a;
while(*t==‘*’){k++;t++;}
if(k>n) t=a+k-n;
while(*t) a[i++]=*t++;a[i]=’\0’;
45 填空 a[i]%2 a[j] j
改错 fun(int n) if(n==1)
使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
int i=0,k=0;char *p,*t;p=t=a;
while(*t) t++;t--;
while(*t==‘*’){k++;t--;} t++;
if(k>n){while(*p&&p<t+n) a[i++]=*p++;a[i]=’\0’;}
30 填空 a score[i]
改错 s[j++]=s[i]; s[j]='\0'; 将字符串中的前导*号全部移到字符串的尾部。
int i=0,n=0;char *p=a;
while(*p==’*’){n++;p++;}
while(*p) a[i++]=*p++;
while(n!=0) {a[i++]=’*’;n--;}
a[i]=’\0’;
最值
76 填空 1 2.0*i (-1)
改错 k++; if(m==k) 找出一维整型数组元素中最大的值和它所在的下标。
int i;
*max=a[0];
for(i=0;i<n;i++)
if(a[i]>*max) {*max=a[i];*d=i;}
51 填空 n++ 0 s++
改错 t+=s[k]; *aver=ave; 求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
int i,max=s[0];
for(i=0;i<t;i++)
if(s[i]>max){max=s[i];*k=i;}
73 填空 3.0 > (2*i+1)
改错 double fun (int n) s=s+(double)a/b; 求出—个2×M整型二维数组中最大元素的值。
int i,j,max=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<M;j++)
if(a[i][j]>max) max=a[i][j]; return max;
66 填空 std[0] std[i].age
改错 void fun(int *a,int *b) t=*b;*b=*a;*a=t; tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
int i,j,min;
for(j=0;j<N;j++)
{min=tt[0][j];
for(i=0;i<M;i++)
if(tt[i][j]<min) min=tt[i][j];pp[j]=min;}
特殊
9 填空 p->next q p->next
改错 while(*s!='\0') s++; 移动一维数组中的内容,若数组中有n个整数,要求把下标从0到p的数组元素平移到数组的最后。
int b[]={0,0,0,0,0,0,0,0,0,0},i,j=0;
for(i=0;i<=p;i++) b[i]=w[i];
for(i=p+1;i<n;i++) w[j++]=w[i];
for(i=0;i<=p;i++) w[j++]=b[i];
6 填空 double f1 f2
改错 char* fun(char *s,char *t)
ss++;
tt++; 移动字符串中的内容,把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
char b[N]; int i,j=0;
for(i=0;i<m;i++) b[j++]=w[i];
for(i=0;i<strlen(w)-m;i++) w[i]=w[i+m];
for(j=0;j<m;j++) w[i++]=b[j];
w[i]='\0';
5 填空 FILE* fclose(fp) fp
改错 t=(STU*)calloc(sizeof(STU),m);
t[k]=b[j]; 删去一维数组中所有相同的数,使之只剩一个。
int i,j=0,*p=a,t=p[0];
for(i=0;i<=n;i++)
if(t==p[i]) continue;
else {a[j++]=t;t=p[i];}
if(i>=n) a[j]=t;
return j;
4 填空”rb” > fwrite
改错 p=s; while(*p++); 统计各年龄段的人数。
int i,j;
for(j=0;j<M;j++) b[j]=0;
for(i=0;i<N;i++)
if(a[i]>=0 && a[i]<=99) b[a[i]/10]++; else if(a[i]>=100) b[10]++;。