SCAU程序设计在线实训平台_考试_2020级计算机***期中上机考试

1 正负奇偶判断

描述

由键盘输入非零整数x,判断该数正负,正数输出positive,负数输出negative,接着判断该数的奇偶性,奇数输出odd,偶数输出even。

输出格式

注意,正负判断结果与奇偶判断结果之间用回车符分隔

输入样例

-43

输出样例

negative
odd

代码实现(参考):
--

2 数的排序

描述

由键盘输入三个整数a、b、c,按从小到大的顺序输出这三个数。

输入格式

三个数由逗句分隔

输入样例

65,45,90

输出样例

45,65,90

代码实现(参考):
--

3 判断点是否在圆上

描述

由键盘输入一个点的坐标, 要求编程判断这个点是否在单位圆(圆心在坐标0,0)上,点在圆上输出Y, 不在圆上输出N。
使用小数点后3位精度进行判断。

输入样例

0.707,0.707

输出样例

Y

#include <stdio.h>
#include <math.h>
int main()
{
    double x,y,r;
    scanf("%lf,%lf",&x,&y);
    r=x*x+y*y;
    if(fabs(1-r)<=0.009){
        printf("Y");
    }
    else{
        printf("N");
    }
}

4 倒序

描述

由键盘输入10个整数,倒序输出。

输入样例

70
5
14
20
19
2
99
67
13
66

输出样例

66
13
67
99
2
19
20
14
5
70

代码实现(参考):
#include "stdio.h"
int main()
{
    int a[10];
    for(int i=0;i<10;i++){
        scanf("%d",&a[i]);
    }

    for(int i = 9;i>=0;i--){
        printf("%d\n",a[i]);
    }
}

5 求最大公约数

描述

由键盘输入两个正整数m、n(m、n<1000000),计算它们的最大公约数。

输入样例

16,24

输出样例

8

代码实现(参考):
#include "stdio.h"
int main()
{
    int m,n,min,max=1;
    scanf("%d,%d",&m,&n);
    min=m;
    if(m>n)min=n;
    for(int i =1 ;i<min;i++){
        if(m%i==0&&n%i==0){
            if(i>max){
                max=i;
            }
        }
    }
    printf("%d",max);
}

6 计算阶乘

描述

输入正整数n(n<12),计算n!(注n!=123*…*n)

输入样例

3

输出样例

6

代码实现(参考):
#include <stdio.h>
int F(int n){
    int j = 1;
    for(int i = 1; i <= n; i++){
        j *= i;
    }
    return j;
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",F(n));
}

7 计算数列和

描述

有数列:
在这里插入图片描述
编程实现,由键盘输入n,计算输出数列前n项和。(结果保留四位小数,提示:要使用double,否则精度不够)

输出格式

请按格式输出

输入样例

20

输出样例

32.6603

代码实现(参考):
#include "stdio.h"

int main()
{
    int n;
    scanf("%d",&n);
    double a=2,b=1,sn=0,t;
    for(int i = 1; i<=n; i++){
        sn+=a/b;
        t=a;
        a=a+b;
        b=t;
    }
    printf("%.4lf",sn);
}

}

8 正负数的绝对值

描述

从键盘输入10个整数,计算并输出其中正数的累加和与负数累加和的绝对值的差。

输入格式

10个整数,以空格分隔

输出格式

输出差值

输入样例

1 2 3 4 5 -1 -1 -1 -1 -1

输出样例

10

代码实现
#include <stdio.h>
#include <math.h>
int main()
{
    int a[10],p=0,n=0;
    for(int i = 0; i < 10; i++){
        scanf("%d",&a[i]);
    }
    for(int i = 0; i < 10; i++){
        if(a[i]>=0){
            p+=a[i];
        }
        else{
            n+=a[i];
        }
    }
    n=abs(n);
    printf("%d",p-n);

}

9 最小差值

描述

由键盘输入10个浮点数,任取其中两数相减求绝对值,求其中最小值(保留两位小数)

输入格式

10个浮点数,由空格分隔

输出格式

最小差值

输入样例

1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 9

输出样例

0.20

代码实现(参考):
#include "stdio.h"
#include <math.h>
int main()
{
    double a[10],min=999;
    for(int i=0;i<10;i++){
        scanf("%lf",&a[i]);
    }
    for(int i=0;i<10;i++){
        for(int j=0;j<10;j++){
            if(j==i)continue;
            if(fabs(a[i]-a[j])<min){
                min=fabs(a[i]-a[j]);
            }
        }
    }

    printf("%.2lf",min);
}

10 打印数字空心菱形

描述

由键盘输入n(n为奇数),打印如下图空心菱形

例n=7

   1
  2 2
 3   3
4     4
 3   3
  2 2
   1
输入格式

整数

输出格式

如题

输入样例

3

输出样例
 1
2 2
 1
代码实现(参考):
#include <stdio.h>

void printSpace(int n){
    for(int i=0;i<n;i++){
        printf(" ");
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    int max=(n+1)/2;
    for(int i = 1; i <= max; i++){
        printSpace(max-i);
        printf("%d",i);
        if(i==1){printf("\n");continue;}
        printSpace(2*i-3);
        printf("%d",i);
        printf("\n");
    }
    for(int i = max-1; i >=1; i--){
        printSpace(max-i);
        printf("%d",i);
        if(i==1){printf("\n");continue;}
        printSpace(2*i-3);
        printf("%d",i);
        printf("\n");
    }

}

11 打印杨辉三角

描述

由键盘输入正数n(n<30),要求输出具有n行的杨辉三角。

输入样例

5

输出样例

1
1,1
1,2,1
1,3,3,1
1,4,6,4,1

代码实现(参考):
#include "stdio.h"

int main()
{
    int i,t,n, a[40]={1};
    scanf("%d", &n);

    printf("1\n");
    for (i=1; i<n; i++)
    {
        for (t=i; t>0; t--)
            a[t]=a[t]+a[t-1];
        printf("1");
        for (t=1; t<=i; t++)
            printf(",%d",a[t]);
        printf("\n");
    }
    return 0;
}

12 回文串的判断

描述

回文串是指一个字符串从左读到右与从右读到左是一样的,现由键盘输入一行字符(最多不超过80个字符,以回车结束),
判断能否通过去掉0个或1个字符,使得字符串成为回文串,如果可以输出Y,否则输出N

输入格式

一行字符

输出格式

Y或N

输入样例

abca

输出样例

Y

提示

提示,去掉c字符,即可成为回文串

代码实现(参考):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int rebackstr(char a[]){
    char b[80];
    int lena=strlen(a);
    for(int i=0;i<lena;i++){
        b[lena-i-1]=a[i];
    }
    for(int i=0;i<lena;i++){
        if(a[i]!=b[i])return 0;
    }
    return 1;
}

void strdelchar(char a[],int n,char b[]){
    int lena = strlen(a);
    int i;
    for(i=0;i<lena;i++){
        if(i>=n)b[i]=a[i+1];
        else b[i]=a[i];
    }
    b[i]='\0';

}

int main()
{
    char a[80],b[80];
    scanf("%s",a);
    if(rebackstr(a)){printf("Y");return 0;}

    int lena=strlen(a);
    for(int i=0;i<lena;i++){
        strdelchar(a,i,b);
        if(rebackstr(b)){printf("Y");return 0;}
    }
    printf("N");
    return 0;
}

没有经过OJ评测

13 勾股数

描述

若三个正整数a、b、c,其中a<=b<=c,满足a2+b2=c2,其中表示上标,称这三个数为“勾股数”,例如:3、4、5是勾股数。编程输出不大于n的所有勾股数。

输入格式

输入一个数(n<=100)

输出格式

输出所有勾股数,按第1个数字由小到大排列(若第1个数字相同,按第2个数字排)

输入样例

16

输出样例

3 4 5
5 12 13
6 8 10
9 12 15

#include "stdio.h"

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1; i<=n; i++){
        for(int j=i; j<=n; j++){
            for(int k=j; k<=n; k++){
                if(i*i+j*j==k*k){
                    printf("%d %d %d\n",i,j,k);
                }
            }
        }
    }
}

14 计算数列和

描述

计算数列1,-1/2,1/3,-1/4,1/5,-1/6,…的前n项累加和,输出结果带8位小数。

输入格式

输入一个正整数n

输出格式

输出累加和

输入样例

1

输出样例

1.00000000

代码实现(参考):
#include "stdio.h"

int main()
{
    int n;
    double a=1.000,b=1.000,sn=0;
    scanf("%d",&n);

    for(int i = 0; i < n; i++){
        sn += a/b;
        a=-a;
        b++;
    }
    printf("%.8lf",sn);
}

15 调整数字

描述

给你N个整数构成的数列,要求将数列中的所有负数调整到数列前面,将正数调整到数列后面
(保持负数之间先后顺序,且保持正数之间的先后顺序)
例如:原来是1,0,5,-2,0,-3,3.经过f处理后变成-2,-3,0,0,1,5,3

输入格式

第一行一个正整数N(N不大于20)
第二行是N个整数,每个整数由一个空格分隔

输出格式

处理后的数列,每个数之间由一个空格分隔

输入样例

7
1 0 5 -2 0 -3 3

输出样例

-2 -3 0 0 1 5 3

代码实现(参考):
#include "stdio.h"

int main()
{
    int n,a[20],ne[20];
    scanf("%d",&n);
    for(int i = 0; i < n; i++){
        scanf("%d",&a[i]);
    }
    int xb=0;
    for(int i = 0; i < n; i++){
        if(a[i] < 0){
            ne[xb]=a[i];
            xb++;
        }
    }
    for(int i = 0; i < n; i++){
        if(a[i] == 0){
            ne[xb]=a[i];
            xb++;
        }
    }
    for(int i = 0; i < n; i++){
        if(a[i] > 0){
            ne[xb]=a[i];
            xb++;
        }
    }
    for(int i = 0; i < n; i++){
        printf("%d ",ne[i]);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值