当前位置:   article > 正文

C语言学习随笔——XYOJ练习题

C语言学习随笔——XYOJ练习题

信阳师范大学C语言题库

XYOJ地址http://xyoj.xynu.edu.cn

XYOJ外网地址http://xyoj1.xynu.edu.cn

2023大一练习题之XYOJ————job系列

job 1

求三个数中的大数并输出。

#include<stdio.h>
int main()
{
int a, b, c;
    int max = 0;
    scanf("%d %d %d", &a, &b, &c);
    max = a;
 
    if (max < b)
    { 
        max = b;
    }
    if (max < c)
    {
        max = c;
    }
 
    printf("%d", max);
 return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

job 2

输出连续200个整数(如:1-200)中能同时被2和3整除的数,并统计个数

题目描述

输出连续200个整数(如:1-200或56-255)间能同时被2和3整除的数,并统计个数。
将范围内所有能同时被2和3整除的数一个个输出,每输出一个数即换行,最后换行后输出个数;

输入格式

要求用scanf函数随机给出范围内的第一个数

输出格式

范围内的所有满足要求的数,每个数字单列一行,最后一行输出总个数,样式如sum is:34

#include <stdio.h>

int main() 
{
int i,a,z;
z=0;
scanf("%d",&a);
for(i=a;i<a+200;i++){
        if(i%2==0&&i%3==0){
printf("%d\n",i);
z++;
}
}
printf("sum is:%d",z);
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

job 3

求学生成绩的平均值

题目描述

从键盘依次输入学生的成绩,要求成绩范围为[0,100],如遇负数或超出100的数即宣告成绩输入结束,求平均成绩并输出,按照浮点数的格式输出,域宽6位,小数占2位;特殊情况:如遇第一个成绩为非法成绩,如:789,则输出:Invalid score!

输入格式

一个个成绩

输出格式

平均值或者Invalid score!

输入样例

78
89
55
58
58
58
-1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出样例

66.00

#include <stdio.h>

int main() {
    int score;
    int sum = 0;
    int count = 0;
    float a;

    while (1) {
        scanf("%d", &score);

        if (score < 0 || score > 100) {
            if (count == 0) {
                printf("Invalid score!\n");
                return 0;
            } else {
                break;
            }
        }

        sum += score;
        count++;
    }

    a = (float) sum / count;
    printf("%6.2f\n", a);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

job 4

数字反序输出

题目描述

输入任意一个三位数字,将其各位数字反序输出(例如,输入123,输出321)。

输入格式

输入任意一个三位数字

输出格式

数字反序输出

输入样例

568

输出样例

865

#include <stdio.h>
int main() {
    int x, a, b, c;

    scanf("%d", &x);

    a = x / 100; 
    b = x % 100 / 10; 
    c = x % 10; 
    printf("%d%d%d\n", c, b, a);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

job 5

判断是否直角三角形

题目描述

输入三角形的3条变长(均为正整数),如果不能构成一个三角形,则输出“not a triangle”;如果能够构成一个直角三角形,则输出“yes”;如果不能构成直角三角形,则输出“no”。

输入格式

三个正整数

输出格式

not a triangle 或者yes 或者no

输入样例

78 8 9

输出样例

not a triangle

#include <stdio.h>
#include <math.h>

int main() {
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);

    if (a + b > c && a + c > b && b + c > a) {
        int max = a;
        if (b > max) {
            max = b;
        }
        if (c > max) {
            max = c;
        }

        if (max == a) {
            if (a * a == b * b + c * c) {
                printf("yes");
            } else {
                printf("no");
            }
        } else if (max == b) {
            if (b * b == a * a + c * c) {
                printf("yes");
            } else {
                printf("no");
            }
        } else {
            if (c * c == a * a + b * b) {
                printf("yes");
            } else {
                printf("no");
            }
        }
    } else {
        printf("not a triangle");
    }

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

job 6

计算企业发放的奖金利润提成

题目描述

要求:利润低于或等于100 000元的,奖金可提成10%;利润高于100 000元,低于200 000元(100 000<I<=200 000)时,低于100 000元的部分按10%提成,高于100 000元的部分,可提成7.5%;

200 000<I<=400 000时,低于200 000元的部分仍按上述办法提成(下同)。高于200 000元的部分按5%提成;

400 000<I<=600 000元时,高于400 000元的部分按3%提成;

600 000<I<=1 000 000时,高于600 000元的部分按1.5%提成;

超过1 000 000元的部分按1%提成。
从键盘输入当月利润I,求应发奖金总数;

输入格式

输入当月利润

输出格式

输出奖金,左对齐,占10列,显示小数点后2位;

输入样例

234000

输出样例

19200.00

#include <stdio.h>
 
int main() {
    float I, w;
    scanf("%f", &I);
    if (I <= 100000) {
        w = 0.1 * I;
    } else if (I > 100000 && I <= 200000) {
        w = 10000 + 0.075 * (I - 100000);
    } else if (I > 200000 && I <= 400000) {
        w = 17500 + 0.05 * (I - 200000);
    } else if (I > 400000 && I <= 600000) {
        w = 27500 + 0.03 * (I - 400000);
    } else if (I > 600000 && I <= 1000000) {
        w = 33500 + 0.015 * (I - 600000);
    } else {
        w = 39500 + 0.01 * (I - 1000000);
    }
    printf("%-10.2f\n", w);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

job 7

求1000以内的“完数”

题目描述

输出1000以内的所有“完数”,换行输出即可。

输入格式

输出格式

6
28
496

输入样例

输出样例

6
28 
496
  • 1
  • 2
  • 3
#include <stdio.h>

int main() {
    int i, j, sum;
    for (i = 1; i <= 1000; i++) {
        sum = 0;
        for (j = 1; j < i; j++) {
            if (i % j == 0) {
                sum += j;
            }
        }
        if (sum == i) {
            printf("%d\n", i);
        }
    }
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

job 8

求任意200个连续自然数中所有的素数

题目描述

求任意200个连续自然数中所有的素数,请输入第一个起始数,程序输出满足要求的所有素数,输出格式要求左对齐,列宽为8,每输出5个数即换行;

输入格式

起始自然数

输出格式

满足要求的素数

输入样例

100

输出样例

101     103     107     109     113
127     131     137     139     149
151     157     163     167     173
179     181     191     193     197
199     211     223     227     229
233     239     241     251     257
263     269     271     277     281
283     293
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
#include <stdio.h>
#include <stdbool.h>

bool is_prime(int n) {
    if (n <= 1) {
        return false;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    int start, count = 0;
    scanf("%d", &start);

    for (int i = start; i < start + 200; i++) {
        if (is_prime(i)) {
            printf("%-8d", i);
            count++;
            if (count % 5 == 0) {
                printf("");
            }
        }
    }

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

job 9

统计闰年个数

题目描述

2024 年是闰年。输入一个数字 n,代表未来的某个年份,请你计算一下,2024 至 n 年之间,有多少个闰年。满足下列两个条件之一即为闰年:能被 4 整除,但不能被 100 整除;能被 400 整除。

输入格式

一个数字 n(2024<=n<9999)

输出格式

2024至 n 年之间的闰年个数,统计结果包括 2024年和 n 年

输入样例

2060

输出样例

10

#include <stdio.h>

int main() {
    int endYear, count = 0;

    scanf("%d", &endYear);

    for (int year =2024; year <= endYear; year++) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            count++;
        }
    }

    printf("%d\n",count);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

job 10

数组应用:按奇数和偶数分类输出

题目描述

有一个整型n(2<= n <=100),你要做的是:先把1到n中的所有奇数从小到大输出,换行再把所有的偶数从大到小输出。

输入格式

第一行有一个整数i(2<=i<=10)表示有 i 组待分析数据; 每组有一个整数n。

输出格式

第一行输出所有的奇数 换行输出所有的偶数,每个数字占5列,左对齐,每输出完一个数的所有奇数和偶数,即换两行。

输入样例

2
10
9
  • 1
  • 2
  • 3

输出样例

1    3    5    7    9
10   8    6    4    2

1    3    5    7    9
8    6    4    2
  • 1
  • 2
  • 3
  • 4
  • 5
#include<stdio.h>

int main() {
    int t;
    scanf("%d", &t);

    for (int i = 0; i < t; ++i) {
        int n;
        scanf("%d", &n);

        // 输出所有奇数
        for (int j = 1; j <= n; j += 2) {
            printf("%-5d", j);
        }

        printf("\n");

        // 输出所有偶数
        for (int j = (n % 2 == 0 ? n : n - 1); j >= 2; j -= 2) {
            printf("%-5d", j);
        }

        printf("\n\n");
    }

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

job 11

分解数字求平方和

题目描述

计算一个无符号的整数n(0<=n<232-1)各位数字平方和;

输入格式

一个整数

输出格式

各位数字平方和

输入样例

65536

输出样例

131

#include <stdio.h>

int main() {
    unsigned int n;
    scanf("%u", &n);
    int sum = 0;
    while (n > 0) {
        int digit = n % 10;
        sum += digit * digit;
        n /= 10;
    }
    printf("%d", sum);
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

job 12

输出连续1000个整数中满足要求的数字并排序

题目描述

求连续1000个数中能同时整除3和5的后十个数

输入格式

从键盘输入起始数字;

输出格式

按照由小到大的顺序输出,列宽为5,左对齐;

输入样例

44

输出样例

900  915  930  945  960  975  990  1005 1020 1035
  • 1

job 13

字符数组应用:字符串瘦身

题目描述

删除一个字符串中的所有数字,使之成为一个新的字符串并输出结果。

输入格式

输入一行字符串

输出格式

输出删除数字后的字符串

输入样例

I am a 2023 new student from XYNU

输出样例

I am a new student from XYNU

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char input[1000];
    fgets(input, 1000, stdin);

    int len = strlen(input);
    char result[1000];
    int j = 0;
    for (int i = 0; i < len; i++) {
        if (!isdigit(input[i])) {
            result[j] = input[i];
            j++;
        }
    }
    result[j] = '\0';

    printf("%s\n", result);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

job 14

函数应用-简易计算器

2023大一练习题之XYOJ————日常练习

A 今天你吃了多少苹果

题目描述

八尾勇喜欢吃苹果。她今天吃掉了x 个苹果。英语课上学到了 apple 这个词语,想用它来造句。如果她吃了 1 个苹果,就输出 Today, I ate 1 apple.;如果她没有吃,那么就把 1 换成 0;如果她吃了不止一个苹果,别忘了 apple 这个单词后面要加上代表复数的 s。你能帮她完成这个句子吗?

输入格式

输入一行一个自然数x,表示吃掉的苹果数。

输出格式

根据题目要求输出。

输入样例

3

输出样例

Today, I ate 3 apples.

数据范围与提示

对于所有数据,
0≤x≤100。

#include<stdio.h>
int main()
{
int A=0;
scanf("%d",&A);

switch(A)
    {
    case 0 :printf("Today, I ate 0 apple."); break;
    case 1 :printf("Today, I ate 1 apple."); break;
    default:printf("Today, I ate %d apples.",A);
    }
return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

B 游泳计算题

for:

#include<stdio.h>
int main()
{
    double a = 2.0;
    int count = 0;
    double s;
    scanf("%lf", &s);
    for (; s > 0;) {
        s = s - a;
        a = a * 0.98;
        count++;
    }
    printf("%d", count);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

while:

#include<stdio.h>
int main()
{
double a=2.0;
int count=0;
double s;
scanf("%lf",&s);
while(s>0){
    s=s-a;
    a=a*0.98;
    count++;
}
printf("%d",count);
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

C 不一样的平均数

#include<stdio.h>
int main()
{
int n,k,a=0,b=0;
scanf("%d %d",&n,&k);
double sum1=0.0;
double sum2=0.0;
for(int i=1;i<=n;i++){
    if(i%k==0){
        sum1=sum1+i;
        a++;
    }
    else {
    sum2=sum2+i;
    b++;
}
}
printf("%.1lf ",sum1/a);
printf("%.1lf",sum2/b);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

D 有用的板凳

#include<stdio.h>
int main()
{
int arr[10];
int count=0;
for(int i=0;i<10;i++){
    scanf("%d",&arr[i]);
}
int h;
scanf("%d",&h);
for(int i=0;i<10;i++){
    if(h+30>=arr[i]){
        count++;
    }
}
printf("%d",count);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

E 忘记密码

#include <stdio.h>

void KS(char *str, int shift) {
    for (int i = 0; str[i] != '\0'; i++) {
        if (str[i] >= 'a' && str[i] <= 'z') {
            str[i] = (str[i] - 'a' + shift) % 26 + 'a';
        }
    }
}

int main() {
    char input[100];
    int shift;
    scanf("%d\n", &shift);
    fgets(input, sizeof(input), stdin);
    KS(input, shift);
    printf("%s", input);
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
#include<stdio.h>
#include<string.h>
#define max 50
int main()
{
int n;
char arr[max+1];
scanf("%d%s",&n,arr);
int L=strlen(arr);
for(int i=0;i<L;i++){
    char ch=(arr[i]-'a'+n)%26+'a';
    printf("%c",ch);
}
return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

F 认识钟表

#include <stdio.h>

int main() {
int a, b, c;
char d;
int num;
scanf("%d %d %d %c", &a, &b, &c, &d);

num = a * 3600 + b * 60 + c;

if (d == 'P') {
    if (a!=12)
    {num =num+43200;}
    }

printf("%d", num);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

G 计算机专业中的数学

#include <stdio.h>

int main() {
int a,b;
int x0=0;
int x1=0;

scanf("%d %d",&a,&b);
int x[a][b];
for(int i=0;i<a;i++){
    for(int j=0;j<b;j++){
        scanf("%d",&x[i][j]);
        if(x[i][j]==0) x0++;
        else if(x[i][j]==1) x1++;
    }
}

printf("%d %d",x0,x1);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
#include <stdio.h>

int main() {
int a,b;
int x0=0;
int x1=0;

scanf("%d %d",&a,&b);
int x[a][b];
for(int i=0;i<a;i++){
    for(int j=0;j<b;j++){
        scanf("%d",&x[i][j]);

    }
}

for(int i=0;i<a;i++){
    for(int j=0;j<b;j++){
    if(x[i][j]==0) x0++;
    else if(x[i][j]==1) x1++;
    }
}

printf("%d %d",x0,x1);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

H 逆序

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int arr[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    for (int i = n - 1; i >= 0; i--) {
        printf("%6d", arr[i]);
        if ((n - i) % 10 == 0) {
            printf("\n");
        }
    }
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

I 判断闰年

#include<stdio.h>
int main (){
int x;
scanf("%d",&x);
if (x<2000||x>2500){
    return 1;
}

if ((x%4==0&&x%100!=0)||(x%400==0)){
    printf("leap year");
}
else{
    printf("not leap year");
}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

J 译密码

#include<stdio.h>
int main(){
char A[6];
for (int i=0;i<6;i++){
    scanf("%c",&A[i]);
    if (A[i]=='\n')
    break;
}

for (int i=0;i<6;i++){
    if (A[i]>=97&&A[i]<=122){
        A[i]=(A[i]-'a'+4)%26+'a';
        printf("%c",A[i]);
    }
    else if (A[i]>=65&&A[i]<=90){
        A[i]=(A[i]-'A'+4)%26+'A';
        printf("%c",A[i]);
    }
    else{
        printf("%c",A[i]);
    }
}

printf("\n");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

K 字符统计

#include <stdio.h>
#include <ctype.h>

int main() {
    char str[100];
    int characters = 0, spaces = 0, numbers = 0, others = 0;

    fgets(str, sizeof(str), stdin);

    for (int i = 0; str[i] != '\0'; i++) {
        if (isalpha(str[i])) {
            characters++;
        } else if (isspace(str[i])) {
            spaces++;
        } else if (isdigit(str[i])) {
            numbers++;
        } else {
            others++;
        }
    }

    printf("characters=%d\n", characters);
    printf("spaces=%d\n", spaces-1);
    printf("numbers=%d\n", numbers);
    printf("others=%d\n", others);

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

L 逆序输出

#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]);
}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

我的个人博客地址
https://www.x1a0yu.top/index.php/archives/9/

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/261064
推荐阅读
相关标签
  

闽ICP备14008679号