模拟练习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语言考试练习题_排列

有4个互不相同的数字,输出由其中三个不重复数字组成的排列。

输入要求

4个整数。

输出要求

所有排列。

假如输入

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: 计算两点间的距离

题目描述

输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。

输入要求

输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。

输出要求

对于每组输入数据,输出一行,结果保留两位小数。

假如输入

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;
}
 
 

 



 

 

posted @ 2013-12-15 20:11  simple9495  阅读(1277)  评论(0编辑  收藏  举报