C语言上机题参考答案Word下载.docx
- 文档编号:17282983
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:30
- 大小:21.13KB
C语言上机题参考答案Word下载.docx
《C语言上机题参考答案Word下载.docx》由会员分享,可在线阅读,更多相关《C语言上机题参考答案Word下载.docx(30页珍藏版)》请在冰豆网上搜索。
z'
)
ch-=32;
putchar(ch);
4、输入三个整数,然后输出最大值。
123
3
if(a<
b)a=b;
c)a=c;
a);
5、输入一个三位正整数x,根据十位上的数输出如下:
┌百位(十位上的数是奇数)
输出=┤
└个位(十位上的数是偶数)
示例1:
123
{inta;
a);
if(a/10%2)printf("
a/100);
elseprintf("
a%10);
6、计算分段函数,输入x(整数),输出y(整数):
┌2x+1(x<
1)
y=│4x+3(x=1)
└6x+5(x>
1
7
{intx,y;
if(x<
1)y=2*x+1;
if(x==1)y=4*x+3;
if(x>
1)y=6*x+5;
y);
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
{inti,j,n;
n);
for(i=1;
i<
=n;
i++)
{for(j=1;
j<
=i;
j++)
*"
);
\n"
}
8、编程输出n行图形(n值通过键盘输入),
*
**
***
****
*
**
***
****
*****
******
#include<
{inti,j,k,n;
=n-i;
"
for(k=1;
k<
k++)
9、编程输出n行图形(n值通过键盘输入),
*****
*******
*********
*******
*********
***********
=2*i-1;
10、编程输出n行图形(n值通过键盘输入),
=n-i+1;
11、编程输出n行图形(n值通过键盘输入),
四、循环
12、输入若干字符(回车'
\n'
为止),统计数字字符、大写字母、小写字母和其它字符的个数。
示例
1ABabc@#%!
输出:
(共四个数,它们是:
数字字符个数大写字母个数小写字母个数其它字符个数)
1234
intsz=0,dx=0,xx=0,qt=0;
while((ch=getchar())!
{if(ch>
0'
9'
)sz++;
elseif(ch>
A'
Z'
)dx++;
)xx++;
elseqt++;
%d%d%d%d\n"
sz,dx,xx,qt);
13、计算级数和s=1/(1*3)+2/(3*5)+3/(5*7)+....+n/((2*n-1)*(2*n+1))。
(n从键盘输入,保留3位小数)
输入:
2
0.467
{inti,n;
doubles=0;
s+=1.0*i/((2*i-1)*(2*i+1));
%.3f"
s);
14、计算s=1-1/3+1/5-1/7+1/9-...前n项和。
(n从键盘输入,保留2位小数)。
0.67
s+=1.0/(2*i-1)*(i%2?
1:
-1);
15、计算级数2/1,3/2,5/3,8/5,13/8,21/13,...前n项之和。
3.500
doublea=2,b=1,t,s=0;
{s+=a/b;
t=a;
a=a+b;
b=t;
%.3f\n"
16、输入一个a>
=6的偶数,输出满足a=b+c素数对b和c,这里b和c是素数,且b<
=c。
6
33
示例2:
10
(按b由小至大输出)
37
55
{inta,b,c,i;
for(b=2;
b<
=a/2;
b++)
{for(i=2;
b;
if(b%i==0)break;
if(i==b)
{c=a-b;
for(i=2;
c;
if(c%i==0)break;
if(i==c)
printf("
%d%d\n"
b,c);
五、一维数组
17、输入不多于500个大于0的整数到一维数组(当输入的数为0时结束输入),
然后降序排序,最后将奇数输出。
输出格式为:
下标值整数
...
123450
05
23
41
*/
{inta[500],i,j,t,n=0;
a[n]);
while(a[n]!
=0)
{n++;
for(i=0;
n-1;
for(j=0;
if(a[j]<
a[j+1])
t=a[j],a[j]=a[j+1],a[j+1]=t;
n;
if(a[i]%2)printf("
i,a[i]);
18、输入不多于500个大于0的整数到一维数组(当输入的数为0时结束输入),
然后升序排序,最后将其中完数输出。
提示:
一个数的各因子之和等于该数本身即为完数,
例如:
6的因子是1,2,3,而6=1+2+3,所以6是完数。
28也是完数,28=1+2+4+7+14。
364528116370
6628
{inta[500],i,j,t,n=0,s;
if(a[j]>
{s=0;
for(j=1;
a[i];
if(a[i]%j==0)s+=j;
if(s==a[i])printf("
%d"
a[i]);
19、首先输入不多于500个整数到一维数组,然后降序排序,
最后将下标值为奇的元素输出。
输入格式:
整数个数
整数1整数2整数3...
输出格式
下标数组元素值
5
12345
14
32
{inta[500],i,j,t,n;
a[i]);
if(i%2)printf("
20、设有1<
=n<
=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
nsm
613
364251
{inta[500],n,s,m,i,b=0,z=0;
n,&
s,&
m);
a[i]=i+1;
i=s-1;
while(z<
n)
if(a[i++%n])
{b++;
if(b%m==0)
{z++;
a[(i-1)%n]);
a[(i-1)%n]=0;
六、二维数组
21、定义5×
5的整形数组,输入每行中的前4个元素值,
每行第5个是前4个元素的平均值。
最后输出
5行
1234
12342
1111
2222
3333
4444
5555
11111
22222
33333
44444
55555
{inta[5][5],i,j;
5;
{for(j=0;
4;
scanf("
a[i][j]);
a[i][4]=(a[i][0]+a[i][1]+a[i][2]+a[i][3])/4;
a[i][j]);
22、定义5×
5的整形数组,输入每列中的前4个元素值,
每列第5个是前4个元素的平均值。
4行
a[4][j]=(a[0][j]+a[1][j]+a[2][j]+a[3][j])/4;
23、输出M*N整数矩阵(3<
=M<
=503<
=N<
=50),M,N从键盘输入。
本例是5*6矩阵。
56
123456
18192021227
17282930238
16272625249
151413121110
{inta[50][50]={0},i=0,j=0,m,n,t=1;
%d%d"
m,&
while(t<
=m*n)
{
while(j<
n&
a[i][j]==0)a[i][j++]=t++;
j--;
i++;
while(i<
m&
a[i][j]==0)a[i++][j]=t++;
i--;
j--;
while(j>
=0&
a[i][j]==0)a[i][j--]=t++;
j++;
i--;
while(i>
a[i][j]==0)a[i--][j]=t++;
i++;
j++;
m;
24、有一M*M矩阵(5<
=15)是按行序存放的M*M矩阵的元素(即:
前M个整数是第1行的M个元素)。
按下列步骤编程:
1>
每行降序排序;
2>
每列降序排序;
3>
按行序输出。
第一个数是M值,即本例是5*5矩阵,其后是M*M整数。
12345
678910
1112131415
1617181920
2122232425
2524232221
2019181716
1514131211
109876
54321
{inta[15][15],i,j,k,t,m;
for(i=0;
m-1;
for(k=0;
if(a[i][k]<
a[i][k+1])
t=a[i][k],a[i][k]=a[i][k+1],a[i][k+1]=t;
for(j=0;
if(a[k][j]<
a[k+1][j])
t=a[k][j],a[k][j]=a[k+1][j],a[k+1][j]=t;
七、函数循环
25、根据下面对函数的说明,编写其后的函数体。
(1)函数功能:
计算s=1/(1*3)+2/(3*5)+3/(5*7)....n/((2*n-1)*(2*n+1))前n项之和。
(2)入口参数:
函数形参n>
=1是要求计算的项数。
(3)出口值:
函数返回值是累加计算求得的s值。
(4)注意:
函数类型(函数返回值)是double类型。
doublefun(intn)
{
//答题开始处
doubles=0;
inti;
for(i=1;
s+=i/((2*i-1.0)*(2*i+1));
returns;
//答题结束处
26、根据下面对函数的说明,编写其后的函数体。
(1)功能:
计算s=1/1!
+1/2!
+1/3!
+...前n项和。
(2)入口:
=1是一整数。
(3)出口:
函数返回值是前n项和s。
inti,t=1;
{t*=i;
s+=1.0/t;
27、根据下面对函数的说明,编写其后的函数体。
计算级数1/1+2/1+3/2+5/3+8/5+13/8+21/13前n项之和。
形参n>
=1表示求前n项之和。
函数返回值是前n项之和。
(4)提示:
第一项的分子分母之和是第二项的分子,第一项的分子是第二项的分母.....
(5)注意:
函数类型是double类型
inti,a=1,b=1,t;
{s+=1.0*a/b;
28、根据下面对函数的说明,编写其后的函数体。
求1/2+3/4+5/6+7/8...前n项之和。
=1。
函数类型是double类型。
{
s+=(2*i-1.0)/(2*i);
八、函数与一维数组
29、根据下面对函数的说明,编写其后的函数体。
逆序存放一维数组元素。
(原1,3,2,4,5->
变为5,4,2,3,1)
函数形参a是某一维整型数组的首地址,形参n表示该数组存有n个整数。
voidfun(inta[],intn)
inti,t;
n/2;
{t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
30、根据下面对函数的说明,编写其后的函数体。
一维数组a保存有n个整数。
请把所有奇数存储在数组的前部,其他存储在奇数的后面。
函数形参a是数组首地址,n>
=0是元素个数。
(3)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 参考答案