C语言上机模拟题无答案.docx
《C语言上机模拟题无答案.docx》由会员分享,可在线阅读,更多相关《C语言上机模拟题无答案.docx(23页珍藏版)》请在冰豆网上搜索。
C语言上机模拟题无答案
模拟试题
(一)
1.填空题
请补充函数fun(),该函数的功能是求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。
例如:
当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,
10.0,16.0},结果为:
avg=15.。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
doublefun(doublex[10])
{
inti;
longt;
doubleavg=0.0;
doublesum=0.0;
for(i=0;i<10;i++)
【1】;
avg=sum/10;
avg=【2】;
t=【3】;
avg=(double)t/100;
returnavg;
}
main()
{
doubleavg,x[10]={15.6,19.9,16.7,15.2,
18.3,12.1,15.5,11.0,10.0,16.0};
inti;
clrscr();
printf("\nTheoriginaldatais:
\n");
for(i=0;i<10;i++)
printf("%6.1f",x[i]);
printf("\n\n");
avg=fun(x);
printf("average=%f\n\n",avg);
}
2.改错题
下列给定程序中,函数fun()的功能是:
先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之积。
请改正函数fun()中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
intfun()
{
inta[3][3],mul;
inti,j;
mul=1;
for(i=0;i<3;i++)
{
/**********************found***********************/
for(i=0;j<3;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<3;i++)
/**********************found***********************/
mul=mul*a[i][j];
printf("Mul=%d\n",mul);
}
main()
{
fun();
}
3.编程题
请编写一个函数fun(),它的功能是:
将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。
例如,若输入ABC4efG,则应输出aBc4efg。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
voidfun(char*ss)
{
}
main()
{
chartt[81];
clrscr();
printf("\nPleaseenteranstringwithin80characters:
\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n\%s",tt);
fun(tt);
printf("\nbecomes\n\%s\n",tt);
}
模拟试题
(二)
1.填空题
请补充函数fun(),该函数的功能是:
分类统计一个字符串中元音字母和其他字符的个数(不区分大小写)。
例如,输入aeiouAOUpqrt,结果为A:
2E:
1I:
1O:
2U:
2other:
4。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#defineN100
voidfun(char*str,intbb[])
{
char*p=str;
inti=0;
for(i=0;i<6;i++)
【1】;
while(*p)
{
switch(*p)
{
case'A':
case'a':
bb[0]++;break;
case'E':
case'e':
bb[1]++;break;
case'I':
case'i':
bb[2]++;break;
case'O':
case'o':
bb[3]++;break;
case'U':
case'u':
bb[4]++;break;
default:
【2】;
}
【3】
}
}
main()
{
charstr[N],ss[6]="AEIOU";
inti;
intbb[6];
clrscr();
printf("Inputastring:
\n");
gets(str);
printf("thestringis:
\n");
puts(str);
fun(str,bb);
for(i=0;i<5;i++)
printf("\n%c:
%d",ss[i],bb[i]);
printf("\nother:
%d",bb[i]);
}
2.改错题
下列给定程序中函数fun()的功能是:
从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。
例如,当s中的数为时,t中的数为4725。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
/**********************found***********************/
intfun(longs,long*t)
{
longs1=10;
*t=s%10;
while(s>0)
{
/**********************found***********************/
s=s%100;
*t=s%10*s1+*t;
s1=s1*10;
}
}
main()
{
longs,t;
clrscr();
printf("\nPleaseenters:
");
scanf("%ld",&s);
fun(s,&t);
printf("Theresultis:
%ld\n",t);
}
3.编程题
请编写一个函数fun(),它的功能是:
求出一个4×M整型二维数组中最小元素的值,并将此值返回调用函数。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#defineM4
#include
fun(inta[][M])
{
}
main()
{
intarr[4][M]={11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7};
printf("min=%d\n",fun(arr));
}
模拟试题(三)
1.填空题
str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。
请补充函数fun(),该函数的功能是:
把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。
例如:
str=“Bcd123e456hui890”,结果为:
。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#defineN80
intbb[N];
intfun(chars[],intbb[],intnum)
{
inti,n=0;
for(i=0;i{
if(【1】)
{
bb[n]=【2】;
n++;
}
}
return【3】;
}
main()
{
charstr[N];
intnum=0,n,i;
printf("Enterastring:
\n");
gets(str);
while(str[num])
num++;
n=fun(str,bb,num);
printf("\nbb=");
for(i=0;iprintf("%d",bb[i]);
}
2.改错题
下列给定的程序中,函数fun()的功能是:
计算并输出k以内最大的6个能被7或11整除的自然数之和。
K的值由主函数传入,若k的值为500,则函数的值为2925。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
intfun(intk)
{
intm=0,mc=0,j;
/**********************found***********************/
while(k>=2)&&(mc<6)
{
/**********************found***********************/
if((k%7=0)||(k%11=0))
{
/**********************found***********************/
m=k;
mc++;
}
k--;
}
returnm;
}
main()
{
clrscr();
printf("%d\n",fun(500));
}
3.编程题
请编写函数fun(),它的功能是:
求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;kif((k+1)%10==0)
{
printf("%5d",aa[k]);
printf("\n");/*一行写10个数*/
}
else
printf("%5d",aa[k]);
}
模拟试题(四)
1.填空题
从键盘输入一组无符号整数并保存在数组xx[N]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量num传入函数fun()。
请补充函数fun(),该函数的功能是:
从数组xx中找出个位和十位的数字之和大于5的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。
例如:
当xx[8]={123,11,25,222,42,333,14,5451}时,
bb[4]={25,42,333,5451}。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#defineN1000
intfun(intxx[],intbb[],intnum)
{
inti,n=0;
intg,s;
for(i=0;i{
g=【1】;
s=xx[i]/10%10;
if((g+s)>5)
【2】;
}
return【3】;
}
main()
{
intxx[N];
intyy[N];
intnum=0,n=0,i=0;
printf("Inputnumber:
\n");
do
{
scanf("%u",&xx[num]);
}
while(xx[num++]!
=0);
n=fun(xx,yy,num);
printf("\nyy=");
for(i=0;iprintf("%u",yy[i]);
}
2.改错题
下列给定程序中,fun()函数的功能是:
根据形参m,计算下列公式的值。
t=1-1/2+1/3-1/4+…+(-1)(m+1)/m
例如,若输入5,则应输出0.。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
/**********************found***********************/
intfun(intm)
{
doublet=1.0,j=1.0;
inti;
/**********************found***********************/
for(i=1;i{j=-1*j;t+=j/i;}
returnt;
}
main()
{
intm;
clrscr();
printf("\nPleaseenter1integernumber:
");
scanf("%d",&m);
printf("\nTheresultis%lf\n",fun(m));
}
3.编程题
下列程序定义了N×N的二维数组,并在主函数中赋值。
请编写函数fun(),函数的功能是:
求出数组周边元素的平方和并作为函数值返回给主函数中的s。
例如:
若a数组中的值为
a=01279
1112155
2216111
979102
54141
则返回主程序后s的值应为310。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#defineN5
intfun(intw[][N])
{
}
main()
{
inta[N][N]={0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1};
inti,j;
ints;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{printf("%4d",a[i][j]);}
printf("\n");
}
s=fun(a);
printf("*****THERESULT*****\n");
printf("Thesumis:
%d\n",s);
}
模拟试题(五)
1.填空题
请补充函数fun(),该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回“yes!
”,否则返回“no!
”。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
char*fun(intn)
{
intg,s,b;
g=n%10;
s=n/10%10;
b=【1】;
if((g+b)==s)
return【2】;
else
return【3】;
}
main()
{
intnum=0;
clrscr();
printf("******Inputdata*******\n");
scanf("%d",&num);
printf("\n\n\n");
printf("******Theresult*******\n");
printf("\n\n\n%s",fun(num));
}
2.改错题
下列给定的程序中,函数fun()的功能是:
用选择法对数组中的n个元素按从大到小的顺序进行排序。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#defineN20
voidfun(inta[],intn)
{
inti,j,t,p;
/**********************found***********************/
for(j=0;j{
p=j;
for(i=j;iif(a[i]>a[p])
p=i;
t=a[p];
a[p]=a[j];
/**********************found***********************/
a[p]=t;
}
}
main()
{
inta[N]={11,32,-5,2,14},i,m=5;
printf("排序前的数据:
");
for(i=0;iprintf("%d",a[i]);
printf("\n");
fun(a,m);
printf("排序后的顺序:
");
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
3.编程题
输出9*9口诀。
程序分析:
分行与列考虑,共9行9列,i控制行,j控制列。
要求输出的乘法表和标准的乘法表相同,下列程序中请补入主要的部分。
#include"stdio.h"
voidmain()
{
inti,j,result;
printf("\n");
}
模拟试题(六)
1.填空题
请补充main函数,该函数的功能是:
从一个字符串中截取前面若干个给定长度的子字符串。
其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。
例如:
当str1=“cdefghij”,然后输入4,则str2=“cdef”。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
#include
#defineLEN80
main()
{
charstr1[LEN],str2[LEN];
intn,i;
clrscr();
printf("Enterthestring:
\n");
gets(str1);
printf("Enterthepositionofthestring
deleted:
");
scanf(【1】);
for(i=0;i【2】
str2[i]='\0';
printf("Thenewstringis:
%s\n",【3】);
}
2.改错题
下列给定程序中,函数fun()的功能是:
依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。
请改正程序中的错误,使它能得到正确结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
voidfun(char*s)
{
inti,j;
for(i=0,j=0;s[i]!
='\0';i++)
/**********************found***********************/
if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&s[i]<='z'))
s[j++]=s[i];
/**********************found***********************/
s[j]="\0";
}
main()
{
charitem[80];
clrscr();
printf("\nEnterastring:
");
gets(item);
printf("\n\nThestringis:
\%s\n",item);
fun(item);
printf("\n\nThestringofchangingis:
\%s\n",item);
}
3.编程题
下列程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N]),该函数的功能是:
使数组右上半三角元素中的值全部置成0。
例如a数组中的值为
a=456
179
326,
则返回主程序后a数组中的值应为
000
100
320
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#defineN5
intfun(inta[][N])
{
}
main()
{
inta[N][N],i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
fun(a);
printf