文档库 最新最全的文档下载
当前位置:文档库 › 2013年3月全国计算机二级C上机考试题库

2013年3月全国计算机二级C上机考试题库

2013年3月全国计算机二级C上机考试题库
2013年3月全国计算机二级C上机考试题库

类型一:调整个、十、百、千位

1.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=4152。

*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);

填空:STYPE FILE Fp

改错:for( i=0; i<=sl; i ++) 把s后字母改为小写L

t[2*sl] = '\0';

2.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后c=1524。

*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);

填空:*fw str str

改错:void fun(long s,long *t)

sl=sl*10;

3.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后c=2514。

*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);

填空:fp fclose(fp) fname

改错:for ( i=j+1; i<=n-1 ; i++ )

p=i;

4.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=5142。

*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);

填空:"r" fs ft

改错:if (d%2==0)

s /= 10;

5.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12,调用该函数后c=5241。

*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);

填空:k N-1 temp

改错:fun(int a[][M], int m)

a[j][k]=(k+1)*(j+1);

6.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后c=2415。

*c = (b%10)*1000+(a/10)*100+(b/10)*10+a%10;

填空:struct student * a->score[i] a

改错:char *fun(char (*sq)[M])

return sp;

7.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后c=1425。

*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);

填空:0 x t++

改错:int i,s1; s后面是小写的L

t[i] = s[sl-i-1];

8.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12,调用该函数后c=4251。

*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);

填空:1 s i*10

改错:int fun(int n,int xx[][M])

printf("%d ",xx[i][j]);

类型二:与*号有关的操作

9.请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。

删除前导*号

int j=0; char *p = a ;

while(*p == '*') p++ ;

while(*p) { a[j++] = *p ; p++; }

a[j]=0 ;

填空:[N] t[i][j] t[j][i]

改错:#define FU(m,n) ((m)/(n))

return(value);

10.请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后的一个字母。

除尾部*号,其余*删除

char *q=a; int j=0;

while(*q && q

while(*p) a[j++]=*p++; a[j]=0;

填空:t[][N] i=0;i

改错: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++ ;

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.请编写函数fun,它的功能是:删除字符串中所有的*号。删除串中所有*号

int j =0 ; char *p=a;

while(*p)

{if(*p != '*') a[j++]=*p ; p++ ; }

a[j]=0;

填空:1 j++ j

改错:t=a;a=b;b=t;

return(b);

13.请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。

删除串尾*号

char *p = a ;

while(*p) p++ ; p-- ;

while(*p == '*') p-- ;

p++ ;

*p = 0 ;

填空:N i -1

改错:a2=k/10;

return i;

14.请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。

除前导*外其他删除*

int i=0,k;

while(a[i]=='*') i++;

k=i;

while(a[i]!='\0') { if(a[i] != '*') a[k++]=a[i]; i++; }

a[k]='\0';

填空:N k ss[i]

改错:int k=0;

while( *p || *q )

15.请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。

删除前导和尾部*

char *p=a ; int j=0,len=0;

while(*p) {p++; len++;}

while(j

填空:N substr 0

改错:fun(int x,int y, int z)

return j;

16.请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个

串尾部*号不多于n个

char *p=a ; int j=0;

while(*p) p++; p--;

while(*p == '*') p--; p++;

while(j

填空:a[i] % 2 a[j] j

改错:fun (int n)

if(n==1)

17.请编写函数fun,它的功能是:使字符串的前导*号不得多于n个

前导*不多于n个

int i=0,j,k=0;

while(a[k]=='*') k++;

if(k>n)

{ i=n;j=k;

for(; a[j] !=0 ; j++) a[i++]=a[j];

a[i] = 0; }

填空:M N 0

改错:t=1;

return(2*s);

18.请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

串前*移至串尾

char *p,*q; int n=0; p=a;

while(*p=='*') {n++; p++;}

q=a;

while(*p) { *q=*p; p++;q++; }

for(;n>0;n--) *q++='*';

*q='\0';

填空:a https://www.wendangku.net/doc/3414177736.html, score[i]

改错:s[j++]=s[i];

s[j]=0;

19.编写一个函数,从传入的num个字符串中找出最长的一个

字符串,并通过形参指针max传回该串地址

(用****作为结束输入的标志)。

int i,k=0,maxlen;

maxlen=strlen(a[k]);

for(i=1;i

{ if(strlen(a[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所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

下标奇数位置子母改大写

int i ;

for(i = 1 ; i < strlen(*ss) ; i+=2)

{

if(ss[i]>= 'a' && ss[i]<= 'z') ss[i]-=32;

}

填空:k N a[k][i]

改错:for( i = strlen( t )-1; i; i-- )

if(t[j]>t[j+1])

21.请编写—个函数void fun(char *ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

下标奇数位置子母改大写

char *p = ss ; int i = 0 ;

while(*p) {

if((i % 2) && (*p >= 'a' && *p <= 'z')) *p -= 32 ;

p++ ; i++ ; }

return ss ;

填空:NULL n head,ch

改错:for (i = 0,t = 0; p[i] ; i++)

c[t]= '\0';

22.请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。

下标为偶数字符删除

int i, j = 0 ;

for(i=1; i

t[j] = 0 ;

填空:data next head

改错:while(*r)

*a = *r; a++; r++;

23.编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。

除首尾外其余ASCII码降序

char ch ; int i, j ;

for(i = 1 ; i < 6 ; i++)

for(j = i + 1 ; j < 6 ; j++)

{ if(*(s + i) < *(s + j))

{ ch = *(s + j) ; *(s + j) = *(s +i) ; *(s + i) = ch ; } }

填空:ss[i] n+j 1

改错:if(* p == ' ' )

*(p-1) = toupper( *( p - 1 ) );

24.请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

ASCII码值为偶数删除

int i, j = 0 ;

for(i = 0 ; i < strlen(s); i++)

if(s[i] % 2) t[j++] = s[i] ;

t[j] = 0 ;

填空:STU std[i].num std[i]

改错:r++; p++;

if(*r==0)25.请编写函数fun,其功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

ASCII值为奇数删除

int i, j = 0 ;

for(i = 0 ; i < strlen(s); i++) if(s[i] % 2==0)

t[j++] = s[i] ;

t[j] = 0 ;

填空:s[i] k '\0'

改错:while(*w)

if( *r == *p )

26.请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除

除下标偶数同时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 ;

填空:*n next head

改错:a = NULL;

if(*r==*p)

27.请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除

除下标奇数同时ASCII码也为奇数外其余字符删除

int i, j = 0 ;

for(i = 1 ; i < strlen(s) ; i += 2)

if(s[i] % 2) t[j++] = s[i] ;

t[j] = 0 ;

填空:0 i++ 2.0*i

改错:void fun (char *s, char *t)

t[2*d]=0;

28.请编写函数fun,其功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。

将下标为偶数同时ASCII码为奇数删除

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 ;

填空:j k p

改错:while(i

if (*a)

103.请编写函数fun,函数的功能是查找x在s所指数组中下标的位置作为函数值返回,若x不存在,则返回-1

int i;

for(i=0;i

return -1;

填空:i%5 \n a[i]

改错:return t;

for(i=0;i

x[i+1]=findmid(a,b,c);

类型四:数组和矩阵操作

29.请编写函数fun,该函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

下标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] ;

填空:p->next q p->next

改错:while(*s)

s++;

30.请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。

删除一维数组相同的数

int i, j = 1, k = a[0] ;

for(i = 1 ; i < n ; i++)

if(k != a[i]) { a[j++]=a[i] ; k = a[i] ; }

a[j] = 0 ;

return j ;

填空:FILE * fclose(fp) fp

改错:t=(STU *)calloc(sizeof(STU),m);

t[k]=b[j];

31.请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。

找出一维数组最大值及其下标

int i ;

*max=a[0];*d = 0 ;

for(i = 1; i < n; i++)

if(*max < a[i]) { *max = a[i]; *d = i ; }

填空:1 2*i (-1)

改错:k++;

if (m == k )

32.请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。求数组最大元素及下标

int i, pos = 0, max = *s ;

for(i = 1 ; i < t ; i++)

{ if(max < *(s + i))

{ max = *(s + i) ; pos = i ; } }

*k = pos ;

填空:n++ 0 s++

改错:t+=s[k];

*ave=ave;

33.请编写函数fun(inta[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。

左下三角元素乘n

int i, j;

for(i = 0 ; i < N ; i++)

for(j = 0 ; j <= i; j++) a[i][j] *= n ;

填空:STU score[i] &std

改错:if(k>0)

else if(k==0)

34.请编写函数fun(int a[][N],int n),该函数的功能是:使数组右上半三角元素中的值乘以m。

右上三角元素同乘m

int i, j;

for(i = 0 ; i < N ; i++)

for(j = i ; j < N ; j++) a[i][j] *= m ;

填空:*av i x[j]

改错:float fun(int n)

for (i=2; i<=n; i++)

35.请编写函数fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。

左下三角元素置0

int i, j;

for(i = 0 ; i < N ; i++)

for(j = 0 ; j <= i; j++) a[i][j] = 0 ;

填空:*std PERSON std

改错:int k,q,i;

pt[i] = str[k][i] ;

36.请编一个函数求出二维数组每列中最小元素,并依次放入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] ; }

填空:*std std[i].age https://www.wendangku.net/doc/3414177736.html,

改错:void fun ( int*a, int*b )

t=*b;*b=*a;*a=t;

37.请编写一个函数fun,它的功能是:求出—个2×M整型二维数组中最大元素的值,并将此值返回调用函数。

求二维数组中最大元素的值

int i, j, max=a[0][0];

for(i=0; i<2; i++)

for(j=0; j

if(max

return max;

填空:3.0 > 2*i+1

改错:double fun (int n)

s = s + (double)a / b;

38.编写程序,实现矩阵(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] ;

填空:N break n

改错:sum=0;

scanf("%d",&a[i][j]);

39.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

按列顺序33 44 55 33 44 55

int i,j,np=0;

for(i = 0 ; i < nn ; i++)

for(j = 0 ; j < mm ; j++)

{ b[np] = s[j][i] ; np = i * mm + j + 1; }

*n=np;

填空:NODE * next r

改错:if(i%2 || s[i]%2==0)

t[j]=?\0?;

40.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中。

按行顺序33 33 33 33 44 44 44 44

int i, j, k ;

for(i = 0 ; i < mm ; i++)

for(j = 0 ; j < nn ; j++)

{k = i * nn + j ; b[k] = s[i][j] ; }

*n = mm * nn ;

填空:h->next p->next >

改错:p=h->next;

p=p->next;

41.请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

按列顺序wshwshwsh

for(j = 0 ; j < M ; j++)

{ b[n] = s[j][i] ; n = i * M + j + 1; }

填空:FILE * fp ch

改错:s[j++]=s[i];

s[j]='\0';.

42.请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。

数组周边元素的平均值

int i, j, n=0; double sum=0;

for ( i =0; i

sum+=w[0][i]+w[N-1][i]; n+=2; }

for ( i =1; i

{ sum +=w[i][0]+w[i][N-1]; n+=2; }

return sum/n;

填空:s/N j++ -1

改错:# include

upfst(char *p)

43.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。

二维数组周边元素之和

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 ;

填空:x[i]/N j++ i++

改错:num[k]=0;

switch(*s)

44.请编写函数fun,该函数的功能是:实现B=A+A’,即把矩阵A 加上矩阵A的转置,存放在矩阵B中。

B=A+A?

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] ; }

填空:&& '\0' s[j]

改错:for(i=2; i<=m; i++)

y+=1.0/(i*i);

类型五:学生分数操作

45.请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80。

n门课程平均分71.8

int i;

float ave=0.0;

for(i=0; i

ave=ave/n;

return ave;

填空:x p s

改错:long k=1;

num/=10 ;

46.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。

N名学生的成绩的平均分,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 ;

填空:char ch<='9' '0'

改错:b[k]=*p;

b[k++]= …?;

47.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。

8门课程平均分78.875

int i ;

for(i = 0 ; i < N ; i++)

a->ave = a->ave + a->s[i] ;

a->ave /= N ;

填空:a[i] a[j] a[j]

改错:switch(g)

case 1: case 2:return 1;

48.请编写函数fun,该函数的功能是:找出成绩最高的学生记录。

找出成绩最高学生纪录(规定只有一个最高分)

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] ;

填空:std[i].year std[i] n

改错:IsPrime ( int n )

if(!( n%i ))

49.请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中。

低于平均分的学生数据

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 ;

填空:*a 2 i+1

改错:sum=0.0;

if((i+1)%5==0)

50.请编写函数fun,它的功能是:把分数最高的学生数据放在b 所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高的学生的人数。

把分数最高学生数据放在b所指数组中,分数最高的学生可能不只一个

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 i a[p+i]

改错:float k;

if(*a<*c)

51.请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。

找出学生最高分由函数值返回

double max=h->s;

STREC *p;

p=h->next;

while(p)

{ if(p->s>max ) max=p->s;

p=p->next; }

return max;

填空:fp == fp

改错:n=strlen(aa) ;

ch=aa[i];

52.请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。低于平均分的人作为函数值返回

float av=0.0 ; int i, j=0 ;

for(i=0; i

av /= m;

for(i=0; i

if(av>score[i]) below[j++]=score[i];

return j;

填空:j 0 i++

改错:for(i=2; i<=m; i++)

y-=1.0/(i*i);

53.请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

高于等于平均分的学生数据

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 ;

填空:->sno ->name &t

改错:double fun(double a, double x0)

if( fabs(x1-x0)>0.00001 )

54.请编写函数fun,它的功能是:把分数最低的学生数据放在b 所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。

分数最低学生数据放在b所指数组

int i, j = 0, min=a[0].s ;

for(i = 0 ; i < N; i++) { 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] ; }

return j ;

填空:struct student https://www.wendangku.net/doc/3414177736.html, a.score[i]

改错:if(p==n) return -1;

a[i]=a[i+1];

55.请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

找出成绩最低学生纪录

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] ;

填空:0 x[i]/N j++

改错:double fun(int m)

for( i = 100;i <= m;i += 100 )

56请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

按分数高低排列学生纪录,高分在前

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; }

填空:999 t/10 x

改错:void fun (long s, long *t)

while(s>0)

57.请编写函数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 ;

填空:n/2 i a[n-i-1]

改错:n= *p-'0';

n=n*8+*p-'0';58.请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。

指定分数范围内的数据

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 ;

填空:struct student

n-1

a[i].name,a[j].name

改错:q=p+i;

while(q>p)

类型六:字符和字符串操作

59.请编写一个函数fun,它的功能是:比较两个字符串的长度,返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

返回较长字符串

int i; char *p=s, *q=t;

for(i=0;*p && *q; i++) { p++; q++; }

if(*p == 0 && *q == 0) return s ;

if(*p) return s ;

else return t ;

填空:next t->data t

改错:fun (char *a)

printf("%c" ,*a) ;60.编写函数fun,该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。

删除给定的字符

char *p = s ; int i = 0 ;

while(*p)

{ if(*p != c) s[i++] = *p ;

p++ ; }

s[i] = 0 ;

填空:k len ss[i][j]

改错:result *=n--;

result

61.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

求ss指定字符个数

int cnt = 0 ; char *p = ss ;

while(*p) {

if(*p == c) cnt++ ;

p++ ; }

return cnt ;

填空:j++ s[i]=t1[i] j

改错:for (j = i + 1;j < 6;j++)

*(pstr+i)=*(pstr+j);

62.请编写一个函数void fun(char *tt,int pp[]),统计在字符串中'a'到'z'26个字母各自出现的次数,并依次放在pp所指数组中。

统计26个字母出现次数

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 s[k] c

改错:long s = 0, t = 0 ;

t=t/10;

63.请编写一个函数void fun(char a[],char b[],int n),其功能是:删除一个字符串中指定下标的字符。

删除指定下标字符

strncpy(b, a, n) ;

b[n] = 0 ;

strcat(b, a + n + 1) ;

填空:t=i i '\0'

改错:while(fabs(t)>=num)

t=s/n;

64.请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。

统计一行串中单词个数

int k = 1 ;

while(*s) { if(*s == ' ') k++ ;

s++ ; } return k ;

填空:filename fp fp

改错:p=(NODE *)malloc(sizeof(NODE));

return h;

65.请编写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。

M个字符串合并成新串

int i; *b=0;

for(i = 0 ; i < M ; i++) strcat(b, a[i]) ;

填空:next 0 r

改错:r=t;

if(*r==0)

66.请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出N0。回文

int i, j = strlen(str) ;

for(i = 0 ; i < j / 2 ; i++)

if(str[i] != str[j - i - 1]) return 0 ; return 1 ;

填空:double f1 f2

改错:p=h->next;

p=p->next;

67.编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。

实现两个字符串连接

char *p=p1;

while(*p)p++;

while(*p2) *p++=*p2++;

*p=0;

填空:0 10*x n/10

改错:*t=0;

if(d%2!=0)

68.请编写一个函数,用来删除字符串中的所有空格。删除字符串中所有空格

char *p = str ;

int i = 0 ;

while(*p) {

if(*p != ' ') str[i++] = *p ;

p++ ; }

str[i] = 0 ;

填空:0 || 1

改错:t-=1.0/i;

return t;

69.请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。

字符串逆置

strrev(s);

填空:i+1 k=j t

改错:void fun(char *str, char ch)

if(*str!=ch)

str[1] = 0;

70.请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数-1234

数字字符串转换为整数

int i, len, t; long x=0; len=strlen(p);

if(p[0]=='-') { t=-1; len--; p++; } else t=1;

while(*p) x = x*10-48+(*p++);

填空:10 0 x

改错:if (n==0)

result *= n--;

71功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

1第m个字符移到串后

int i,j; char t; for(i=1;i<=m;i++) {t=w[0];

for(j=1;w[j]!='\0';j++) w[j-1]= w[j] ; w[j-1] =t; }

填空:double f1 f2

改错:char *fun(char *s,char *t)

ss++;

tt++;

72.编写一个函数,该函数可以统计一个长度为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 ;

填空:N len *n=len

改错:

t += 1.0/i;

return t;

101.请编写函数fun,其功能是:统计s所指字符串中的数字字符个数,并作为函数值返回。

数字字符个数

int n=0;char *p=s;

while(*p)

{if(*p>='0'&&*p<='9') n++;p++;}

return n;

填空:b[k] N/2 <

改错:int t[N] ,i, num=0;

t[num++]=b[i];

for(i=0; i

102.请编写函数fun,其功能是将形参s所指的字符串放入形参a所指的字符数组中,使a中存放同样的字符串。

while(*a++=*s++);a--;

填空:pb p->data p->next

改错:int i, one=0, zero=0;

switch( s[i] )

case 0:zero++;break;

104请编函数fun,其功能是将一个数字字符串转换成与其面值

相同的长整型整数。可调strlen函数求字符串长度。例如:在

键盘输入字符串2345210,函数返回长整型数2345210。

数字字符串转换为整数

int len, t; long x=0; len=strlen(s);

if(s[0]=='-') { t=-1; len--; s++; } else t=1;

while(*s) x = x*10-48+(*s++);

return x*t;

填空:0 t (t-1)*(t+2)/2

改错:b[i]=0;

b[a[i] - 'a']++;

if (b[max]

类型七:套用公式计算型

73.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n),

若n的值为11时,函数的值为1.833333。

int i,j,t; float s=0;

for(i=1;i<=n;i++)

{ t=0; for(j=1;j<=i;j++) t+=j; s=s+1./t; }

return s;

填空:'\0' 0 c

改错:double sum=0.0;

sum /= c;

74.编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。Xn+1=cos(Xn)

cos(x)-x=0的一个实根0.739085

float x0, x1=0.0;

do { x0=x1; x1=cos(x0);

} while(fabs(x0-x1)>0.000001);

return x1;

填空:i++ m m

改错:while ((high >= 2) && (n < 10) )

yes=0; break;

75.

若m的值为20,则fun函数值为6.506583。double s = 0.0 ; int i ;

for(i = 1 ; i <= m ; i++) s += log(1.0 * i) ;

s = sqrt(s) ;

return s ;

填空:0 j-- j

改错: double f( double x)

return s;

76.请编写函数fun,其功能是:计算并输出下列多项式值: Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!

若主函数从键盘给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 t

改错:for(i=1; i<=3; i++)

if(k>=0 && k<=6)

77.请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到|Sn-S(n-1)|<0.000001为止。Sn=1+0.5x+0.5(0.5-1)/2!x(2)+...+ 0.5(0.5-1)(0.5-2) .....(0.5-n+1)/n!x(n)

输入0.21后,则输出为s=1.100000。

double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1;

do{s0=s1;sum+=s0; t*=n;p*=(0.5-n+1)*x; s1=p/t;

n++;}while(fabs(s1-s0)>1e-6);

return sum;

填空:x n fabs(t)

改错:for(i=1; i<=y; i++)

t=t%1000;

78.请编写函数fun,其功能是:计算并输出下列多项式值: Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n)

若输入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;

填空:j=2 i j

改错:sum=j=0;

if(sum%4==2)

79.请编写函数fun,其功能是:计算并输出S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+ (1+2^0.5+3^0.5+……+n^0.5)

输入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;

填空:a a b

改错:c=c+32;

c=c+5;

80.编写函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。p=m!/n!(m-n)!。

m=12,n=8,运行结果为495.000000。

float p;

p=1.0*jc(m)/jc(n)/jc(m-n) ;

return p;

填空:*s s++ n

改错:int j, c=0; float xa=0.;

if (x[j] )>=xa)

81.编写函数fun,它的功能是:计算并输出下列级数和:S=1/1*2+1/2*3+...+1/n(n+1)

n=10时,函数值为0.909091。

double s = 0.0 ;

int i ;

for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ;

return s ;

填空:*s 1 k[n]

改错:double fun(int k)

return s;

82.请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。

S=1+x+!2

2

x

+!3

3

x

+……+!n

x n

当n=10,x=0.3时,函数值为1.349859。

double s = 1.0, y = x ; int i ;

for(i = 1 ; i <= n ; i++)

{ s += y / (double)jc(i) ; y *= x ; }

return s ;

填空:i ps[j] tp

改错:double fun(int n)

return sum;

83.请编写一个函数fun,它的功能是:根据以下公式求π的值求π的值

double s=1.0;

float n=1.0,t=1,pi=0;

while((fabs(s))>=eps)

{ pi+=s; t=n/(2*n+1); s*=t; n++;}

pi=pi*2; return pi;

填空:0 n t*t

改错:for(i = 0;str[i];i++)

if (substr[k+1]=='\0')84.请编写函数fun,其功能是:计算并输出下列多项式值:s=1+1/(1*2)+1/(1*2*3)+..1/(1*2*3 (50)

例如,若主函数从键盘给n输入50后,则输出为S=1.718282。double t,sn=1.0; int i,j;

for(i=1;i

{t=1.0; for(j=1;j<=i;j++) t*=j;sn+=1.0/t;}

return sn;

填空:n%10 break break

改错:if(t==0)

*zero=count;

类型八:求整除

85.请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数

能被7或11整除,但不能同时被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 ;

填空:s[i] '9' *t=n

改错:t=*x;*x=y;

return(t);

86.请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

能被7或11整除

int i ;

*n=0 ;

for(i=7 ; i<=m; i++)

if((i % 7 == 0) || (i % 11 == 0)) a[(*n)++]=i ; 填空:q next next

改错:p = j;

p = i;

87.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如,若n为1000时,函数值应为s=153.909064。

同时能被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) ;

填空:'0' s++ sum

改错:if ((k%13 == 0) || (k%17 == 0))

}

88.请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp 所指的数组中,这些除数的个数通过形参n返回。

能整除形参x且不是偶数的各整数

int i;

*n=0;

for(i=1; i <= x; i++)

if((x % i== 0) && (i % 2)) pp[(*n)++]=i;

填空:t,s s[i] '\0'

改错:if(i%k==0)

if (k == i)

89.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

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;

填空:a[i] a[i] 0

改错:y=1;

d=a-i;105请编写函数fun,其功能是:将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)。8.687500 double max,min,pjz;

int i;

max = min=a[0];

for(i=1;i

{if(max

if(min>a[i]) min=a[i]; }

for(i=0,pjz=0;i

return (pjz-max-min)/(n-2);

填空:a[i] m%10 m/10

改错:b[i]=a[i][0];

for (j=1; j

if ( b[i] >a[i][j] )

类型九:其它各类计算

90.请编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。

fibonacci

int f0 = 0, f1 = 1, f ;

do { f = f0 + f1 ;f0 = f1 ; f1 = f ; } while(f < t) ;

return f ;

填空:N N-1 0

改错:s=s+(n+1.0)/n;

return t;91.请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

大于1小于m的非素数

int i,j;*k=0;

for( i=2; i

for( j=2; j

if( i%j==0) { xx[(*k)++]=i; break;}

填空:M < k

改错:if((tt[i]>=?a? )&&( tt[i] <= 'z' ) )

tt[i] -= 32;

92.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。sum=148.874270。

3到n之间所有素数平方根之和

int i,j=0; double s=0;

for (i=3; i<=n; i++)

{ for (j=2; j

if (i%j == 0) break;

if (j == i) s=s+sqrt(i); }

return s;

填空:i t++ count

改错:int fun(int a,int b,int c)

else retrun 1;

93.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中

小于或等于lim所有素数

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;

填空:a[0][i] < x,y

改错:int fun(int *x,int *y)

t=*x;*x=*y;*y=t;

94.请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m 的k个素数存入xx所指的数组中。

大于整数m且紧靠m的k个素数

int i, j=0, t=m+1;

while(j<=k)

for( i=2;i

if(t%i==0) break;

if(i>=t) xx[j++]=t;

t++;

填空:s -- return 0

改错:double fun(int n)

c = a; a += b; b = c;

95.请编写一个函数unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w的后n-1位的数作为函数值返回

5923=〉923

if(w>10000) w %= 10000 ;

else if(w>1000) w %= 1000 ;

else if(w>100) w %= 100 ;

else if(w>10) w %=10 ;

return w ;

填空:tt tt.score[i] std

改错:m=i;

if(a[k]>a[m]) m=k;

96.请编写函数fun,其功能是:计算并输出给定10个数的方差: 方差S=11.730729

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 i

改错:k=i;

c=k%10;

97.请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。s=35.951014

相邻两元素平均值平方根之和

int i ;

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;

填空:x n t

改错:d=1; s=0;

d=d/10;

98.请编一个函数float fun(double h),函数的功能是对变量h 中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。

保留2位小数

long w ;

w = h * 100 + 0.5 ;

return (float) w / 100 ;

填空:48 s++ ctod(a)+ctod(b)

改错:void fun ( char *s, int* a, int *b )

*a=*a+1 ;

*b=*b+1;

99.请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。sum=763

整数n的所有因子

int s = 0, i ;

for(i = 2 ; i < n ; i++) if(n % i == 0) s +=i ;

return s ;

填空:&& …A? ch

改错:void fun(int *a)

a[j]=a[j-1];

100.请编写函数fun,该函数的功能是:统计各年龄段的人数。各年龄段的人数

int i, j ;

for(i = 0 ; i < M ; i++) b[i] = 0 ;

for(i = 0 ; i < N ; i++)

{ j = a[i] / 10 ;

if(j > 10) b[M - 1]++ ; else b[j]++ ; }

填空:“rb” > fwrite

改错:p=s;

while(*p++);

相关文档