C的题库.docx

上传人:b****7 文档编号:10905980 上传时间:2023-02-23 格式:DOCX 页数:13 大小:24.84KB
下载 相关 举报
C的题库.docx_第1页
第1页 / 共13页
C的题库.docx_第2页
第2页 / 共13页
C的题库.docx_第3页
第3页 / 共13页
C的题库.docx_第4页
第4页 / 共13页
C的题库.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C的题库.docx

《C的题库.docx》由会员分享,可在线阅读,更多相关《C的题库.docx(13页珍藏版)》请在冰豆网上搜索。

C的题库.docx

C的题库

类型一删除*号与空格问题

13.编写函数fun,它的功能是:

使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。

inti=0,k=0;char*p,*t;

p=t=a;

while(*t)t++;

t--;

while(*t==’*’){k++;t--;}

t++;

if(k>n)

{while(*p&&p

a[i]='\0';}

改错:

[1]intfun(intn)[2]if(n==1)

填空:

[1]a[i]%2[2]a[j][3]j

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

例如,输入asdafaaz67,则输出为asdafaaz67。

char*p=str;

for(;*str;str++)

if(*str!

='')*p++=*str;

*p='\0';

改错:

[1]t-=1.0/i;[2]returnt;

填空:

[1]0[2]||[3]1

21.请编写函数fun,它的功能是:

除了尾部的*号之外,将字符串中其他*号全部删除。

char*t=a;

for(;t<=p;t++)

if(*t!

='*')*(a++)=*t;

for(;*t!

='\0';t++)*(a++)=*t;

*a='\0';

改错:

[1]intfun(inta[],intm)

[2]elseif(m>a[mid])

填空:

[1]t[N][N][2]i=0;i

29.请编写函数fun,它的功能是:

删除字符串中所有的*号。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是ABCDEFG。

inti,j=0;

for(i=0;a[i]!

='\0';i++)

if(a[i]!

='*')a[j++]=a[i];

a[j]='\0';

改错:

[1]t=a;a=b;b=t;[2]return(b);

填空:

[1]1[2]j++[3]j

38.请编写函数fun,它的功能是:

除了字符串前导和尾部的*号之外,将串中其他*号全部删除。

例如,若字符串中的内容为****A*BC*DEF*G********,删除后,字符串中的内容则应当是****ABCDEFC********。

inti=0;char*q=a;

while(q

while(q

{if(*q!

='*'){a[i]=*q;i++;}

q++;}

while(*q){a[i]=*q;i++;q++;}

a[i]='\0';

改错:

[1]doubler;[2]while(fabs(n-m)>0.001)

填空:

[1]sum=0[2]t[i][i][3]1

39.请编写函数fun,它的功能是:

将字符串中的前导*号全部删除,中间和尾部的*号不删除。

例如,若字符串中的内容为*******A*BC*DEF*G****,删除后,字符串中的内容则应当是A*BC*DEF*G****。

char*p=a;

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

for(;*p!

='\0';p++,a++)*a=*p;

*a='\0';

改错:

[1]#defineFU(m,n)(m)/(n)

[2]return(value);

填空:

[1][N][2]t[i][j][3]t[j][i]

类型二公式计算问题

4.编写函数fun,它的功能是:

利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。

Xn+1=cos(Xn)

程序将输出结果Root=0.739085。

floatx0,x1=0;

do{x0=x1;

x1=cos(x0);}while(fabs(x0-x1)>1e-006);

returnx1;

改错:

[1]while((high>=2)&&(n<10))

[2]yes=0;break;

填空:

[1]i++[2]m[3]m

14.请编写函数fun,它的功能是:

求Fibonacci数列中大于t的最小的一个数,结果由函数返回。

其中Fibonacci数列F(n)定义为:

F(0)=0,F

(1)=1,F(n)=F(n-1)+F(n-2)

例如:

当t=1000时,函数值为1597。

inti,s=0;

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

s=f(i);

returns;

改错:

[1]s=s+(double)(n+1)/n;[2]returnt;

填空:

[1]N[2]N-1[3]0

30.请编写函数fun,它的功能是计算:

s=(ln

(1)+ln

(2)+1n(3)+…+ln(m))/0.5。

s作为函数值返回。

例如,若m的值为20,则fun函数值为6.506583。

doublei;doubler,s;doublelog(doublei);

for(i=1;i<=m;i++)r=r+log(i);

return(sqrt(r));

改错:

[1]doublef(doublex)[2]returns;

填空:

[1]0[2]j--[3]j

35.编写函数fun,函数的功能是:

根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。

s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n),例如:

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

inti,sum=1;

floats=1;

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

{sum=sum+i;

s=s+1.0/sum;}

改错:

[1]doublesum=0.0;[2]sum/=c;

填空:

[1]'\0'[2]0[3]s[i]

类型三下标或ASCII码问题

2.请编写函数fun,其功能是:

将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

inti=0;

for(;*s!

='\0';s++)

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

t[i]='\0';

改错:

[1]r++;p++;[2]if(*r=='\0')

填空:

[1]STU[2]std[i].num[3]std[i]

 

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

例如,若原来的字符串为CEAedca,则排序后输出为CedcEAa。

inti,j,t;

for(i=1;i

for(j=i+1;j

if(s[i]

{t=s[i];s[i]=s[j];s[j]=t;}

改错:

[1]if(*p=='')[2]*(p-1)=toupper(*(p-1));

填空:

[1]ss[i][2]n+j[3]1

10.请编写函数fun,其功能是:

将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。

inti,j=0,n=strlen(s);

for(i=0;i

if(i%2==0&&s[i]%2!

=0);

else{t[j]=s[i];j++;}

t[j]='\0';

改错:

[1]while(i

填空:

[1]j[2]k[3]p

类型四数组和矩阵问题

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

二维数组中的值在主函数中赋予。

例如:

若二维数组中的值为

13579

29994

69998

13570,则函数值为61。

intsum=0,i;

for(i=0;i

for(i=1;i

returnsum;

改错:

[1]num[k]=0;[2]switch(*s)

填空:

[1]x[i]/N[2]j++[3]i++

12.下列程序定义了N×N的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][N]),该函数的功能是:

使数组左下半三角元素中的值全部置成0。

inti,j;

for(i=0;i

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

a[i][j]=0;

改错:

[1]intk,q,i;[2]pt[i]=str[k][i];

填空:

[1]std[][2]PERSON[3]std

17.请编写函数fun,该函数的功能是:

实现B=A+A’,即把矩阵A加上矩阵A的转置,存放在矩阵B中。

计算结果在main函数中输出。

inti,j;

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

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

b[i][j]=a[i][j]+a[j][i];

改错:

[1]for(i=2;i<=m;i++)[2]y+=1.0/(i*i);

填空:

[1]&&[2]'\0'[3]s[j]

20.下列程序定义了NXN的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][N],intn),该函数的功能是:

使数组右上半三角元素中的值乘以m。

inti,j;

for(i=0;i

for(j=N-1;j>=i;j--)

a[i][j]*=m;

改错:

[1]floatfun(intn)[2]for(i=2;i<=n;i++

填空:

[1]*av[2]I[3]x[j]

23.请编写函数fun,该函数的功能是:

将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

则字符串中的内容应是WSHWSHWSH。

inti,j,k=0;

for(i=0;i

for(j=0;j

b[k]='\0';

改错:

[1]s[j++]=s[i];[2]s[j]=‘\0’;

填空:

[1]FILE*[2]fp[3]ch

26.下列程序定义了N×N的二维数组,并在主函数中赋值。

请编写函数fun,函数的功能是:

求出数组周边元素的平均值并作为函数值返回给主函数中的s。

inti,t=0;

doubles=0;

for(i=0;i

{s+=w[i][0]+w[i][N-1];t+=2;}

for(i=1;i

{s+=w[0][i]+w[N-1][i];t+=2;}

s=s/t;

returns;

改错:

[1]#include“stdio.h”[2]upfst(char*p)

填空:

[1]s/N[2]j++[3]-1

28.编写程序,实现矩阵(3行3列)的转置(即行列互换)。

inti,j,t;

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

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

{t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}

改错:

[1]sum=0[2]scanf("%d",&a[i][j]);

填空:

[1]N[2]break[3]n

42.程序定义了N×N的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][N],intn),该函数的功能是:

使数组左下半三角元素中的值乘以n。

inti,j;

for(i=0;i

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

改错:

[1]if(k>0)[2]elseif(k==0)

填空:

[1]STU[2]score[i][3]&std

43.请编写函数fun,该函数的功能是:

删去一维数组中所有相同的数,使之只剩一个。

数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

inti,j=1;

for(i=1;i

if(a[j-1]!

=a[i])a[j++]=a[i];

returnj;

改错:

[1]t=(STU*)malloc(sizeof(STU));

[2]t[k]=b[j];

填空:

[1]FILE*[2]floes(fp)[3]fp

48.请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。

inti,j;

for(i=0;i

{pp=tt[0][i];

for(j=0;j

if(tt[j][i]

改错:

[1]voidfun(int*a,int*b)

[2]t=*b;*b=*a;*a=t;

填空:

[1]std[0][2]std[i].age[3]max.name

50.编写一个函数fun,它的功能是:

求出—个2×M整型二维数组中最大元素的值,并将此值返回调用函数。

inti,j,max=a[0][0];

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

for(j=0;j

if(max

returnmax;

改错:

[1]voidfun(char*s,char*t)

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

填空:

[1]a[i]%2[2]a[j][3]j

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

inti,t=0;

for(i=0;i

{if(s[i]==x){t=i;break;}

elset=-1;}

改错:

[1]returnt;

[2]for(i=0;i

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

填空:

[1]i%5[2]\n[3]a[i]

类型五分数计算、结构体问题

15.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

函数返回指定学号的学生数据,指定的学号在主函数中输入。

若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。

inti;

STRUCstr={"\0",-1};

for(i=0;i

if(strcmp(a[i].num,b)==0)str=a[i];

returnstr;

改错:

[1]n=*p-'0';[2]n=n*8+*p-'0';

填空:

[1]n/2[2]a[n-1-i];[3]a[n-1-1]

32.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。

请编写函数fun,它的功能是:

求出平均分,由函数值返回。

例如,若学生的成绩是85,76,69,85,91,72,64,87;则平均分应当是78.625。

doubleav=0.0;

STRUC*p=h->next;

while(p!

=NULL)

{av=av+p->s;

p=p->next;}

returnav/N;

改错:

[1]b[k]=*p;[2]b[k++]='';

填空:

[1]char[2]ch<='9'[3]'0'

33.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。

请编写函数fun,它的功能是:

求出该学生的平均分放在记录的ave成员中。

请自己定义正确的形参。

例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。

inti;

p->ave=0.0;

for(i=0;i

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

p->ave=p->ave/N;

改错:

[1]switch(g)[2]case1:

case2:

return1;

填空:

[1]a[i][2]a[j][3]a[j]

44.请编写函数fun,该函数的功能是:

统计各年龄段的人数。

N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依此类推,把100岁(含100)以上年龄的人数都放在d[10]中。

结果在主函数中输出。

inti,j;

for(j=0;j

for(i=0;i

if(a[i]>=100)b[10]++;

elseb[a[i]/10]++;

改错:

[1]p=s;[2]while(*p++);

填空:

[1]filename[2]SEEK_END[3]&n

45.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。

请编写函数fun,该函数的功能是:

找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

intk,i;

(*s).s=a[0].s;

for(i=0;i

if(a[i].s<(*s).s){(*s).s=a[i].s;k=i;}

strcpy((*s).num,a[k].num);

改错:

[1]intfun(intm)

[2]for(i=100;i<=m;i+=100)

填空:

[1]0[2]x[i]/N[3]j++

46.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把分数最高的学生数据放在h所指的数组中,注意:

分数最高的学生可能不只一个,函数返回分数最高的学生的人数。

inti,j=0,max=a[0].s;

for(i=0;i

if(max

for(i=0;i

if(max==a[i].s)b[j++]=a[i];

returnj;

改错:

[1]floatk;[2]if(*p<*s)

填空:

[1]2+1[2]i[3]p+i

47.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:

把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。

inti,j=0;

doubleav=0.0;

for(i=0;i

av=av+a[i].s;

av=av/N;

for(i=0;i

if(a[i].s

*n=j;

returnav;

改错:

[1]sum=0.0;[2]if((i+1)%5==0)

填空:

[1]*a[2]2[3]i+1

34.编写函数fun,功能是:

将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。

函数形参a指向得分的数组,形参n中存放得分个数(n>2)。

例如,输入9.98.57.68.59.39.58.97.88.68.4十个得分,则输出结果为:

8.687500。

doublemax,min,sum=0.0,avg=0.0;

inti;

max=min=a[0];

for(i=0;i

{if(max

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

sum=sum+a[i];}

avg=(sum-max-min)/(n-2);

returnavg;

改错:

[1]b[i]=a[i][0];[2]if(b[i]>a[i][j])

填空:

[1]a[i][2]m%10[3]m/10

类型六字符和字符串问题

1.请编写函数fun,它的功能是:

求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符1,则输出3

intnum=0;

while(*ss!

='\0'){if(*ss==c)num++;ss++;}

return(num);

改错:

[1]for(j=i+1;j<6;j++)[2]*(pstr+i)=*(pstr+j);

填空:

[1]j++[2]s[i]=t1[i][3]i

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

例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:

33322110000000000000000000。

inti;

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

pp[i]=0;

for(;*tt;tt++)

if(*tt<='z'&&*tt>='a')pp[*tt-97]++;

改错:

[1]longs=0,t=0;[2]t=t/10;

填空:

[1]n-1[2]s[k][3]c

19.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。

例如,假定输入的字符串为:

asdasasdfgasdaszx67asdmklo,子字符串为as,则应输出6。

inti,n=0,s=strlen(str);

for(i=0;i

if((str[i]==substr[0])&&(str[i+1]==substr[1]))n++;

returnn;

改错:

[1]t+=1.0/i;[2]returnt;

填空:

[1]N[2]len[3]*n=len;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1