全国计算机二级C语言上机考试100题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.编写函数fun,如,a=45,b=12时,调用该函数后,c=415
2.
*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10)
填空:1.STYPE 2.FILE 3.fp 改错:1.for(i=0;i<=s1;i++) 2.t[s1]=’\0’改为t[2*s1]=’\0’
.编写函数fun,如,a=45,b=12,调用后,c=1524.
*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);
填空:1,*fw 2.str 3.str 改错1.void fun (long s, long *t
3>合并整a,b;a的十位和个位放在c的个位和百位上,
b的十位和各位在c的十位和千位
*c=(b%10)*1000+(a%10)*100+(b%10)*10+a/10;
填空 1>ft 2>fclose 3>fname
改错 1>for(i=j+i;i<n;i++) 2>p=i
4>合并整a,b;a的十位和位个放在c的十位和千位上,
b的十位和个位在c的十位百和个位
*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);
填空1>"r" 2>fs 3>ft
改错1>if(d%2==0) 2>s/=10;
5>计算n门课程的均分,返回结果
int i;
float ave=0.0;
for(i=0;i<n;i++) ave+=a[i]; ave=ave/n;
return ave;
填空1>x 2>p 3>s 改错1>long k=1; 2>num/=10;
6>比较两个字符串,返回长的,相等返回前者
int i; char *p=s,*q=t; int n=0,m=0;
while(*p) {n++; p++;} while(*q)
{m++; q++;} if(n>=m) p=s; else p=t;
return p;
7>求到能被7或11整除的整数,通过n返回个数
int i,j=0;*n=0; for(i=1;i<=m;i++)
if(i%7==0||i%11==0) {a[j]=i; j++;}
*n=j; 填空1>q 2>nex 3>next改错1>p=j; 2>p=i;
8>将ss所指字符串中下标为奇数的字母换为大写
int i; for(i=1;i<strlen(ss);i+=2)
{if(ss[i]>='a'&&ss[i]<='z')ss[i]-=32];}
填空1>0或NULL 2>n 3>head,ch
改错1>for(i=0,t=0;p[i];i++) 2>c[t]='\0';
9>保留下标和ASCII值为偶数的字符,其余删除
int i,j=0; for(i=0;i<strlen(s);i+=2)
if(s[i]%2==0) t[j++]=s[i]; t[j]='\0';
填1>*n2>next3>head 改1>a=NULL;2>if(*r==*p)
10>删除s中下标为偶数的字符,剩余放在t中
int i,j=0; for(i=1;i<strlen(s);i+=2)
t[j++]=s[i]; t[j]='\0'
11>删除s所指字符串中ASCII值为偶数的字符,其
余放在t所指数组中 int i,j=0;
for(i=0;i<strlen(s);i++) if(s[i]%2)
t[j++]=s[i]; t[j]=0;
填空1>STU 2>std[i].num 3>std[i]
改错1>r++; p++ 2>if(*r=='\0')
12>学生数据在结构体a中,找最高分用形参指针返回
int i,max=a[0].s,j=0; for(i=1;i<N;i++)
if(max<a[i].s) {j=i; max=a[i].s} *s=a[j]; 填空1>std[i].year 2>std[i] 3>n
改错1>IsPrime(int n)2>if(!(n%i))
13>给数组左下角元素乘n int i,j;
for(i=0;i<n;i++) for(j=0;j<=i;j++)
a[i][j]*=n;填空1>STU 2>score[i] 3>&std
改错1>if(k>0) 2>else if(k==0)
14>使数组坐下三角元素为零 int i,j;
for(i=0;i<N;i++) for(j=0;j<=i;j++)
a[i][j]=0; 填空1>*std 2>PERSON 3>std
改错1>int i,k,q; 2>pt[i]=str[k][i];
15>求出二维数组每列最小元素并依次放入pp数组中
int i,j,min,k; for(i=0;i<N;i++)
{min=tt[0][i];k=0; for(j=1;j<M;j++)
if(min>tt[j][i]){min=tt[j][i]; k=j; }
pp[i]=tt[k][i];}填1>*std2>std[i].age3> 改1>void fun(int *a,int *b) 2>t=*b;*b=*a;*a=t;
16>函数求出w的低n-1位的数作为函数返回值unsigned t,s=0,s1=1,p=0; t=w; while(t>10) {if(t/10) p=t%10; s=s+p*s1; s1=s1*10
t=t/10;} return s;填空1>tt2>tt.score[i]3>std 改错1>m=i; 2>if(a[k]>a[m])m=k;
17>把s所指字符串逆置 char b[N]; int i=0,j; memset(b,0,N); for(j=strlen(s)-1;j>=0;j--)
b[i++]=s[j]; strcpy(s,b);
填1>i+12>k=j3>t 错1>void fun(char *str,char ch) 2>if(*str!=ch) 3>str[1]='\0';
18>从s所指的字符串中删除给定字符
char *p=s; int i=0; while(*p)
{if(*p !=c)s[i++]=*p; p++;} s[i]='\0';
填空1>k 2>len 3>ss[i][j]
改错1>result*=n--; 2>return result;
19>对7个字符的串除首尾字符外按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; }
填空1>ss[i] 2>n+j 3>1
改错1>if(*p=='') 2>*(p-1)=toupper(*(p-1));
20>统计长为2的字符串再另一串中出现的次数
int cnt=0; char *p=str, *q; while(*p){
q=strstr(p,substr); if(q==NULL) break;
p=q+strlen(substr); cnt++} return cnt;
填1>[N] 2>len 3>*n=len 改1>t+=1.0/i; 2>return t;
21>将1到m的非素数存入xx数组中,用k传回其个数
int i,j; int t=0; for(i=2;i<m;i++) {
j=2; while(j<i) {if(i%j==0) {xx[t]=i;
t++; break; } j++; } *k=t; }
填空1>M 2>< 3>k
改错1>if(('a'<=tt[i])&&(tt[i]<='z')) 2>tt[i]-=32;
22>指出ss字符串中指定字符的个数并返回此值
int cnt=0; char *p=ss; while(*p) {
if(*p==c)cnt++; p++; } return cnt;
填空1>j++ 2>s[i]=t1[i] 3>j
改错1>for(j=i+1;j<6;j++) 2>*(pstr+i)=*(pstr+j);
23>计算矩阵A加上A的转置,存放在矩阵B中
int c[3][3]; int i,j; for(i=0;i<3;i++)
for(j=0;j<3;j++) { c[i][j]=a[j][i];
b[i][j]=a[i][j]+c[i][j]; }
填空1>&& 2>0 3>s[j]
改错1>for(i=2;i<=m;i++) 2>y+=1.0/(i*i);
24>秋1到1000能被7或11整除但不能同时整除的数
int i; *n=0; for(i=7;i<1000;i++)
if(((i%7)==0||(i%11)==0)&&(i%77)!=0) a[(*n)++]=i;
填1>s[i] 2>'9' 3>*t=n 改1>t=*x; *x=y; 2>return(t); 25>统计tt中26个字母出现的次数,并依次放在pp中
char *p=tt; int i; for(i=0;i<26;i++)pp[i]=0;
while(*p){ if(*p>='a'&&*p<='z')pp[*p-'a']+=1;p++;}
填空1>1 2>s[k] 3>c 改错1>long s=0,t=0; 2>t=t/10;
26.输入字符串:world,然后输入3,则输出结果为:
Int p,m=0; for(p=0;p<LEN;p++) if(p!=n) {b[m]=a[p]; m++;} b[m]=’\0’;
填空: 1.t=i 2. i 3.0
改错:1.while(fabs(t)>=num) 2.t=s/n;
27根据公式计算s计算结果返回.如, n的值为11时,函数值为1.833333 int k; float str=1.0,sum=1.0;
for(k=2;k<=n;k++) {sum=sum+k; str=str+1/sum;} return str;
填空:1.0 2.0 3.c 改错:1.double sum=0.0; 2.sum/=c
28.利用简单迭代方法求方程:cox(x)-x=0的一个实根。
程序将输出结果Root=0.739086 float x0,x0=0.0;
do{x0=x1; x1=cos(x0);}while(fabs(x0-x1)>0.000001);
return x1; 填空:1.i++ 2.m 3.m
改错:1.while((2<=high)&&(n<10)) 2.yes=0; break;
29.:求Fibonacci数列中大于t最小的一个。
如t=1000,
值为1597 int f0=0,f1=1,f; do{f=f0+f1; f0=f1; f1=f;}
while(f<t); return f; 填空:1.N 2.N-1 3.0
改错:1.s=s+(n+1.)/n: 2.return t;
30.函数fun使s作为返回值。
如,若m的值为20,值为6.506583.
double s=0.0; int i; for(i=1;i<=m;i++)s+=log(1.0*i);
s=sqrt(s); return s; 填空:1.0 2.j- - 3.j
改错:double f(double x) 2.return s;
31.fun,将字符串中的前导*号全部删除,中间和尾部的*号不删除
填空:1.【N】 2.t[i][j] 3.t[i][j] 改错:#define FU(m,n)
((m)/(n)) 2.return (value);
32.fun使除了尾部的*号之外,将字符串中的其他*号全部删除。
char *q=a; int j=0; while(*q&&q<p){if(*q!=’*’)a[j++]=*q; q++} while(*p)a[j++]=*p++; a[j]=’\0’; 填空:1.t【】【N】 2.i=0;i<n
3.s 改错:1.int fun(int a[],int m) 2.eles if(m>a[mid])
33.编写函数fun除了字符串前导和尾部的*外,将其他*全部删除。
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++]=*h; a[j]=’\0’;
填空1.sum 2.t[i][j] 3.1 改错1.double r; 2.while(fabs(n-m)>0.001) 34.编写函数fun,删除字符串中所有的*号。
int j=0; char *p=a;
while(*p){if(*p!=’*’)a[j++]=*p; p++;} a[j]=’\0’;
填空:1.1 2.j++ 3.j 改错:1.t=a;a=b;b=t; 2.return(b);
35.编写函数fun,使字符串尾部的*不的多余n个,若多余n个则
删多余的,若不足n个什么也不做,字符串中间和前面的*号不删。
Int i=0,j=0; char *p,*t; p=t=a; while(*t) t++; t--;
while(*t==’*’) {j++; t- -;} t++; if(j>n) { while(*p&&p<t+n) { a[i]=*p; i++; p++; } a[i]=’\0’; }
填空:1.a[i]%2 2.a[j] 3.j 改错:int fun(int n) 2.if(n==1)
36.fun,求出该学生的平均分放在记录的ave成员中。
平均成绩是78.875
int i; for(i=0; i<N; i++) a->ave=a->ave+a->s[i]; a->ave /=N;
填空:1.a[i] 2.a[j] 3.a[j] 改错:1.switch(g)
2.case 1:return 1; case 2:return 1;
37.fun,把低于平均分的学生数据放在b所指的数组中,低于
平均分的学生人数通过形参n传回,平均分通过函数值返回。
int i; double ave=0.0; *n=0; for(i=0; i<N; i++)ave=ave+a[i].s;
ave /=N; for(i=0; i<N; i++) if(a[i].s<ave) { b[*n]=a[i]; (*n)++;} return ave;填空1.*a 2.2 3.i+1 改错1.sum=0.0; 2.if((i+1)%5==0) 38.fun,把分数最高的学生放在h所指的数组中。
int i,max=a[0].s, n=0; for(i=1; i<N; i++)
if(max<a[i].s)max=a[i].s; for(i=0; i<N; i++)
if(max==a[i].s)b[n++]=a[i]; return n;
填空:1.1 2.i 3.a[p+i] 改错:1.float k; 2.if(*a<*c)
39.编写函数fun,函数返回指定学号的学生数据,指定的学号
在主函数中输入。
若没学号。
STREC c; int i; c.num[0]=’\0’; c.s=-1;
for(i=0; i<N; i++) if(strcmp(a[i].num,b)==0
{strcpy(c.num,a[i].num); ]
c.s=a[i].s; break;} return c;
填空:1.n/2 2.i 3.a[n-i-1] 改错:1.n=*p-‘0’; 2.n=n*8+*p-‘*’;
40.fun,求出平均分有函数值返回。
如,。
平均分是78.625
STREC *P=H->next; double av=0.0; int n=0; while(p!=NULL){
av=av+p->s; p=p->next; n++; } av /=n; return av;
填空:1.char 2.ch<=’9’ 3.’0’改错:1.b[k]=*p;
2.b[k++]=’‘;
41.fun,计算并输入给定整数n的所有因子之和。
n的值不大于1000.
Int s=0, i; for(i=2; i<n; i++)if(n%i==0)s+=i; return s;
填空1.&& 2.‘A’ 3.ch 改错:1.void fun(int *a)
2.a[j]=a[j-1];
42.编写函数fun,输出多项式的值s,如n输入15则s=2.718282.
double s=1; long t=1; int i; for(i=1; i<=n; i++){t=t*i;
s+=1./t;}
return s; 填空1.1 2.-1 3.t 改错1.for(i=1; i<=3; i++)
2.if(k>=0&&k<=6)
43.fun,计算并输出当x<0.97时下列多项式的值,直到|Sn-Sn-1|<0.00001。
int n=1; double sn=1; double xn=1,xn1=0;
while(fabs(xn-xn1)>=0.000001){xn=xn*x*(0.5-n+1)/n; n+=1;
sn+=xn;}
return(sn);填空1.x 2.n 3.fabs(t) 改错1.for(i=1; i<=y; i++)
2.t=t%1000;
44.编写函数fun,计算并输出给定10个数的方差。
int i; double avg=0.0,sum=0.0,abs=0.0,fc;
for (i=0;i<10;i++) sum+=x[i]; avg=sum/10;
for (i=0;i<10;i++) abs+=(x[i]-avg)*(x[i]-avg); fc=sqrt(abs/10); return fc; 填空:1.1 2.1 3.i 改错:1.k=i 2.c=k%10
45.fun,计算并输出给定数组中每相领两个元素之平均值的平方根之和。
Inti; double avg=0.0, sum=0.0; for(i=0;i<8;i++) {avg=(x[i]+x[i+1])/2; sum+=sqrt(avg);} return sum;
填空1.x 2.n 3.t 改错.1.d=1; s=0; 2.d=d/10
46.计算并输出下列多项式的值,n输入8后,输出为s=0.662872.
int i; double sum=0.0; if (n>1&&n<=100){for(i=1; i<n; i++)
sum+=1.0/(2*i-1)-1.0/(2*i);} return sum;
填空:1.j=3 2.i 3.j 改错:1.sum=0; j=0; 2.if(sum%4==2)
47.计算并输出下列多项式的值,如n输入50后,输出s=1.718282.
double s=0,t=1; int i; for(i=1; i<=n; i++){t *=i; s+=1./t;}
return s;
填空:1.n%10 2.break 3.break 改错:1.if(t==0) 2.*zero=count;
48.fun,计算并输出n以内能被5或9整除的所有自然数的倒数之和。
int i; double sum=0.0; for(i=1; i<=n; i++) if(i%5==0||i%9==0) sum+=1.0/i; return sum;填空1.a[i] 2.a[i] 3.0 改错1.y=1; 2.d=a-i; 49.编写函数fun,计算并输出3到n之间所有素数的平方根之和。
输入n=100,sum=148.874270
int i,j=o; double s=0; for (i=3;i<=n; i++){for(j=2; j<i; j++)
if(i%j==0)break; if(j==i)s=s+sqrt(i);} return s;
填空:1.i 2.t++ 3.count 改错:1.int fun(int a,int b,int c)
2.eles return 1;
50.编写函数fun,计算并输出s,如n输入20后,s=534.188884.
int i; double fac=1.0; double sum=1.0;
for(i=2;i<=n;i++){fac+=sqrt(i); sum+=fac;} return sum;
填空:1.a 2.a 3.b 改错:1.c=c+32; 2.c=c+5;
51.将a,b中的两个两位数合并形成一个新的整数放在c中(合并的
方式:将a中的十位和个位数依次放在变量c的百位和个位上,
b中的十位和个位数依次放在变量c的千位和十位上。
*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);
填空:1)0 2)X 3)t++或t=t+1
改错:1)int i,sl; 2)t[i]=s[sl-i-1];
52.按分数的高低排列学生的记录,高分在前。
STREC tmp; int i,j; for(i=0; i<N; i++)
for(j=i+1; j<N; j++) if(a[i].s<a[j].s){
tmp=a[i]; a[i]=a[j]; a[j]=tmp; }
填空:1)999 2)t/10 3)x
改错:1)void fun(long s, long *t) 2)while(s>0)
53.将a,b中的两个两位正整数合并形成一个新的整数放在c中。
合并方式:将a中的十位和各位数依次放在变量c的千位和十位
上,b中的十位和个位数依次放在变量c的各位和百位上。
答案:
*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);
填空:1)1 2)s 3)i*10 改错:1)int fun(int n,int xx[][M])
2)print("%4d",xx[i][j]);
54.功能:实现两个字符串的连接(不使用库函数strcat),
即把p2所指的字符串连接到p1所指的字符串后。
char *p=p1;while(*p)p++;
while(*p2) *p++=*p2++;*p=0;填空:1)0 2)10*x 3)n/10
改错:1)*t=0; 2)if(d%2!=0)
55将一个数字字符串转换为一个整数。
例如,若输入字符串
“-1234”,则函数把它转换为整数值-1234.
long s=0,t;int i=0,j,n=strlen(p),k,sl;
if(p[0]==`-`) i++; for(j=i;j<=n-1;j++)
{ t=p[j]-`0`; sl=10; for(k=j;k<n-1;k++)
t*=sl; s+=t; } if(p[0]==`-`)
return-s; else return s;
填空:1)10 2)0 3)x 改错:1)if (n==0) 2)result *=n--;
56.根据以下公式求π的值(要求满足精度0.0005)
double s; float n,t,pi; t=1;pi=0;n=1.0;s=1.0;
while((fabs(s))>=eps) { pi+=s; t=n/(2*n+1);
s*=t; } pi=pi*2; return pi;
填空:1)0 2)n 3)(t*t)
改错:1)for(i=0;str[i];i++) 2)if(substr[k+1]==`\0`)
57.找出一维整型数组元素中最大的值和它所在的下标,
最大的值和它所在的下标通过形参传回。
int i; *max=a[0];*d=0; for(i=1; i<n; i++)
if(*max<a[i]){ *max=a[i]; *d=i; }
填空:1)1 2)2*i 3)(-1) 改错:1)k++; 2)if (m==k )
58.求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。
int i,j,max=a[0][0]; for(i=0; i<2; i++)
for(j=0; j<M;j++) if(max<a[i][j]) max=a[i][j];
return max; 填空:1)3. 2)> 3)(2*i+1)
改错:1)double fun(int n) 2)s=s+(double)a/b;
59将s所指字符串中除了下标为奇数,同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
int i,j=0; for(i=1; i<strlen(s); i+=2)
if(i%2==0 && s[i]%2)t[j++]=s[i]; t[j]=`\0`;
填空:1)0 2)i++ 3)2.0*i
改错:1)void fun(char *s, char *t) 2)t[2*d]=`\0`;
60.将s所指字符串中ASCII值为奇数的字符删除,串中剩余的字符
形成一个新串放在t所指的数组中。
int i, j=0; for(i=1; i<strlen(s); i+=2)
if(s[i]%2)t[j++]=s[i]; t[j]=`\0`;
填空:1)s[i] 2)k 3)0或`\0` 改错:1)while(*w) 2)if(*r==*p)
61.将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,
s所指串中剩余的字符形式的新串放在t所指的数组中。
int i,j=0; for(i=0; i<strlen(s); i++)
if(!((i%2)==0&&(s[i]%2)))t[j++]=s[i]; t[j]=`\0`;
填空:1)j 2)k 3)p 改错:1)while(i<j)或while(j>i) 2)if(*a)
62.找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)
int i,min=a[0].s, j=0; for(i=1; i<N; i++
if(min>a[i].s){ j=i; min=a[i].s; } *s=a[j];
填空:1)0 2)x[i]/N 3)j++
改错:1)double fun(int m) 2)for(i=100; i<=m; i+=100)
63.程序定义了N×N的二维数组。
功能:使数组右上三角元素中的值乘以m。
int i,j; for(i=0; i<N; j++) for(j=i; j<N; j++)
a[i][j]*=m; 填空:1)*av 2)i 3)*[j]
改错:1)float fun(int n) 2)for(i=2;i<=n;i++)
64求出数组周边元素的平均值并作为函数值返回给主函数中的s。
int i,j,n=0; double sum=0; for ( i=0; i<N; i++){
sun+=w[0][i]+w[N-1][i]; n+=2; }
for ( i=1; i<N - 1; i++){ sum+=w[i][0]+w[i][N-1];
n+=2; } return sum/n; 填空:1)s/N 2)j++ 3)-1
改错:1)#include<stdio.h> 2)upfst(char *p)
65球求出二维数组周边元素之和,作为函数值返回。
int tot=0,i,j;
for(i=0; i<N; i++){ tot+=a[0][i]; tot+=a[M-1][i];
} for(i=1; i<M-1; i++){ tot+=a[i][0];
tot+=a[i][N-1]; } return tot;
填空:1)x[i]/N 2)j++或j=j+1 3)i++或i=i+1
改错:1)num[k]=0; 2)switcn(*s)
66.使实型数保留2位小数,并对第三位进行四舍五入。
long w; w=h*1000+5; return(float)w/1000;填空:1)`0`
2)s++ 3)ctod(a)+ctod(b)改错:1)
void fun(char *s, int *a, int *b) 2)*a=*a+1; 3)*b=*b+1;
67.编写程序实现矩阵(3行3列)的转置。
int i,j,arr[3][3];
memcpy(arr,array,9*sizeof(int)); for(i=0; i<3; i++)
for(j=0; j<3; j++) array[i][j]=arr[j][i];
填空:1)N 2)break 3)n 改错:1)sum=0 2)scanf("%d,",&a[i][j]);
68.求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。
int i,j,k=0; for(i=2;i<=lim;i++) { for(j=2; j<=(i/2); j++)
if(i%j==0)break; if(j>(i/2))aa[k++]=i; } return k;填空:1)
a[0][i] 2)< 3)x,y 改错:1)void fun(int *x,int *y) 2)t=*x;*x=*y;*y=t;
69.从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。
int i,k=0,maxlen; maxlen=strlen(a[k]); for(i=1;i<num;i++)
{ if(strlen(a[i])>maxlen){ maxlen=strlen(a[i]);
k=i; } } *max=a[k]; 填空:1)[N] 2)i 3)i+1
改错:1)aa[i]=m%k; 2)printf("%d", aa[i-1]);
70.删除字符串中的所有空格。
char *p=str; int i=0;
while(*p){ if(*p !=` `)str[i++]=*p; p++; }
str[i]=0; 填空:1)0 2)|| 3)1改错:1)t=t-1.0/i; 2)return t;
71将ss所指字符串中所有下标为奇数位置上的字母转换为大写
char *p=ss; int i=0; while(*p){
if((i%2)&&(*p>=`a`&&*p<=`z`)) *p-=32; p++; i++;
} 填空:1)k 2)N 3)a[k][i]
改错:1)for(i=strlen(t)-1;i;i--) 2)if(t[j]>t[j+1])
72.将a,b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式
是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个
位依次放在变量c的个位和百位上。
*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);填空:1)k 2)N-1
3)temp 改错:1)void fun(int a[][M],int m) 2)a[j][k]=(k+1)*(j+1);
73将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数据中。
float av=0.0; int i,j=0; for(i=0; i<m; i++) av+=score[i];
av /=m; for(i=0; i<m; i++) if(av>score[i])below[j++]=score[i]; return j; 填空:1)j 2)0 3)i++
改错:1)for(i=2; i<=m; i++) 2)y —=1.0/(i*i);
74求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的
数组中,这些除数的个数通过形参n返回。
int i; *n=0; for(i=1; i<=x; i++)
if((x%i==0)&&(i%2))pp[(*n)++]=i;
填空:1)t,s 2)a[i] 3)0 改错:1)if (i%k==0) 2)if (k>=i)
75.将大于形参m且紧靠m的k个素数存入xx所指的数组中。
int r=0,temp,p,sign=1; for(temp=m+1;temp<m*m;temp++)
{ for(p=2;p<temp;p++) { if(temp%p!=0)
sign=1; else { sign=0; break; } }
if(sign==1&&p>=temp) { if(k>=0) {
xx[r++]=temp; k--; } else break; } }
填空:1)s 2)-- 3)return 0
改错:1)double fun(int n) 2)c=a; a+=b; b=c;
76.求出数组的最大元素在数组中的下标并存放在k所指的存储单元
int i,pos=0, max=*s; for(i=1;i<t;i++)
{ if(max<*(s+i)) { max=*(s+i); pos=i; } }
*k=pos;
Int i=0,j=0; char *p,*t; p=t=a; while(*t) t++; t--;
while(*t==’*’) {j++; t--;} t++; if(j>n) { while(*p&&p<t+n) {
a[i]=*p; i++; p++; } a[i]=’\0’; }
填空:1.a[i]%2 2.a[j] 3.j 改错:int fun(int n) 2.if(n==1)
77.根据以下公式求P的值,结果由函数值带回
float result,temp=1.0; int i;
for(i=1;i<=m;i++) temp=temp*i; result=temp;
for(temp=1.0,i=1;i<=n;i++) temp=temp*i;
result=result/temp; for(temp=1.0,i=1;i<m-n;i++)
temp=temp*i; result=result/temp;
return result;
填空 1.*s 2.s++ 3.n
改错 1.int j, c=0; double xa=0.0; 2.if(x[j]>xa)
78.计算小于形参n同时能被3与7整除的所有自然数之和的平方根
double sum=0.0; int i; for(i=21;i<=n;i++)
if((i%3==0)&&(i%7==0)) sum+=i;
return sqrt(sum);
填空 1.48 2.s++ 3.sum
改错 1.if((k%13==0)||(k%17==0)) 2.}
79.计算并输出下列级数和:例如:当n=10时,函数值为:0.90901
double s=0.0; int i;
for(i=1;i<=n;i++) s=s+1.0/(i*(i+1)); return s;
填空 1.*s 2.1 3.k[n]
改错 1.double fun(int k) 2.return s;
80.计算并输出该数列的前n项的平方根之和
double s=1.0, y=x; int i; long k=1;
for(i=1;i<=n;i++) { k=k*i; s+=y/k;
y*=x; } return s;
填空 1.i 2.ps[j] 3.tp
改错 1.double fun(int n) 2.return sum;
81.将字符串尾部的*号全部删除,前面的和中间的*号不能删除
int i=0; char *p,*q; p=q=a;
while(*p) p++; p--; while(*p=='*')
p--; while(q<=p) { a[i]=*q; i++;q++; }
a[i]='\0';
填空 1.i 2.ps[j] 3.tp
改错 1.double fun(int n) 2.return sum;
82.逐个比较p、q所指两个字符串对应位置中的字符
int i=0; char *p=a; while(*p&&*p=='*')
{ a[i]=*p; i++;p++; } while(*p)
{ if(*p!='*') { a[i]=*p; i++; }
p++; } a[i]='\0';
填空 1.N 2.k 3.ss[i]
改错 1.int k=0; 2.while(*p||*q)
83.只删除字符串前导和尾部的*号,串中字母之间的*号不删除char *p=a; int j=0;len=o; while(*p)
{ p++; len++; } while(j<len-h-e)
{ a[k]=a[j+h]; j++; } a[j]=0;
填空 1.N 2.substr 3.0
改错 1.int fun(int x,int y,int z) 2.return j;
84.使字符串的前导*号不得多余n个;
int i=0,k=0; char *t=a;
while(*t=='*') { k++; t++; } t=a;
if(k>n) t=a+k-n; while(*t)
{ a[i]=*t; i++; t++; } a[i]='\0';
填空 1.[M] 2.N 3.0
改错 1.t=1; 2.return(2*s)
85.将字符串中的前导*号全部移到字符串尾部
int i=0,n=0; char *p; p=a;
while(*p=='*') {n++; p++; }
while(*p) { a[i]=*p; i++; p++;}
while(n!=0) { a[i]='*';i++;n--; }
a[i]='\0';
填空 1.a 3.score[i]
改错 1.s[j++]=s[i]; 2.s[j]='\0';
86.把高于等于平均分的学生数据放在b所指的数组中
double t=0; int i; *n=0;
for(i=0;i<N;i++) t=t+a[i].s; t=t/N;
for(i=0;i<N;i++)if(a[i].s>t)b[(*n)++]=a[i];
return t;
填空 1.->son 2.->name 3.&t
改错 1.double fun(double a, double x0)
2.if(fabs(x1-x0)>0.00001)
87.把分数最低的学生数据放在b所指的函数中
int i,j=0,min=a[0].s; for(i=0;i<N;) { if(min>a[i].s) { j=0; b[j++]=a[i]; min=a[i].s; }
else if(min==a[i].s) b[j++]=a[i]; }
rerurn j;
填空 1.struct student 3.a.score[i]
改错 1.if(p==n)rerurn -1; 2.[i]=a[i+1];
88.将a,b中的两个两位正整数合并形成一个新的整数
*c=(b%10)*1000+(a/10)*100+a%10;
填空 1.struct student 2.a->score[i] 3.a
改错 1.char *fun(char (*sq)[M]) return sp;
89.把指定分数范围内的学生数据放在b中
int i,j=0; for(i=0;i<N;i++)
if(a[i].s>=1&&a[i].s<=h)b[j++]=a[i];
return j;
填空 1.struct student 2.n-1 3.a[i].name,a[j].name
改错 1.q=p+i; 2.while(q>p)
90.N名学生的成绩已在主函数中放入一个带头节点的链表结构中double max=h->s; STREC *p;
p=h->next; while(p) {if(p->s>max)
max=p->s; p=p->next; } return max;
填空 1.fp 2.== 3.fp
改错 1.n=strlen(aa); 2.ch=aa[i];
91.判断字符串是否为回文?若是,函数返回1
int i,n=o,flag=1; flag=1 char *p=str;
while(*p) { n++; p++;} for(i=0;i<n/2;i++)
if(str[i]==str[n-1-i]); else {flag=0;
break; } return flag;
填空 1.double 2.f1 3.f2
改错 1.p=h->next; 2.p=p->next;
92.将M行N列的二维数组中的数据,按行的顺序一次排放在一维数组中int i,j; for(i=0;i<mm;i++)
for(j=0;j<nn;j++) {b[*n]=*(s+i)+j);
*n=*n+1; }
填空 1.h->next 2.p->next 3.>=
改错 1.p=h->next; 2.p=p->next;
93.将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; }
填空 1.NODE* 2.next 3.r
改错 1.if(i%2||s[i]%2) 2.t[j]='\0';
94.将放在字符串数组中的M个字符(每串的长度不超过N)
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); k++; }
else break; b[k]='\0'; }
填空 1.next 2.0或者NULL 3.r
改错 1.r=t; 2.if(*r==0)
95.移动一维数组中的内容:若数组n个整数,要求把下标从0到p
int i,j=0,b[n]; for(i=p+1;i<n;i++)b[j++]w[i];
for(i=0;i<=p;i++)b[j++]w[i];
for(i=0;i<n;i++)w[i]=b[i];
填空 1.p->next 2.q 3.p->next
改错 1.while(*s) 2.s++
96.移动字符串中的内容,移动规则如下
int i;for(i=0;i<m;i++)fun1(w);
填空 1.double 2.f1 3.f2
改错 1.char *fun(char *s,char *t)
2.ss++;
3.tt++;
97.将M行N列的二维数组中的字符数据
int i,j,n=o; for(i=0;i<N;i++)
{ for(j=o;j<M;j++) {b[n]=s[j][i];
n=i*M+j+1} } b[n]='\0';
填空 1.FILE 2.fp 3.ch 改错 1.s[j++]=s[i]; 2.s[j]='\0';
98.删去一维数组中所有相同的数,使之只剩一个
int i,t,j=0,*p=a; t=p[0];
for(i=o;i<=n;i++) if(t==p[i]);
else{ a[j]=t; t=p[i]; j++; }
if(i>=n) a[j]=t; return j;
填空 1.FILE* 2.fslose(fp) 3.fp
改错 1.t=(STU *)calloc(sizeof(STU),m); 2.t[k]=t[j];
99.统计各年龄段的人数,N个年龄通过调用随机函数获得
int i,j;for(j=0;j<M;j++) b[j]=0;
for(i=0;i<N;i++)
if(a[i]>=0&&a[i]<==9 b[0]+=1;
else if(a[i]>=10&&a[i]<=19) b[1]+=1;
else if(a[i]>=20&&a[i]<=29) b[2]+=1;
else if(a[i]>=30&&a[i]<=39) b[3]+=1;
else if(a[i]>=40&&a[i]<=49) b[4]+=1;
else if(a[i]>=50&&a[i]<=59) b[5]+=1;
else if(a[i]>=60&&a[i]<=69) b[6]+=1;
else if(a[i]>=70&&a[i]<=79) b[7]+=1;
else if(a[i]>=80&&a[i]<=89) b[8]+=1;
else if(a[i]>=90&&a[i]<=99) b[9]+=1;
else b[10]+=1;
填空 1."rb" 2.> 3.fwritr
改错 1.p=s; 2.while(*p++);
100.统计一行字符串中单词的个数 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; 填空 1.filename 2.fp 3.fp
改错 1.p=(NODE *)malloc(sizeof(NODE)); 2.return h;。