3题库.docx
《3题库.docx》由会员分享,可在线阅读,更多相关《3题库.docx(13页珍藏版)》请在冰豆网上搜索。
3题库
类型一删除*号与空格问题
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&&pa[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;i29.请编写函数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(qwhile(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;ifor(j=i+1;jif(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;iif(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;ifor(i=1;ireturnsum;
改错:
[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;ifor(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;ifor(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;ifor(j=0;jb[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;ifor(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;iif(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;jif(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;jif(maxreturnmax;
改错:
[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;iif(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;ip->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;jfor(i=0;iif(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;iif(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;iif(maxfor(i=0;iif(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;iav=av+a[i].s;
av=av/N;
for(i=0;iif(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(maxif(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]i7.请编写一个函数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