计算机二级C上机考试
3
类型一:调整一个数的个、十、百、千位 1.请编写函数fun,其功能是:将两个两位数的正整数 c=1524。 2.a、b合并形成一个整数放在c中。合并的方式是:将填空:*fw str str a数的十位和个位数依次放在c数的千位和十位上,b改错:void fun(long s,long *t) 数的十位和个位数依次放在c数的百位和个位上。sl=sl*10;
例如,当a=45,b=12,调用该函数后c=4152。
填空:STYPE FILE Fp
改错:for( i=0; i<=sl; i ++) 把s后字母改为小写L
t[2*sl] = '\0';
3. c=2514。 4. c=5142。 填空:fp fclose(fp) fname 填空:"r" fs ft 改错:for ( i=j+1; i<=n-1 ; i++ ) 改错:if (d%2==0) p=i; s /= 10;
5. c=5241。 6. c=2415。 填空:k N-1 temp 填空:struct student * a->score[i] a
改错:fun(int a[][M], int m) 改错:char *fun(char (*sq)[M]) a[j][k]=(k+1)*(j+1); return sp; 7. c=1425。 8. c=4251。 填空:0 x t++ 填空:1 s i*10 改错:int i,s1; s后面是小写的L 改错:int fun(int n,int xx[][M]) t[i] = s[sl-i-1]; printf("%d ",xx[i][j]);
类型二:与*号有关的操作 9.请编写函数fun,它的功能是:将字符串中的前导*号除尾部*号,其余*删除 10.全部删除,中间和尾部的*号不删除。 填空:t[][N] i=0;i
a[mid]) 填空:[N] t[i][j] t[j][i]
改错:#define FU(m,n) ((m)/(n))
return(value);
12. 11.请编写函数fun,它的功能是:除了字符串前导和尾
部的*号之外,将串中其他*号全部删除。 删除串中所有*号 只删除中间*号 i
int j=0; char *q=a;
while(*q && q < h) a[j++] = *q++ ; 填空:1 j++ j
while(*h && *p && h < p) 改错:t=a;a=b;b=t; { if(*h != '*') a[j++] = *h ; h++; } return(b); while(*p) a[j++] = *p++ ;
a[j] = 0 ;
填空:sum=0 t[i][i] 1
改错:double r;
while(fabs(m-n)>0.001)
13. 14.
删除串尾*号 除前导*外其他删除*
填空:N i -1
改错:a2=k/10;
填空:N k ss[i] return i;
改错:int k=0;
while( *p || *q )
1
15. 16. 删除前导和尾部* 串尾部*号不多于n个
填空:N substr 0 填空:a[i] % 2 a[j] j
改错:fun(int x,int y, int z) 改错:fun (int n) return j; if(n==1) 17.前导*不多于n个 串前*移至串尾 18.
填空:M N 0
填空:a b.name score[i] 改错:t=1;
改错:s[j++]=s[i]; return(2*s);
s[j]=0;
19.编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址 (用****作为结束输入的标志)。
int i,k=0,maxlen;
maxlen=strlen(a[k]);
for(i=1;i maxlen)
{ maxlen = strlen(a[i]) ; k = i ; } }
*max=a[k];
填空:[N] i i+1
改错:aa[i]=m%k;
printf("%d",aa[i-1]);
类型三:与下标或ASCII码有关
20.请编写一个函数fun,它的功能是:将ss所指字符串下标21.请编写—个函数void fun(char *ss),中所有下标为奇数位置上的字母转换为大写(若该奇数位置子母改大写 位置上不是字母,则不转换)。
c 下标奇数位置子母改大写 填空:NULL n head,ch 改错:for (i = 0,t = 0; p[i] ; i++) c[t]= '\0'; 填空:k N a[k][i]
改错:for( i = strlen( t )-1; i; i-- )
if(t[j]>t[j+1])
22.下标为偶数字符删除 23.除首尾外其余ASCII码降序
填空:ss[i] n+j 1 填空:data next head
改错:if(* p == ' ' ) 改错:while(*r)
*(p-1) = toupper( *( p - 1 ) ); *a = *r; a++; r++;
24. ASCII值为奇数删除 25.ASCII码值为偶数删除
填空:s[i] k '\0' 填空:STU std[i].num std[i]
改错:while(*w) 改错:r++; p++;
if( *r == *p ) if(*r==0)
2
26.除下标偶数同时ASCII码值偶数除下标奇数同时ASCII码也为奇27.
之外其余全部删除 数外其余字符删除
i
填空:*n next head
填空:0 i++ 2.0*i 改错:a = NULL;
改错:void fun (char *s, char *t) if(*r==*p)
t[2*d]=0;
103. 请编写函数fun,函数的功能是查找x在s所28.将下标为偶数同时ASCII码为奇指数组中下标的位置作为函数值返回,若x不存在,数删除 则返回-1
填空:j k p 填空:i%5 \n a[i] 改错:while(i要求把下标从0到p(p 小于等于n-1)的数组元素平移到数组的最后。
填空:FILE * fclose(fp) fp 下标0-p移到数组最后
改错:t=(STU *)calloc(sizeof(STU),m); 填空:p->next q p->next t[k]=b[j]; 改错:while(*s)
s++;
31.找出一维数组最大值及其下标 32(求数组最大元素及下标
填空:1 2*i (-1)
改错:k++;
填空:n++ 0 s++ if (m == k )
改错:t+=s[k];
*ave=ave; 33.左下三角元素乘n 34.右上三角元素同乘m
填空:*av i x[j] 填空:STU score[i] &std 改错:float fun(int n)
for (i=2; i<=n; i++) 改错:if(k>0)
else if(k==0)
35(左下三角元素置0 二维数组每列最小元素 36(
填空:*std std[i].age max.name
改错:void fun ( int*a, int*b ) 填空:*std PERSON std
t=*b;*b=*a;*a=t; 改错:int k,q,i;
pt[i] = str[k][i] ;
37.求二维数组中最大元素的值 38.矩阵转置 填空:3.0 > 2*i+1 填空:N break n 改错:double fun (int n) 改错:sum=0; s = s + (double)a / b; scanf("%d",&a[i][j]);
3
39.按列顺序33 44 55 33 44 55 40.按行顺序33 33 33 33 44 44 44 44
填空:NODE * next r 填空:h->next p->next > 改错:if(i%2 || s[i]%2==0) 改错:p=h->next;
t[j]=?\0?; p=p->next;
41.按列顺序wshwshwsh 42(数组周边元素的平均值
填空:s/N j++ -1 填空:FILE * fp ch 改错:# include
upfst(char *p)
改错:s[j++]=s[i];
s[j]='\0';.
B=A+A? 44.43(二维数组周边元素之和
填空:&& '\0' s[j] 填空:x[i]/N j++ i++
改错:for(i=2; i<=m; i++) 改错:num[k]=0;
y+=1.0/(i*i); switch(*s)
类型五:学生分数操作
45.请编写一个函数fun,它的功能是:计算n门课程的 N名学生的成绩的平均分,78.625 46.
平均分,计算结果作为函数值返回。例如:若有5门课 填空:char ch<='9' '0' 程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80。 改错:b[k]=*p;
n门课程平均分71.8 b[k++]= „ ?;
填空:x p s
改错:long k=1;
num/=10 ;
47. 8门课程平均分78.875 48.找出成绩最高学生纪录(规定只有填空:a[i] a[j] a[j] 一个最高分) 改错:switch(g) case 1: case 2:return 1; 填空:std[i].year std[i] n
改错:IsPrime ( int n )
if(!( n%i ))
49.低于平均分的学生数据 把分数最高学生数据放在b所指50.
填空:*a 2 i+1 数组中,分数最高的学生可能不只一改错:sum=0.0; 个 if((i+1)%5==0)
填空:1 i a[p+i]
改错:float k;
if(*a<*c)
51 52(低于平均分的人作为函数值返回 找出学生最高分由函数值返回 填空:j 0 i++
填空:fp == fp 改错:for(i=2; i<=m; i++) 改错:n=strlen(aa) ; y-=1.0/(i*i);
ch=aa[i];
4
54. 53.高于等于平均分的学生数据
分数最低学生数据放在b所指数组 填空:->sno ->name &t
填空:struct student a.name 改错:double fun(double a, double x0)
a.score[i] if( fabs(x1-x0)>0.00001 )
改错:if(p==n) return -1;
a[i]=a[i+1];
55.找出成绩最低学生纪录 56按分数高低排列学生纪录,高分在
前 填空:0 x[i]/N j++ 填空:999 t/10 x 改错:double fun(int m) 改错:void fun (long s, long *t) for( i = 100;i <= m;i += 100 ) while(s>0)
57.返回指定学号学生数据 58.指定分数范围内的数据
填空:n/2 i a[n-i-1]
填空:struct student 改错:n= *p-'0';
n-1 n=n*8+*p-'0';
a[i].name,a[j].name
改错:q=p+i;
while(q>p)
类型六:字符和字符串操作 59.请编写一个函数fun,它的功能是:比较两个字符串删除给定的字符 60.的长度,返回较长的字符串。若两个字符串长度相同, 则返回第一个字符串。 填空:k len ss[i][j] 返回较长字符串 改错:result *=n--;
result
填空:next t->data t
改错:fun (char *a)
printf("%c" ,*a) ;
61.填空:j++ s[i]=t1[i] j 62(统计26个字母出现次数 改错:for (j = i + 1;j < 6;j++) 填空:1 s[k] c *(pstr+i)=*(pstr+j); 改错:long s = 0, t = 0 ;
t=t/10;
63(删除指定下标字符 64.统计一行串中单词个数
填空:filename fp fp 填空:t=i i '\0' 改错:p=(NODE *)malloc(sizeof(NODE)); 改错:while(fabs(t)>=num) return h;
t=s/n;
65. M个字符串合并成新串 66.回文
填空:next 0 r 填空:double f1 f2 改错:r=t; 改错:p=h->next; if(*r==0) p=p->next;
67实现两个字符串连接 68.删除字符串中所有空格 填空:0 10*x n/10 填空:0 || 1 改错:*t=0; 改错:t-=1.0/i;
if(d%2!=0) return t;
5
69(逆置。 数字字符串转换为整数 70
字符串逆置 填空:10 0 x 填空:i+1 k=j t 改错:if (n==0) 改错:void fun(char *str, char ch) result *= n--; if(*str!=ch)
str[1] = 0;
71 1第m个字符移到串后 72.统计子串出现的次数
i 填空:double f1 f2
填空:N len *n=len 改错:char *fun(char *s,char *t)
改错: ss++;
tt++; t += 1.0/i;
return t;
101. 请编写函数fun,其功能是:统计s所指字符102. 请编写函数fun,其功能是将形参s所指的字
串中的数字字符个数,并作为函数值返回。 存放同符串放入形参a所指的字符数组中,使a中数字字符个数 样的字符串。
填空:pb p->data p->next 填空:b[k] N/2 <
改错:int i, one=0, zero=0; 改错:int t[N] ,i, num=0;
switch( s[i] ) t[num++]=b[i]; case 0:zero++;break; for(i=0; i= 2) && (n < 10) )
yes=0; break; 1.833333。
填空:'\0' 0 c
改错:double sum=0.0;
sum /= c;
若主函数从键盘给n输入15,则输76.75.
出为s=2.718282。 若m的值为20,则fun函数值为
填空:1 -1 t 6.506583。 改错:for(i=1; i<=3; i++) 填空:0 j-- j if(k>=0 && k<=6) 改错: double f( double x)
return s;
77. 78.若输入8后,则输出为S=0.662872。
输入0.21后,则输出为s=1.100000。 填空:j=2 i j 填空:x n fabs(t) 改错:sum=j=0; 改错:for(i=1; i<=y; i++) if(sum%4==2) t=t%1000;
6
79. m=12,n=8,运行结果为80(
输入20后,则输出为s=534.188884。 495.000000。 填空:a a b 改错:c=c+32; 填空:*s s++ n c=c+5; 改错:int j, c=0; float xa=0.;
if (x[j] )>=xa)
n=10,x=0.3时,函数值为1.349859。 82.81. n=10时,函数值为0.909091。
填空:i ps[j] tp 填空:*s 1 k[n]
改错:double fun(int n) 改错:double fun(int k)
return sum; return s;
输出下列多项式值 84.83.求π的值
填空:n%10 break break 填空:0 n t*t
改错:if(t==0) 改错:for(i = 0;str[i];i++)
*zero=count; if (substr[k+1]=='\0')
类型八:求整除
86. 85(请编写函数fun,它的功能是:求出1到1000之内
能被7或11整除、但不能同时被7和11整除的所能被7或11整除 有整数 填空:q next next
能被7或11整除,但不能同时被7和改错:p = j;
p = i; 11整除
填空:s[i] '9' *t=n
改错:t=*x;*x=y;
return(t);
87.同时能被3与7整除的所有自然数之88(能整除形参x且不是偶数的各整数
和的平方根 填空:t,s s[i] '\0' 填空:'0' s++ sum 改错:if(i%k==0) 改错:if ((k%13 == 0) || (k%17 == 0)) if (k == i) }
89N以内能被5或9整除的所有自然数去掉一个最高分和一个最低分,然后105
倒数之和 求平均值 填空:a[i] a[i] 0 填空:a[i] m%10 m/10
改错:y=1;
改错:b[i]=a[i][0]; d=a-i;
for (j=1; ja[i][j] )
类型九:其它各类计算 90.请编写函数fun,它的功能是:求Fibonacci数列中91大于1小于m的非素数 大于t的最小的一个数,结果由函数返回。 填空:M < k fibonacci 改错:if((tt[i]>=?a? )&&( tt[i] <= 'z' ) )
填空:N N-1 0 tt[i] -= 32; 改错:s=s+(n+1.0)/n;
return t;
7
92. 3到n之间所有素数平方根之和 93.小于或等于lim所有素数
填空:i t++ count
填空:a[0][i] < x,y 改错:int fun(int a,int b,int c)
改错:int fun(int *x,int *y) else retrun 1;
t=*x;*x=*y;*y=t;
w是一个大于10的无符号整数 95(94(大于整数m且紧靠m的k个素
5923=〉923 数
填空:tt tt.score[i] std 填空:s -- return 0
改错:m=i; 改错:double fun(int n)
if(a[k]>a[m]) m=k; c = a; a += b; b = c;
96.方差S=11.730729 97.相邻两元素平均值平方根之和 填空:1 1 i 填空:x n t 改错:k=i; 改错:d=1; s=0;
d=d/10; c=k%10;
98(保留2位小数 99.整数n的所有因子 填空:48 s++ ctod(a)+ctod(b) 填空:&& „A? ch 改错:void fun ( char *s, int* a, int *b ) 改错:void fun(int *a) *a=*a+1 ; a[j]=a[j-1];
*b=*b+1;
100.各年龄段的人数
填空:“rb” > fwrite
改错:p=s;
while(*p++);
8