模拟练习2
问题 A: C语言-数字分解
给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123
输入要求
一个不大于5位的数字
输出要求
三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数
假如输入
12345
应当输出
5
1 2 3 4 5
54321
问题 B: C语言-弹球
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数
输入要求
M N
输出要求
它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行
假如输入
1000 5
应当输出
31.25 2875.00
#include<stdio.h> #include<math.h> int main(void) { int i; double m,n; double x,sum,y; sum=0; scanf("%lf %lf",&m,&n); for(i=1;i<=n;i++){ x=m*pow(0.5,i); sum=sum+2*m*pow(0.5,i-1); } y=sum-m; printf("%.2f %.2f",x,y); return 0; }
问题 C: 格子位置(grid)
题目描述
输入三个自然数N,i,j(l≤i≤N,1≤j≤N),输出在一个N×N格的棋盘中,与格子(i,j)同行、同列、同一对角线的所有格子的位置。例如,n=4,i=2,j=3表示棋盘中的第二行第三列的格子,如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子,如下图: 当n=4,i=2,j=3时,输出的结果是: (2,1) (2,2) (2,3) (2,4) {同一行上格子的位置} (1,3) (2,3) (3,3) (4,3) {同列列上格子的位置} (1,2) (2,3) (3,4) {左上到右下对角线上的格子的位置} (4,1) (3,2) (2,3) (1,4) {左下到右上对角线上的格子的位置}
输入要求
只有1行,共3个数,分别为N(1≤N≤10000),i,j的值。
输出要求
按照题目描述的格式输出。
假如输入
4 2 3
应当输出
(2,1)(2,2)(2,3)(2,4)
(1,3)(2,3)(3,3)(4,3)
(1,2)(2,3)(3,4)
(4,1)(3,2)(2,3)(1,4)
问题 D: 勾股数(gou)
题目描述
输入整数R,输出小于等于R的满足X2+Y2=Z2的所有正整数X,Y,Z。
输入要求
只有一个数:R(5≤R≤I000000)。
输出要求
只有一个数:表示共有多少组满足条件的勾股数。
假如输入
10
应当输出
2
#include<stdio.h> int main(void) { int r,x,y,z; int count; count=0; scanf("%d",&r); for(x=1;x<=r;x++){ for(y=1;y<=r;y++){ for(z=1;z<=r;z++){ if(x*x+y*y==z*z&&x+y>z&&x-y<z) count++; } } } printf("%d\n",count/2); return 0; }
问题 E: 回文素数(hui)
题目描述
桐桐在研究素数时,发现有些素数很特别,例如131,它是素数,同时,它又是回文数:从左边读和从右边读都是同一个数。桐桐想把不大于n的所有既是回文数又是素数的数求出来,你能帮助她吗?
输入要求
输入数据有多组,每组只有一个整数n(2≤n≤10^6)。
输出要求
输出满足题设条件的数,每行输出5个数。
假如输入
100
应当输出
2 3 5 7 11
问题 F: C语言考试练习题_矩阵转置
题目描述
输入N*N的矩阵,输出它的转置矩阵。
输入要求
第一行为整数N(1<=N<=10)。接着是一个N*N的矩阵。
输出要求
转置矩阵。
假如输入
2
1 2
1 2
应当输出
1 1
2 2
#include<stdio.h> int main(void) { int n,i,j,temp; int a[10][10]; scanf("%d\n",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<n;i++) for(j=0;j<n;j++) if(i<=j){ temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } for(i=0;i<n;i++){ for(j=0;j<n-1;j++) printf("%d ",a[i][j]); printf("%d",a[i][n-1]); printf("\n"); } return 0; }
问题 G: C语言考试练习题_排列
输入要求
输出要求
假如输入
1 2 3 4
应当输出
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
1 2 4
1 4 2
2 1 4
2 4 1
4 1 2
4 2 1
1 3 4
1 4 3
3 1 4
3 4 1
4 1 3
4 3 1
2 3 4
2 4 3
3 2 4
3 4 2
4 2 3
4 3 2
问题 H: 逆序输出单词(串)
输入一个字符串,空格作为单词分隔符,统计其中的单词,并将单词逆序输出
输入要求
输入一个字符串
输出要求
逆序输出单词
假如输入
I love you!
应当输出
you love I!
问题 I: 计算两点间的距离
题目描述
输入要求
输出要求
假如输入
0 0 0 1
0 1 1 0
应当输出
1.00
1.41
#include<stdio.h> #include<math.h> int main(void) { double x1,x2,y1,y2; double z; while(EOF != scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2)) { z=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); printf("%.2f\n",z); } return 0; }
问题
《C语言程序设计》江宝钏主编-习题4-5-边境线
有一个圆,圆心坐标是(0,0),半径r=4.5,任意输入一个点的坐标(x,y),判断这个点是在圆内,圆周上,还是在圆外。
输入要求
两个浮点数x,y
输出要求
如果在圆内,输出in
如果在圆外,输出out
如果在圆上,输出on
假如输入
1.0 1.0
应当输出
in
#include<stdio.h> int main(void) { double x,y; scanf("%lf %lf",&x,&y); if(x*x+y*y<4.5*4.5) printf("in\n"); else if(x*x+y*y==4.5*4.5) printf("on\n"); else printf("out\n"); return 0; }