C语言练习题110例(八)

71.奇偶统计

题目描述:

任意输入一个正整数N,统计1~N之间奇数的个数和偶数的个数,并输出。

输入描述:

一行,一个正整数N。(1≤N≤100,000)

输出描述:

一行,1~N之间奇数的个数和偶数的个数,用空格分开。

输入:

5

输出:

3 2

参考代码:

#include 

int main()
{
    int N = 0;
    scanf("%d", &N);
    printf("%d %d", N - N/2, N/2);
    return 0;
}

72.成绩统计

题目描述:

输入n科成绩(浮点数表示),统计其中的最高分,最低分以及平均分。

输入描述:

两行,

第1行,正整数n(1≤n≤100)

第2行,n科成绩(范围0.0~100.0),用空格分隔。

输出描述:

输出一行,三个浮点数,分别表示,最高分,最低分以及平均分(小数点后保留2位),用空格分隔。

输入:

5

99.5 100.0 22.0 60.0 88.5

输出:

100.00 22.00 74.00

参考代码:

#include 

int main()
{
    int n = 0;
    int i = 0;
    float score = 0;
    float sum = 0;
    float max = 0.0;
    float min = 100.0;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%f", &score);
        sum += score;
        if (score > max)
            max = score;
        if (score < min)
            min = score;
    }
    printf("%.2f %.2f %.2f", max, min ,sum/n);
    return 0;
}

73.密码验证

题目描述:

用户登录网站,通常需要注册,一般需要输入两遍密码。请编程判断输入的两次密码是否一致,一致输出“same”,不一致输出“different”

输入描述:

每行有两个用空格分开的字符串,第一个为密码,第二个为重复密码。

输出描述:

每组输出一个字符串(“same”或“different")。

输入:

abc abc

输出:

same

参考代码:

#include 
#include 

int main()
{
    char password1[20] = { 0 };
    char password2[20] = { 0 };
    scanf("%s %s", password1, password2);
    if (strcmp(password1, password2) == 0)
    {
        printf("same\n");
    }
    else
    {
        printf("different\n");
    }
    return 0;
}

74.矩阵计算

题目描述:

输入NxM矩阵,矩阵元素均为整数,计算其中大于零的元素之和。

输入描述:

第一行为N M(N: 矩阵行数;M: 矩阵列数,且M,N<=10),接下来的N行为矩阵各行。

输出描述:

一行,其中大于零的元素之和。

输入:

3 3

2 3 4

-5 -9 -7

0 8 -4

输出:

17

参考代码:

#include 

int main()
{
    int n = 0;
    int m = 0;
    int i = 0;
    int sum = 0;
    int num = 0;
    scanf("%d %d", &n, &m);
    for (i = 0; i < n; i++)
    {
        int j = 0;
        for (j = 0; j < m; j++)
        {
            scanf("%d", &num);
            if (num > 0)
                sum += num;
        }
    }
    printf("%d\n", sum);
    return 0;
}

75.逆序输出

题目描述:

输入10个整数,要求按输入时的逆序把这10个数打印出来。逆序输出,就是按照输入相反的顺序打印这10个数。

输入描述:

一行,输入10个整数(范围-231~231-1),用空格分隔。

输出描述:

一行,逆序输出输入的10个整数,用空格分隔。

输入:

1 2 3 4 5 6 7 8 9 10

输出:

10 9 8 7 6 5 4 3 2 1

参考代码:

#include 

int main()
{
    int i = 0;
    int arr[10] = {0};
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    for (i = 9; i >= 0; i--)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

76.统计数据正负个数

题目描述:

输入10个整数,分别统计输出正数、负数的个数。

输入描述:

输入10个整数(范围-231~231-1),用空格分隔。

输出描述:

两行,第一行正数个数,第二行负数个数,具体格式见样例。

输入:

-1 2 3 -6 7 8 -1 6 8 10

输出:

positive:7

negative:3

参考代码:

#include 

int main()
{
    int i = 0;
    int num = 0;
    int positive = 0;
    int negative = 0;
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &num);
        if (num > 0)
            positive++;
        else
            negative++;
    }
    printf("positive:%d\n", positive);
    printf("negative:%d\n", negative);
    return 0;
}

77.N个数之和

题目描述:

输入数字N,然后输入N个数,计算这N个数的和。

输入描述:

第一行输入一个整数N(0≤N≤50),第二行输入用空格分隔的N个整数。

输出描述:

输出为一行,为第二行输入的“N个整数之和”的计算结果。

输入:

5

1 2 3 4 5

输出:

15

参考代码:

#include 

int main()
{
    int i = 0;
    int n = 0;
    int num = 0;
    int sum = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &num);
        sum += num;
    }
    printf("%d\n", sum);
    return 0;
}

78.最低分与最高分之差

题目描述:

输入n个成绩,换行输出n个成绩中最高分数和最低分数的差。

输入描述:

两行,第一行为n,表示n个成绩,不会大于10000。

第二行为n个成绩(整数表示,范围0~100),以空格隔开。

输出描述:

一行,输出n个成绩中最高分数和最低分数的差。

输入:

10

98 100 99 97 95 99 98 97 96 100

输出:

5

参考代码:

#include 

int main()
{
    int i = 0;
    int num = 0;
    int sum = 0;
    int min = 100;
    int max = 0;
    int n = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &num);
        if (num > max)
            max = num;
        if (num < min)
            min = num;
    }
    printf("%d\n", max-min);
;    return 0;
}

79.有序序列判断

题目描述:

输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序。

输入描述:

第一行输入一个整数N(3≤N≤50)。

第二行输入N个整数,用空格分隔N个整数。

输出描述:

输出为一行,如果序列有序输出sorted,否则输出unsorted。

示例1

输入:

5

1 6 9 22 30

输出:

sorted

示例2

输入:

5

3 4 7 2 10

输出:

unsorted

参考代码:

#include 

int main()
{
    int n = 0;
    int flag1 = 0;
    int flag2 = 0;
    scanf("%d", &n);
    int i = 0;
    int arr[50] = { 0 };
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
        if (i > 0)
        {
            if (arr[i] < arr[i - 1])
                flag1 = 1;
            else if (arr[i] > arr[i - 1])
                flag2 = 1;
        }
    }

    if (flag1 + flag2 == 2)
    {
        printf("unsorted\n");
    }
    else
    {
        printf("sorted\n");
    }
        return 0;
}

80.序列中删除指定数字

题目描述:

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

输入描述:

第一行输入一个整数(0≤N≤50)。第二行输入N个整数,输入用空格分隔的N个整数。第三行输入想要进行删除的一个整数。

输出描述:

输出为一行,删除指定数字之后的序列。

输入:

6

1 2 3 4 5 9

4

输出:

1 2 3 5 9

参考代码:

#include 

int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    int j = 0;
    int key = 0;
    int arr[50] = { 0 };
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    scanf("%d", &key);
    for (i = 0; i < n; i++)
    {
        if (arr[i] != key)
        {
            arr[j++] = arr[i];
        }
    }
    for (i = 0; i < j; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

C语言练习题110例【81-90】

你可能感兴趣的:(c语言,算法,数据结构)