上机题库100套.docx
《上机题库100套.docx》由会员分享,可在线阅读,更多相关《上机题库100套.docx(68页珍藏版)》请在冰豆网上搜索。
![上机题库100套.docx](https://file1.bdocx.com/fileroot1/2023-2/28/3ebf47fb-9b22-4e06-a74b-c04f8c57c814/3ebf47fb-9b22-4e06-a74b-c04f8c57c8141.gif)
上机题库100套
第一套:
(同教材的第49题)
给定程序中,函数fun的功能是:
将形参s所指字符串中所有的ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。
、
例如,形参s所指的字符串为:
Abc@1×56*,程序执行后t所指字符数组中的字符串应为:
A@156*。
填空:
(1)*s
(2)s++(3)n
改错:
(1)intj,c=0;floatxa=0.;
(2)if(x[j]>=xa)
编程:
floatfun(intm,intn)
{inti;
floatm1=1.0,n1=1.0,k=1.0;
for(i=1;i<=m;i++)m1*=i;
for(i=1;i<=n;i++)n1*=i;
for(i=1;i<=m-n;i++)k*=i;
returnm1/n1/k;
}
第二套:
给定程序中,函数fun的功能是:
在任意给定的9个正整数中找出按升序排列是处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。
例如,有9个正整数:
1572387582145
按升序排列时的中间数为:
8
处理后主函数中输出的数列为:
8882387882145。
填空:
(1)b[k]
(2)k(3)<
改错:
(1)intt[N],i,num=0;
(2)t[num++]=b[i];(3)for(i=0;i编程:
intn=0;
while(*s)
{if((*s>=’0’)&&(*s<=’9’))n++;
s++;
}
returnn;
第三套:
(同教材第90题)
给定程序中,函数fun的功能是:
将N×N矩阵主对角线元素中的值与反对角线对应位置上元素中的值进行交换。
例如,若N=3,有下列矩阵:
123
456
789
交换后为:
321
456
987
填空:
(1)t[][N]
(2)i=0;i改错:
(1)fun(inta[],intm)
(2)elseif(m>a[mid])
编程:
voidfun(char*a,char*p)
{char*q;
while(a
if(*a=='*')
{for(q=a;*q;q++)
*q=*(q+1);
p--;}
elsea++;
}
第四套:
(同教材第14套)
给定程序中,函数fun的功能是:
将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参s所指的字符串为:
abs5def126jkm8,程序执行后的输出结果为:
22。
填空:
(1)48
(2)s++(3)sum
改错:
(1)if((k%13==0)||(k%17==0))
(2)}
编程:
doublefun(intn)
{
inti;
doubles=0;
for(i=1;i{
if(i%3==0&&i%7==0)s+=i;
}
returnsqrt(s);
}
第五套:
(同教材第48题)
给定程序中,函数fun的功能是:
找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。
例如,形参s所指的字符串为:
abcAbsmaxless,程序执行后的输出结果为:
letter‘a’:
3times
letter‘s’:
3times
填空:
(1)*s
(2)1(3)k[n]
改错:
(1)floatfun(intk)
(2)returns;
编程:
doublefun(intn)
{
inti;
doubles;
for(i=1;i<=n;i++)
{s+=1.0/(i*(i+1));
}
returns;
}
第六套:
(同教材第46题)
给定程序中,函数fun的功能是:
将形参n中,各位上为偶数的数取出,并按原位从高位到低位的顺序组成一个新的数,并作为函数值返回。
例如,从主函数输入一个整数27638496,函数返回值为:
26846。
填空:
(1)1
(2)s(3)i*10
改错:
(1)intfun(intn,intxx[][M])
(2)printf("%d",xx[i][j]);
编程:
voidfun(inta,intb,long*c)
{
*c=a/10*1000+a%10*10+b/10+b%10*100;
}
第七套:
(同教材的第32题)
给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
填空:
(1)FILE*
(2)fp(3)ch
改错:
(1)s[j++]=s[i];
(2)s[j]=0;
编程:
voidfun(char(*s)[N],char*b)
{
inti,j,k=0;
for(i=0;ifor(j=0;j{
b[k]=s[j][i];
k++;
}
}
第八套:
函数fun的功能是:
输出a所指数组中的前n个个数据,要求每行输出5个数。
填空:
(1)i%5
(2)\n(3)a[i]
改错:
(1)returnt;
(2)for(i=0;i编程:
intI,k=-1;
for(i=0;i{if(*s==x)k=I;
s++;
}
returnk;
第九套:
(同教材第7题)
给定程序中,函数fun的功能是:
在3×4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。
例如:
有下列矩阵:
12134
78106
3597
程序执行结果为:
find:
a「2」「2」=9
填空:
(1)j
(2)0(3)i++
改错:
(1)for(i=2;i<=m;i++)
(2)y-=1.0/i/i;
编程:
intfun(intscore[],intm,intbelow[])
{
inti,j=0,s=0;
for(i=0;is/=m;
for(i=0;i{
if(score[i]
{
below[j]=score[i];
j++;
}
}
returnj;
}
第十套:
(同教材第15题)
给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据从头至尾的数据为:
10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:
2、4、6、8、10。
填空:
(1)h->next
(2)p->next(3)>=
改错:
(1)p=h->next;
(2)p=p->next;
编程:
voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
{
inti,j;
*n=0;
for(i=0;ifor(j=0;j{
b[*n]=s[i][j];
(*n)++;
}
}
第十一套(同教材第57题):
给定程序中,函数fun的功能是:
计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。
注意:
要求先累加主对角线元素中的值,然后累加反向对角线中的值。
例如,若N=3,有下列矩阵:
123
456
789
fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。
填空:
(1)sum=0
(2)t[i][i](3)1
改错:
(1)doubler;
(2)while(fabs(m-n)>0.001)
编程:
voidfun(char*a,char*h,char*p)
{
inti=0;
for(;a[i]=='*';i++)
a[i]='*';
while(h
{if(*h!
='*')
{a[i]=*h;
i++;}
h++;}
while(*h)
{a[i]=*h;
i++;
h++;
}
a[i]='\0';
}
第十二套:
(同教材第68题)
函数fun的功能是:
把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中最大值[1]元素中:
再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值在a[3];其余以此类推。
例如:
若a所指数组中的数据最初排列为:
1、9、2、8、3、7、4、6、5.形参n中存放a所指数组中数据的个数。
注意:
规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
填空:
(1)a[i]
(2)a[j](3)a[j]
改错:
(1)switch(g)
(2)case1:
return1;case2:
return1;
编程:
voidfun(STREC*a)
{
inti=0;
doublesum=0.0;
for(;i{
sum+=a->s[i];
}
a->ave=sum/N;
}
第十三套:
(同教材第25题)
给定程序中,函数fun的功能是计算下式
直到
并把计算结果作为函数值返回。
例如,若形参e的值为1e-3,函数的返回值2.985678。
填空:
(1)0
(2)i++(3)2.0*i
改错:
(1)voidfun(char*s,char*t)
(2)t[2*d]=0;
编程:
voidfun(char*s,chart[])
{
inti=0,j=0;
while(s[i])
{
if(i%2==1&&s[i]%2==1)
{
t[j]=s[i];
j++;
}
}
t[j]=0;
}
第十四套:
(同教材第62题)
给定程序中,函数fun的功能是:
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数数值返回,并把其串长放在形参n所指变量中。
Ss所指字符串数组中共有M个字符串,且串长<N。
填空:
(1)M
(2)<(3)k
改错:
(1)if(('a'<=tt[i])&&(tt[i]<='z'))
(2)tt[i]-=32;
编程:
voidfun(intm,int*k,intxx[])
{
inti,j,c=0;
for(i=2;i<=m;i++)
{
for(j=2;j
if(i%j==0)
{
xx[c]=i;
c++;
break;
}
}
*k=c;
}
第十五套:
(同教材第99题)
函数fun的功能是:
把形参a所指数组中的最大值放在a[0]中,接着求出a所指数中的最小值放在a[1]中,再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中;其他以此类推。
例如:
若a所指数组的数据9、1、8、2、7、3、6、4、5.形参n中存放a所指数组中数据的个数。
填空:
(1)*a
(2)2(3)i+1
改错:
(1)sum=0;
(2)if((i+1)%5==0)
编程:
doublefun(STREC*a,STREC*b,int*n)
{
inti,j;
doubleave,sum=0.0;
*n=0;
for(i=0;i{
sum+=a[i].s;
}
ave=sum/N;
for(i=0,j=0;i{
if(a[i].s<=ave)
{
b[j]=a[i];
j++;
(*n)++;
}
i++;
}
returnave;
}
第十六套:
(同教材第18题)
给定程序中,函数fun的功能是:
计算出形参s所指字符串中包含的单词个数,作为函数值返回。
为便于统计,规定各单词之间用空格隔开。
例如,形参s所指的字符串为:
ThisisaClangugeprogram,函数的返回值为6。
填空:
(1)n++
(2)0(3)s++
改错:
(1)t+=s[k];
(2)*aver=ave;
编程:
intfun(int*s,intt,int*k)
{
inti;
*k=0;
for(i=0;iif(s[i]>s[*k])*k=i;
}
第十七套:
(填空改错同教材第44题,编程同教材第40题)
给定程序中,函数fun的功能是:
将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数返回。
例如,输入一个整数:
27638496,函数返回值为:
64862。
填空:
(1)0
(2)10*x(3)n/10
改错:
(1)*t=0;
(2)if(d%2!
=0)
编程:
voidfun(charp1[],charp2[])
{
char*p,*q;
p=p1;
q=p2;
while(*p)p++;
while(*q)*p++=*q++;
*p='\0';
}
第十八套:
(同教材第37题)
给定程序中,函数fun的功能是:
将形参n所指变量中,各位上为偶数的数去除。
剩下的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如:
输入一个数:
27638496,新的数:
739。
填空:
(1)10
(2)0(3)x
改错:
(1)if(n==0)
(2)result*=n--;
编程:
longfun(char*p)
{
longi,s=0;
if(p[0]=='-')
{
i=1;
while(p[i])
{
s=s*10+p[i]-'0';
i++;
}
s*=-1;
}
else
{
i=0;
while(p[i])
{
s=s*10+p[i]-'0';
i++;
}
}
returns;
}
第十九套:
(同教材第36题)
给定程序中,函数fun的功能是计算下式
直到
并把计算结果作为函数值返回。
例如:
若形参e的值为1e-3,函数的返回值为0.551690。
填空:
(1)3.0
(2)>(3)(2*i+1)
改错:
(1)doublefun(intn)
(2)s=s+(double)a/b;
编程:
fun(inta[][M])
{
inti,s=a[0][0];
for(i=0;i{
if(a[0][i]>s)s=a[0][i];
if(a[1][i]>s)s=a[1][i];
}
returns;
}
第二十套(同教材第67题)
给定程序中,函数fun的功能是:
统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
例如,形参s所指的字符串为abcdef35adgh3kjsdf7。
输出结果为:
4。
填空:
(1)s[i]
(2)'9'(3)*t=n
改错:
(1)t=*x;*x=y;
(2)returnt;
编程:
voidfun(int*a,int*n)
{
inti=0,j=0;
*n=0;
for(;i<=1000;i++)
{
if(i%7==0||i%11==0)
{
if(i%7==0&&i%11==0)continue;
(*n)++;
a[j++]=i;}
}
return*n;
}
第二十一套(同教材第71题)
函数fun的功能是:
把形参a所指数组中的偶数按原顺序依次存放到a[0],a[1],a[2],……中,把奇数从数组中删除,偶数个数通过函数值返回。
例如:
若a所指数组中的数据最初排列为:
9,1,4,2,3,6,5,8,7,删除奇数后a所指数组中的数据为:
4,2,6,8,返回值为4。
填空:
(1)a[i]%2
(2)a[j](3)j
改错:
(1)fun(intn)
(2)if(n==1)
编程:
voidfun(char*a,intn)
{
inti=0,j=0,c,k;
while(a[i])
i++;
c=i;
while(a[i-1]=='*')
{
j++;
i--;
}
if(j>n)
{
k=j-n;
a[c-k]='\0';
}
}
第二十二套(同教材第29题)
给定程序中,函数fun的功能是:
计算下式前n项的和作为函数值返回。
例如,当形参n的值为10时,函数返回:
-0.204491。
填空:
(1)1
(2)2*i(3)(-1)
改错:
(1)k++;
(2)if(m==k)
编程:
voidfun(inta[],intn,int*max,int*d)
{
inti;
*d=0;
for(i=1;iif(a[i]>a[*d])*d=i;
*max=a[*d];
}
第二十三套(同教材第1题)
给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。
当调用正确时,程序输出:
xl=5.000000,
x2=3.000000,x1*x1+x1*x2=40.000000。
填空:
(1)double
(2)f1(3)f2
改错:
(1)char*fun(char*s,char*t)
(2)ss++;(3)tt++;
编程:
voidfun(char*w,intm)
{
chara[N];
inti;
for(i=0;iwhile(w[i]){w[i-m]=w[i];i++;}
i--;m--;
for(;m>=0;m--,i--)w[i]=a[m];
}
第二十四套:
(同教材第42题)
给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据域从头到尾的数据为:
10,4,2,8,6,排序后链表结点数据域从头到尾的数据为:
2,4,6,8.10。
填空:
(1)p->next
(2)q(3)p->next
改错:
(1)while(*s)
(2)s++;
编程:
voidfun(int*w,intp,intn)
{
inti,a[N];
for(i=0;i<=p;i++)a[i]=w[i];
for(i=0;ifor(i=0;i<=p;i++)w[n-(p+1)+i]=a[i];
}
第二十五套:
(同教材第4题)
给定程序中,函数fun的功能是:
将a所指4×3矩阵中第k行的元素与第0行元素交换。
例如,有下列矩阵:
123
456
789
101112
若k为2,程序执行结果为:
789
456
123
101112
填空:
(1)k
(2)N(3)a[k][i]
改错:
(1)for(i=strlen(t)-1;i;i--)
(2)if(t[j]>t[j+1])
编程:
voidfun(char*ss)
{
inti=1;
while(ss[i-1]&&ss[i])
{
if(ss[i]>='a'&&ss[i]<='z')ss[i]+='A'-'a';
i+=2;
}
}
第二十六套(填空改错同教材第13题,编程同教材第16题)
给定程序中,函数fun的功能是:
找出100—999之间(含有100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。
例如,当x值为5时,100—999之间各位上数字之和为5的整数有:
104,113,122,131,140,203,212,221,230,302,311,320,401,410,500.共有15个。
当x值为27时,各位数字之和为27的整数是:
999.只有1个。
填空:
(1)999
(2)t/10(3)x
改错:
(1)voidfun(longs,long*t)
(2)while(s>0)
编程:
intfun(STRECa[])
{
inti,j;
STRECb;
for(i=0;ifor(j=i+1;jif(a[i].s{b=a[i];a[i]=a[j];a[j]=b;}
}
第二十七套:
(同教材第38题)
给定程序中,函数fun功能是:
找出100至x(x<999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。
例如,当n值为500时,各位数字之和为15的整数有:
159,168,177,186,195,249,258,267,276,285,294,339,348,357,366,375,384,393,429,438,447,456,465,474,483,492.共有26个。
填空:
(1)0
(2)x(3)t++
改错:
(1)inti,sl;
(2)t[i]=s[sl-i-1];
编程:
voidfun(inta,intb,long*c)
{
*c=a/10*100+a%10+b/10*1000+b%10*10;
}
第二十八套:
(同教材第98题)
函数fun的功能是:
逆置数组元素中的值。
形参n给出数组中数据的个数。
例如,若a所指数组中的数据依次为:
1、2、3、4、5、6、7、8、9,则逆置后依次为:
9、8、7、6、5、4、3、2、1。
形参n给出数组中数据的个数。
填空:
(1)n/2
(2)i(3)a[n-i-1]
改错:
(1)n=*p-'0';
(2)n=n*8+*p-'0';
编程:
STRECfun(STREC*a,char*b)
{
STRECres;
inti;
for(i=0;i{
if(strcmp(a[i].num,b)==0)
{
res=a[i];
returnres;
}
}
strcpy(res.num,"");
res.s=-1;
returnres;
}
第二十九套:
(同教材第70题)
给定程序中,函数fun的功能是:
有N×N矩阵,根据给定的m(m≤N)值,将每行元素中的值均右移m个位置,左边值为0。
例如,N=3,m=2,有下列矩阵
123
456
789
程序执行结果为
001
004
007
填空:
(1)i++
(2)m(3)m
改错:
(1)while((2<=high)&&(n<10))
(2)yes=0;break;
编程:
doublefun()
{
floatx0,x1=0.0;
while
(1)
{x0=x1;
x1=cos(x0);
if(fabs(x0-x1)<1e-6)break;
}
retur