C语言上机题参考答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
6、计算分段函数,输入x(整数),输出y(整数):
┌2x+1 (x<1)
y=│4x+3 (x=1)
└6x+5 (x>1)
示例:
输入
1
输出
7
#include<stdio.h>
void main()
{int x,y;
scanf("%d",&x);
if(x<1) y=2*x+1;
if(x==1) y=4*x+3;
}
}
9、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
***
*****
*******
*********
假设n=6,则图形如下:
*
***
*****
*******
*********
***********
#include<stdio.h>
void main()
{int i,j,k,n;
scanf("%d",&n);
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
8、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
if(a[i]%2) printf("%d %d\n",i,a[i]);
}
18、输入不多于500个大于0的整数到一维数组(当输入的数为0时结束输入),
然后升序排序,最后将其中完数输出。
提示:一个数的各因子之和等于该数本身即为完数,
例如:6的因子是1,2,3,而6=1+2+3,所以6是完数。
28也是完数,28=1+2+4+7+14。
scanf("%d",&a[n]);
while(a[n]!=0)
{n++;
scanf("%d",&a[n]);
}
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if(a[j]<a[j+1])
t=a[j],a[j]=a[j+1],a[j+1]=t;
for(i=0;i<n;i++)
示例:
输入:
3 6 4 5 28 11 6 3 7 0
输出:
6 6 28
*/
#include<stdio.h>
void main()
{int a[500],i,j,t,n=0,s;
scanf("%d",&a[n]);
while(a[n]!=0)
{n++;
scanf("%d",&a[n]);
}Hale Waihona Puke Baidu
for(i=0;i<n-1;i++)
}
}
19、首先输入不多于500个整数到一维数组,然后降序排序,
最后将下标值为奇的元素输出。
输入格式:
整数个数
整数1整数2整数3 ...
输出格式
下标数组元素值
下标数组元素值
...
示例:
输入:
5
1 2 3 4 5
输出:
1 4
3 2
*/
#include<stdio.h>
void main()
{int a[500],i,j,t,n;
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
}
10、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*****
****
***
**
*
假设n=6,则图形如下:
}
15、计算级数2/1, 3/2, 5/3, 8/5, 13/8, 21/13,...前n项之和。
(n从键盘输入,保留3位小数)
示例
输入:
2
输出:
3.500
#include<stdio.h>
void main()
{int i,n;
double a=2,b=1,t,s=0;
scanf("%d",&n);
1 2 3 4
#include<stdio.h>
void main()
{char ch;
int sz=0,dx=0,xx=0,qt=0;
while((ch=getchar())!='\n')
{if(ch>='0'&&ch<='9') sz++;
else if(ch>='A'&&ch<='Z') dx++;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if(a[j]<a[j+1])
t=a[j],a[j]=a[j+1],a[j+1]=t;
for(i=0;i<n;i++)
if(i%2) printf("%d %d\n",i,a[i]);
void main()
{int a,b,c,i;
scanf("%d",&a);
for(b=2;b<=a/2;b++)
{ for(i=2;i<b;i++)
if(b%i==0) break;
if(i==b)
{c=a-b;
for(i=2;i<c;i++)
if(c%i==0) break;
if(i==c)
printf("%d %d\n",b,c);
for(i=1;i<=n;i++)
{s+=a/b;
t=a;a=a+b;b=t;
}
printf("%.3f\n",s);
}
16、输入一个a>=6的偶数,输出满足a=b+c素数对b和c,这里b和c是素数,且b<=c。
示例1:
输入:
6
输出:
3 3
示例2:
输入:
10
输出:(按b由小至大输出)
3 7
5 5
#include<stdio.h>
printf("\n");
}
}
11、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*****
****
***
**
*
假设n=6,则图形如下:
******
*****
****
***
**
*
#include<stdio.h>
void main()
{int i,j,n;
scanf("%d",&n);
else if(ch>='a'&&ch<='z') xx++;
else qt++;
}
printf("%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、定义三个整型变量,从键盘输入三个整数,计算平均值,计算结果输出到屏幕上,平均值保留2位小数。
示例:
输入:按如下格式输入3个数:
21 22 25
输出:(注意保留2位小数)
22.67
#include<stdio.h>
void main()
{int a,b,c;
scanf("%d%d%d",&a,&b,&c);
1 2 3 4 2
1 2 3 4 2
1 2 3 4 2
1 2 3 4 2
示例2:
输入:5行
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
一、表达式
1、从键盘输入任意一个四位正整数,将其各位数字反序输出到屏幕上。
示例:
输入
1234
输出:
4321
#include<stdio.h>
void main()
{int x;
scanf("%d",&x);
printf("%d%d%d%d\n",x%10,x/10%10,x/100%10,x/1000);
(n从键盘输入,保留2位小数)。
示例
输入:
2
输出:
0.67
#include<stdio.h>
void main()
{int i,n; double s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=1.0/(2*i-1)*(i%2?1:-1);
printf("%.2f\n",s);
}
}
}
五、一维数组
17、输入不多于500个大于0的整数到一维数组(当输入的数为0时结束输入),
然后降序排序,最后将奇数输出。
输出格式为:
下标值整数
下标值整数
...
示例:
输入:
1 2 3 4 5 0
输出:
0 5
2 3
4 1
*/
#include<stdio.h>
void main()
{int a[500],i,j,t,n=0;
}
5、输入一个三位正整数x,根据十位上的数输出如下:
┌百位(十位上的数是奇数)
输出=┤
└个位(十位上的数是偶数)
示例1:
输入
123
输出
3
#include<stdio.h>
void main()
{int a;
scanf("%d",&a);
if(a/10%2) printf("%d",a/100);
else printf("%d",a%10);
示例
输入:
2
输出:
0.467
#include<stdio.h>
void main()
{int i,n;
double s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=1.0*i/((2*i-1)*(2*i+1));
printf("%.3f",s);
}
14、计算s = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...前n项和。
******
#include<stdio.h>
void main()
{int i,j,k,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=i;k++)
printf("*");
printf("\n");
for(j=0;j<n-1;j++)
if(a[j]>a[j+1])
t=a[j],a[j]=a[j+1],a[j+1]=t;
for(i=0;i<n;i++)
{ s=0;
for(j=1;j<a[i];j++)
if(a[i]%j==0) s+=j;
if(s==a[i]) printf("%d ",a[i]);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i+1;j++)
printf("*");
printf("\n");
}
}
四、循环
12、输入若干字符(回车'\n'为止),统计数字字符、大写字母、小写字母和其它字符的个数。
示例
输入
1ABabc@#%!
输出: (共四个数,它们是:数字字符个数大写字母个数小写字母个数其它字符个数)
******
*****
****
***
**
*
#include<stdio.h>
void main()
{int i,j,k,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=n-i+1;k++)
printf("*");
if(x>1) y=6*x+5;
printf("%d",y);
}
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
#include<stdio.h>
void main()
{int i,j,n;
{z++;
printf("%d ",a[(i-1)%n]);
a[(i-1)%n]=0;
}
}
}
六、二维数组
21、定义5×5的整形数组,输入每行中的前4个元素值,
每行第5个是前4个元素的平均值。最后输出
示例1:
输入:5行
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
输出:5行
1 2 3 4 2
}
20、设有1<=n<=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
n s m
示例:
输入:
6 1 3
输出:
3 6 4 2 5 1
ch-=32;
putchar(ch);
}
4、输入三个整数,然后输出最大值。
示例:
输入
1 2 3
输出
3
#include<stdio.h>
void main()
{int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a<b) a=b;
if(a<c) a=c;
printf("%d",a);
*/
#include<stdio.h>
void main()
{int a[500],n,s,m,i,b=0,z=0;
scanf("%d%d%d",&n,&s,&m);
for(i=0;i<n;i++)
a[i]=i+1;
i=s-1;
while(z<n)
if(a[i++%n])
{b++;
if(b%m==0)
printf("%.2f\n",(a+b+c)/3.0);
}
二、选择结构
3、输入一个字符,如果是小写字母,转化为大写字母后输出,其它字符原样输出。
示例:
输入
a
输出
A
#include<stdio.h>
void main()
{char ch;
ch=getchar();
if(ch>='a'&&ch<='z')
6、计算分段函数,输入x(整数),输出y(整数):
┌2x+1 (x<1)
y=│4x+3 (x=1)
└6x+5 (x>1)
示例:
输入
1
输出
7
#include<stdio.h>
void main()
{int x,y;
scanf("%d",&x);
if(x<1) y=2*x+1;
if(x==1) y=4*x+3;
}
}
9、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
***
*****
*******
*********
假设n=6,则图形如下:
*
***
*****
*******
*********
***********
#include<stdio.h>
void main()
{int i,j,k,n;
scanf("%d",&n);
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
8、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
if(a[i]%2) printf("%d %d\n",i,a[i]);
}
18、输入不多于500个大于0的整数到一维数组(当输入的数为0时结束输入),
然后升序排序,最后将其中完数输出。
提示:一个数的各因子之和等于该数本身即为完数,
例如:6的因子是1,2,3,而6=1+2+3,所以6是完数。
28也是完数,28=1+2+4+7+14。
scanf("%d",&a[n]);
while(a[n]!=0)
{n++;
scanf("%d",&a[n]);
}
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if(a[j]<a[j+1])
t=a[j],a[j]=a[j+1],a[j+1]=t;
for(i=0;i<n;i++)
示例:
输入:
3 6 4 5 28 11 6 3 7 0
输出:
6 6 28
*/
#include<stdio.h>
void main()
{int a[500],i,j,t,n=0,s;
scanf("%d",&a[n]);
while(a[n]!=0)
{n++;
scanf("%d",&a[n]);
}Hale Waihona Puke Baidu
for(i=0;i<n-1;i++)
}
}
19、首先输入不多于500个整数到一维数组,然后降序排序,
最后将下标值为奇的元素输出。
输入格式:
整数个数
整数1整数2整数3 ...
输出格式
下标数组元素值
下标数组元素值
...
示例:
输入:
5
1 2 3 4 5
输出:
1 4
3 2
*/
#include<stdio.h>
void main()
{int a[500],i,j,t,n;
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
}
10、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*****
****
***
**
*
假设n=6,则图形如下:
}
15、计算级数2/1, 3/2, 5/3, 8/5, 13/8, 21/13,...前n项之和。
(n从键盘输入,保留3位小数)
示例
输入:
2
输出:
3.500
#include<stdio.h>
void main()
{int i,n;
double a=2,b=1,t,s=0;
scanf("%d",&n);
1 2 3 4
#include<stdio.h>
void main()
{char ch;
int sz=0,dx=0,xx=0,qt=0;
while((ch=getchar())!='\n')
{if(ch>='0'&&ch<='9') sz++;
else if(ch>='A'&&ch<='Z') dx++;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if(a[j]<a[j+1])
t=a[j],a[j]=a[j+1],a[j+1]=t;
for(i=0;i<n;i++)
if(i%2) printf("%d %d\n",i,a[i]);
void main()
{int a,b,c,i;
scanf("%d",&a);
for(b=2;b<=a/2;b++)
{ for(i=2;i<b;i++)
if(b%i==0) break;
if(i==b)
{c=a-b;
for(i=2;i<c;i++)
if(c%i==0) break;
if(i==c)
printf("%d %d\n",b,c);
for(i=1;i<=n;i++)
{s+=a/b;
t=a;a=a+b;b=t;
}
printf("%.3f\n",s);
}
16、输入一个a>=6的偶数,输出满足a=b+c素数对b和c,这里b和c是素数,且b<=c。
示例1:
输入:
6
输出:
3 3
示例2:
输入:
10
输出:(按b由小至大输出)
3 7
5 5
#include<stdio.h>
printf("\n");
}
}
11、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*****
****
***
**
*
假设n=6,则图形如下:
******
*****
****
***
**
*
#include<stdio.h>
void main()
{int i,j,n;
scanf("%d",&n);
else if(ch>='a'&&ch<='z') xx++;
else qt++;
}
printf("%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、定义三个整型变量,从键盘输入三个整数,计算平均值,计算结果输出到屏幕上,平均值保留2位小数。
示例:
输入:按如下格式输入3个数:
21 22 25
输出:(注意保留2位小数)
22.67
#include<stdio.h>
void main()
{int a,b,c;
scanf("%d%d%d",&a,&b,&c);
1 2 3 4 2
1 2 3 4 2
1 2 3 4 2
1 2 3 4 2
示例2:
输入:5行
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
一、表达式
1、从键盘输入任意一个四位正整数,将其各位数字反序输出到屏幕上。
示例:
输入
1234
输出:
4321
#include<stdio.h>
void main()
{int x;
scanf("%d",&x);
printf("%d%d%d%d\n",x%10,x/10%10,x/100%10,x/1000);
(n从键盘输入,保留2位小数)。
示例
输入:
2
输出:
0.67
#include<stdio.h>
void main()
{int i,n; double s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=1.0/(2*i-1)*(i%2?1:-1);
printf("%.2f\n",s);
}
}
}
五、一维数组
17、输入不多于500个大于0的整数到一维数组(当输入的数为0时结束输入),
然后降序排序,最后将奇数输出。
输出格式为:
下标值整数
下标值整数
...
示例:
输入:
1 2 3 4 5 0
输出:
0 5
2 3
4 1
*/
#include<stdio.h>
void main()
{int a[500],i,j,t,n=0;
}
5、输入一个三位正整数x,根据十位上的数输出如下:
┌百位(十位上的数是奇数)
输出=┤
└个位(十位上的数是偶数)
示例1:
输入
123
输出
3
#include<stdio.h>
void main()
{int a;
scanf("%d",&a);
if(a/10%2) printf("%d",a/100);
else printf("%d",a%10);
示例
输入:
2
输出:
0.467
#include<stdio.h>
void main()
{int i,n;
double s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=1.0*i/((2*i-1)*(2*i+1));
printf("%.3f",s);
}
14、计算s = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...前n项和。
******
#include<stdio.h>
void main()
{int i,j,k,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf(" ");
for(k=1;k<=i;k++)
printf("*");
printf("\n");
for(j=0;j<n-1;j++)
if(a[j]>a[j+1])
t=a[j],a[j]=a[j+1],a[j+1]=t;
for(i=0;i<n;i++)
{ s=0;
for(j=1;j<a[i];j++)
if(a[i]%j==0) s+=j;
if(s==a[i]) printf("%d ",a[i]);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i+1;j++)
printf("*");
printf("\n");
}
}
四、循环
12、输入若干字符(回车'\n'为止),统计数字字符、大写字母、小写字母和其它字符的个数。
示例
输入
1ABabc@#%!
输出: (共四个数,它们是:数字字符个数大写字母个数小写字母个数其它字符个数)
******
*****
****
***
**
*
#include<stdio.h>
void main()
{int i,j,k,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=n-i+1;k++)
printf("*");
if(x>1) y=6*x+5;
printf("%d",y);
}
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
#include<stdio.h>
void main()
{int i,j,n;
{z++;
printf("%d ",a[(i-1)%n]);
a[(i-1)%n]=0;
}
}
}
六、二维数组
21、定义5×5的整形数组,输入每行中的前4个元素值,
每行第5个是前4个元素的平均值。最后输出
示例1:
输入:5行
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
输出:5行
1 2 3 4 2
}
20、设有1<=n<=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
n s m
示例:
输入:
6 1 3
输出:
3 6 4 2 5 1
ch-=32;
putchar(ch);
}
4、输入三个整数,然后输出最大值。
示例:
输入
1 2 3
输出
3
#include<stdio.h>
void main()
{int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a<b) a=b;
if(a<c) a=c;
printf("%d",a);
*/
#include<stdio.h>
void main()
{int a[500],n,s,m,i,b=0,z=0;
scanf("%d%d%d",&n,&s,&m);
for(i=0;i<n;i++)
a[i]=i+1;
i=s-1;
while(z<n)
if(a[i++%n])
{b++;
if(b%m==0)
printf("%.2f\n",(a+b+c)/3.0);
}
二、选择结构
3、输入一个字符,如果是小写字母,转化为大写字母后输出,其它字符原样输出。
示例:
输入
a
输出
A
#include<stdio.h>
void main()
{char ch;
ch=getchar();
if(ch>='a'&&ch<='z')