计算机二级C上机考试题库2
类型一:调整一个数的个、十、百、千位
1.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=4152。
填空:STYPE FILE Fp
24.
ASCII码值为偶数删除
填空:STU std[i].num std[i]
改错:r++; p++;
if(*r==0)
25.ASCII值为奇数删除
填空:s[i] k '\0'
改错:while(*w)
if( *r == *p )
26.除下标偶数同时ASCII码值偶数之外其余全部删除
i
填空:*n next head
改错:a = NULL;
if(*r==*p)
27.除下标奇数同时ASCII码也为奇数外其余字符删除
填空:0 i++ 2.0*i
改错:void fun (char *s, char *t)
t[2*d]=0;
28.将下标为偶数同时ASCII码为奇数删除
填空:j k p
改错:while(i<j)
if (*a)
改错:fun(int x,int y, int z)
return j;
16.
串尾部*号不多于n个
填空:a[i] %2 a[j] j
改错:fun (int n)
if(n==1)
17.前导*不多于n个
填空:M N 0
改错:t=1;
return(2*s);
18.串前*移至串尾
填空:a score[i]
填空:std[i].year std[i] n
改错:IsPrime ( int n )
if(!( n%i ))
49.低于平均分的学生数据
填空:*a 2 i+1
改错:sum=0.0;
if((i+1)%5==0)
50.把分数最高学生数据放在b所指数组中,分数最高的学生可能不只一个
填空:1 i a[p+i]
类型二:与*号有关的操作
9.请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。
删除前导*号
填空:[N] t[i][j] t[j][i]
改错:#define FU(m,n) ((m)/(n))
return(value);
10.除尾部*号,其余*删除
填空:t[][N] i=0;i<n s
改错:k++;
if (m == k )
32.求数组最大元素及下标
填空:n++ 0 s++
改错:t+=s[k];
*ave=ave;
33.左下三角元素乘n
填空:STU score[i] &std
改错:if(k>0)
else if(k==0)
34.右上三角元素同乘m
填空:*av i x[j]
改错:float fun(int n)
p=i;
4.c=5142。
填空:"r" fs ft
改错:if (d%2==0)
s /= 10;
5.c=5241。
填空:k N-1 temp
改错:fun(int a[][M], int m)
a[j][k]=(k+1)*(j+1);
6.c=2415。
填空:struct student * a->score[i] a
下标奇数位置子母改大写
填空:k N a[k][i]
改错:for( i = strlen( t )-1; i; i-- )
if(t[j]>t[j+1])
21.请编写—个函数void fun(char *ss),下标奇数位置子母改大写
c
填空:NULL n head,ch
改错:for (i = 0,t = 0; p[i] ; i++)
改错:s[j++]=s[i];
s[j]=0;
19.编写一个函数,从传入的num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址
(用****作为结束输入的标志)。
int i,k=0,maxlen;
maxlen=strlen(a[k]);
for(i=1;i<num;i++)
{ if(strlen(a[i]) > maxlen)
y+=1.0/(i*i);
类型五:学生分数操作
45.请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80。
n门课程平均分71.8
填空:x p s
改错:long k=1;
num/=10 ;
{ 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所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
37.求二维数组中最大元素的值
填空:3.0 > 2*i+1
改错:double fun (int n)
s = s + (double)a / b;
38.矩阵转置
填空:N break n
改错:sum=0;
scanf("%d",&a[i][j]);
39.按列顺序33 44 55 33 44 55
填空:NODE * next r
46.N名学生的成绩的平均分,78.625
填空:char ch<='9' '0'
改错:b[k]=*p;
b[k++]= ‘ ’;
47.8门课程平均分78.875
填空:a[i] a[j] a[j]
改错:switch(g绩最高学生纪录(规定只有一个最高分)
改错:int fun(int a[],int m)
else if(m > a[mid])
11.请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。
只删除中间*号
int j=0; char *q=a;
while(*q && q < h) a[j++] = *q++ ;
改错:if(i%2 || s[i]%2==0)
t[j]=’\0’;
40.按行顺序33 33 33 33 44 44 44 44
填空:h->next p->next >
改错:p=h->next;
p=p->next;
41.按列顺序wshwshwsh
填空:FILE * fp ch
改错:s[j++]=s[i];
s[j]='\0';.
42.数组周边元素的平均值
填空:s/N j++ -1
改错:# include <stdio.h>
upfst(char *p)
43.二维数组周边元素之和
填空:x[i]/N j++ i++
改错:num[k]=0;
switch(*s)
44.B=A+A’
填空:&& '\0' s[j]
改错:for(i=2; i<=m; i++)
while(*h && *p && h < p)
{ if(*h != '*') a[j++] = *h ; h++; }
while(*p) a[j++] = *p++ ;
a[j] = 0 ;
填空:sum=0 t[i][i] 1
改错:double r;
while(fabs(m-n)>0.001)
12.
下标0-p移到数组最后
填空:p->next q p->next
改错:while(*s)
s++;
30.删除一维数组相同的数
填空:FILE * fclose(fp) fp
改错:t=(STU *)calloc(sizeof(STU),m);
t[k]=b[j];
31.找出一维数组最大值及其下标
填空:1 2*i (-1)
改错:for( i=0; i<=sl; i ++)把s后字母改为小写L
t[2*sl] = '\0';
2.c=1524。
填空:*fw str str
改错:void fun(long s,long *t)
sl=sl*10;
3.c=2514。
填空:fp fclose(fp) fname
改错:for ( i=j+1; i<=n-1 ; i++ )
for (i=2; i<=n; i++)
35.左下三角元素置0
填空:*std PERSON std
改错:int k,q,i;