c语言上机考试模拟题.docx
《c语言上机考试模拟题.docx》由会员分享,可在线阅读,更多相关《c语言上机考试模拟题.docx(33页珍藏版)》请在冰豆网上搜索。
c语言上机考试模拟题
一.1.完成程序填空,实现输入一行字符,分别统计出其中的英文字母、空格、数字和
其他字符的数。
(P40/P91)
2.程序填空,实现找出1000之内的所有完数,并按如图所示格式输出其因子。
一个数如果恰好等于它的公约数之和,这个数就称为"完数"。
例如6=1+2+3。
6就是一个完数。
(P55)
3.完成程序填空,实现编程输出以下图案。
(P92)
*****
*****
*****
*****
*****
4.输出9*9口诀。
(P53)
5.编写函数fun将一个数组中的值按逆序存放,并在main()函数中输出。
例如:
原来存顺序为8,6,5,4,1。
要求改为:
1,4,5,6,8。
#include"stdio.h"
#defineN5
voidmain()
{voidfun(intarr[],intn);
inta[N]={8,6,5,4,1},i;
for(i=0;iprintf("%2d",a[i]);
printf("\n");
fun(a,N);
for(i=0;iprintf("%2d",a[i]);
}
voidfun(intarr[],intn)
{inti,t;
for(i=0;i{t=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=t;
}
}
6.功能:
编写程序,求矩阵(3行3列)与2的乘积
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
200400600
80010001200
140016001800
#include"stdio.h"
voidfun(intarray[3][3])
{/**********Program**********/
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
array[i][j]=array[i][j]*2;
/**********End**********/
}
voidmain()
{inti,j;
intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:
\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
7.功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{/**********Program**********/
inti,j;
for(j=0;j{pp[j]=tt[0][j];
for(i=0;iif(tt[i][j]/**********End**********/
}
voidmain()
{intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}};
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;i{for(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:
\n");
for(k=0;kprintf("%4d",p[k]);
printf("\n");
}
8.根据整型形参m,计算如下公式的值:
y=1/2+1/4+
1/6+...+1/2m。
例如:
若m=9,则应输出:
1.414484
#include"stdio.h"
doublefun(intn)
{/**********Program**********/
doubley=0;
inti;
for(i=1;i<=n;i++)
{y+=1.0/(2*i);}
或者
for(i=2;i<=2*n;i+=2)
y+=1.0/i;
return(y)/**********End**********/
}
voidmain()
{intm;
printf("Enterm:
\n");
scanf("%d",&m);
printf("Theresultis%f\n",fun(m));
}
二.1.完成程序填空,实现的功能是输出如下形式的方阵:
(P57)
13141516
9101112
5678
1234
2.完成程序填空,实现输入4个整数,要求按由小到大的顺序输出。
(P33)
3.完成程序填空,输出所有的水仙花数。
(P41)(P116)
4.将a++或++a或a--或--a填入程序填空中,实现如图所示的输出。
(填入其他无效)
#include
main()
{inti,a;
i=1;
a=i++;
/***********SPACE***********/
printf("a=%d,i=%d\n",a++,i++);
printf("a=%d,i=%d\n",a,i);
printf("a=%d,i=%d\n",++a,++i);
printf("a=%d,i=%d\n",a,i);
/***********SPACE***********/
printf("a=%d,i=%d\n",a--,i--);
/***********SPACE***********/
printf("a=%d,i=%d\n",--a,--i);
printf("a=%d,i=%d\n",a,i);
}
5.编写函数求3!
+6!
+9!
+12!
+15+18!
+21!
。
#include"stdio.h"
floatsum(intn)
{/**********Program**********/
inti,j;
floatt,s=0;
for(i=3;i<=n;i=i+3)
{t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+t;
}
return(s);/**********End**********/
}
voidmain()
{printf("thissum=%e\n",sum(21));}
%e格式默认输出有效数字7位,1位是整数,6位小数,指数3位(不足3位时填0)。
结果5.109734e+019
6.判断一个整数w的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。
#include"stdio.h"
#include"conio.h"
intfun(intw)
{/**********Program**********/
intk,s=0;
do
{s+=(w%10)*(w%10);
w=w/10;
}while(w!
=0);
if(s%5==0)k=1;
elsek=0;
return(k);/**********End**********/
}
voidmain()
{intm;
printf("Enterm:
\n");
scanf("%d",&m);
printf("Theresultis%d\n",fun(m));
}
7.功能:
对任意输入的x,用下式计算并输出y的值。
5x<10
y=0x=10
-5x>10
8.功能:
编写函数fun求sum=d+dd+ddd+……+dd...d(n个d),其中d为1-9的数字。
例如:
3+33+333+3333+33333(此时d=3,n=5),d和n在主函数中输入。
三、1.实现输入两个数a、b,判断如果a
按照先a后b的顺序输出即可。
2.完成程序填空,实现用冒泡排序法对从键盘输入的10个整型数据进行由小到大排序。
(P74)
3.完成程序填空,实现求s=1+3+5+……+99(P39)
4.实现求1+1/3+1/5+...之和,直到某一项的值小于10的-6次方时停止累加。
#include
intmain()
{longn;
floats;
s=0;
n=1;
/***********SPACE***********/
while(1.0/n>=1e-6)
{s=s+1.0/n;
/***********SPACE***********/
n=n+2;}
printf("s=%f\n",s);
printf("n=%d\n",n-2);
return0;
}
5.编写函数求1~100中奇数的平方和。
结果为166650。
#include"stdio.h"
floatsum(intn)
{/**********Program**********/
floats=0;
inti;
for(i=1;i<=n;i=i+2)
s=s+i*i;
return(s);/**********End**********/
}
voidmain()
{printf("sum=%.0f\n",sum(100));}
6.求一批数中小于平均值的数的个数。
#include
intaverage_num(inta[],intn)
{/**********Program**********/
inti,k=0,sum=0;
floataverage;
for(i=0;isum=sum+a[i];
average=sum*1.0/n;
for(i=0;iif(average>a[i])k++;
return(k);/**********End**********/
}
voidmain()
{intn,a[100],i,num;
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
num=average_num(a,n);
printf("thenumis:
%d\n",num);
}
7.对某一正数的值保留2位小数,并对第三位进行四舍五入。
#include"stdio.h"
#include"conio.h"
floatfun(floath)
{/**********Program**********/
inti;
i=(int)(h*1000)%10;
if(i>=5)
return(int)(h*100+1)/100.0;
else
return(int)(h*100)/100.0;/**********End**********/
}
voidmain()
{floatm;
printf("Enterm:
\n");
scanf("%f",&m);
printf("\nTheresultis%8.2f\n",fun(m));
}
四、1.完成程序填空,实现以下功能:
一个小球从100米高度自由下落,每次落地后反跳回原来高度的一半,再下落,求它在第十次下落时,共经过多少米,第十次反弹多高?
(P43)
2.完成程序填空,使得程序执行如图所示:
(P13)
#include
main()
{inti,a,b;
floatx,y,z;
i=1;
/***********SPACE***********/
x=++i;
/***********SPACE***********/
printf("x=%f\ni=%d\n",x,i);
y=30.1234567;
z=x+y;
printf("z=%f\n",z);
printf("z=%4.2f\n",z);
/***********SPACE***********/
printf("z=%6.2f\n",z);
printf("z=%15.8f\n",z);
printf("z=%e\n",x+y);
}
3.完成填空,实现运行程序如图所示。
(P13)
#include
main()
{chara,b,c;
/***********SPACE***********/
a=66;//a='B'
b='O';
c='Y';
putchar(a);
/***********SPACE***********/
putchar(b);
putchar(c);
/***********SPACE***********/
putchar('\n');//printf("\n")
}
4.实现输出所有的水仙花数,所谓水仙花数是一个3位数,其各位数字的立方和等于该数本身。
例如153=13+53+33,故153是一个水仙花数。
(P116)
5.功能:
计算并输出给定整数n的所有因子之和(不包括1与自身)。
(假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。
)注意:
n的值不大于1000。
例如:
n的值为855时,应输出704。
#include"stdio.h"
intfun(intn)
{
ints=0,i;
for(i=2;iif(n%i==0)s=s+i;
returns;
}
main()
{printf("s=%d\n",fun(855));}
五、1.完成程序填空,实现输出以下图案:
(P69/P49)
*
***
*****
*******
2.完成程序填空实现输入三个数,按代数值由大到小输出。
3.完成程序填空,实现打印下列的图形(P70)
123456789
23456789
3456789
456789
56789
6789
789
89
9
4.完成程序填空,实现输入两个数字,若两数相等,则直接输出两个数字,若不相等,
则这两个数中的较大者等于这个较大者减去较小者,再作比较,若不相等则重复上述操作,
直到两个数字相等为止。
输出相等的两个数字。
#include
intmain()
{inta,b;
printf("Entera,b:
");
scanf("%d,%d",&a,&b);
/***********SPACE***********/
while(a!
=b)
/***********SPACE***********/
{if(a>b)
a=a-b;
/***********SPACE***********/
if(b>a)
b=b-a;
}
printf("%3d%3d\n",a,b);
return0;
}
5.功能:
能计算从1开始到n的自然数中偶数的平方的和,n由键盘输入,并在main()函数中输出。
(n是偶数)
#include"stdio.h"
intfun(intn)
{/**********Program**********/
intsum=0,i;
for(i=2;i<=n;i=i+2)
sum+=i*i;
return(sum);/**********End**********/
}
voidmain()
{intm;
printf("Enterm:
");
scanf("%d",&m);
printf("\nTheresultis%d\n",fun(m));
}
6.从键盘上输入任意实数,求出其所对应的函数值。
z=e的x次幂(x>10)
z=log(x+3)(x>-3)
z=sin(x)/((cos(x)+4)
#include
#include
doubley(floatx)
{/**********Program**********/
doublez;
if(x>10)z=exp(x);
elseif(x>-3)z=log(x+3);
elsez=sin(x)/(cos(x)+4);
return(z);
/**********End**********/
}
voidmain()
{floatx;
scanf("%f",&x);
printf("y=%f\n",y(x));
}
7.编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符(注意:
str[0]代表字符串的第一个字符)。
(P123)
8功能:
根据整型形参m,计算如下公式的值:
y=sin(m)*10。
例如:
若m=9,则应输出:
4.121185
#include"stdio.h"
#include"math.h"
doublefun(intm)
{/**********Program**********/
doubley=0;
y+=sin(m)*10;
returny;
/**********End**********/
}
voidmain()
{intn;
printf("Entern:
");
scanf("%d",&n);
printf("\nTheresultis%1f\n",fun(n));
}
六、1.程序填空,实现求两数最小公倍数(P27)
2.有一个已排好的数组,完成程序填空,实现要求输入一个数后,按原来排序的规律将它插入到数组中。
#include
#defineN10
intmain()
{inta[N+1]={-73,-67,-54,0,32,84,86,90,234,312};
intnum,i,left,right,mid,find=0;//find=0,未找到;find=1,找到。
left=0;right=N-1;
printf("pleaseinput:
");
scanf("%d",&num);
/***********SPACE***********/
while(find【?
】/==0&&left<=right)
{mid=(left+right)/2;
if(num>a[mid])
left=mid+1;
elseif(numright=mid-1;
elsefind=1;
}
if(find==1)
{for(i=N-1;i>=mid;i--)
/***********SPACE***********/
a[i+1]=【?
】/a[i];
a[mid]=num;}
else
/***********SPACE***********/
{for(i=N-1;i>=left;【?
】/i--)
a[i+1]=a[i];
a[left]=num;}
printf("afterinsert,thearrayis:
\n");
for(i=0;iprintf("%4d",a[i]);
printf("\n");
return0;
}
3.将字母转换成密码,转换规则是将当前字母变成其后的第四个字母,但W变成A、X变成B、Y变成C、Z变成D。
小写字母的转换规则同样。
#include
main()
{charc;
/***********SPACE***********/
while((c=【?
】/getchar())!
='\n')
{/***********SPACE***********/
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))【?
】/c=c+4;
/***********SPACE***********/
if((c>'Z'【?
】/&&c<='Z'+4)||c>'z')c-=26;
printf("%c",c);
}
}
4.完成程序填空,输出如下数阵:
1
121
12321
1234321
123454321
5.能计算从1开始到n的自然数中偶数的平方的和,n由键盘输入,并在main()函数中输出。
(n是偶数)
6.功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{/**********Program**********/
inti,j;
for(j=0;j{pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];
}
/**********End**********/
}
voidmain()
{
intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}};
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;i{
for(j=0;j