练习1:数字统计

  • 请使用者输入10个整数后,输出最大与平均值

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

13 23 78 77 37 30 40 50 83 99
Max: 99
Avg: 53

Process returned 0 (0x0) execution time : 36.634 s
Press any key to continue.

// 三个参数都狗在一起
#include <stdio.h>

int main() {
    int i, n, max, avg, sum = 0;
    for (i = 1; i <= 10; i++) {
        scanf("%d", &n);  // 读数字
        if (i == 1 || n > max) {
            max = n; // 把第一个数赋值给max,比较合理,如果max直接等于0,那就没有考虑负数的情况
        }
        sum += n; // sum每次加数
    }
    avg = sum / 10;
    printf("Max: %d\n", max);
    printf("Avg: %d\n", avg);
    return 0;
}

// 各参数依次分开
#include <stdio.h>

int main()
{
    int i, n[10], avg;
    for (i = 1; i <= 10; i++) {
        scanf("%d", &n[i-1]);// 数组是从0开始的
    }
    int max = n[0]; // 把max是为第一个数
    for (i = 1; i < 10; i++) {
        if (n[i] > max) {
            max = n[i];
        }
    }
    int sum = n[0];
    for (i = 1; i < 10; i++) {
        sum += n[i];
    }
    avg = sum / 10;
    printf("Max: %d\n", max);
    printf("Avg: %d\n", avg);
    return 0;


}

// 使用函式来做
#include <stdio.h>
#include <stdlib.h>

int max10(int n[10]);
int avg10(int n[10]);

void main()
{
    int i, n[10];
    for (i =1; i <= 10; i++) {
        scanf("%d", &n[i-1]);
    }
    printf("Max: %d\n", max10(n));
    printf("Avg: %d\n", avg10(n));
    return 0;
}

int max10(int n[10]){
    int i, max;
    for (i = 1; i <= 10; i++) {
        if (i == 1 || n[i-1] > max) {
            max = n[i-1];
        }
    }
    return max;

}

int avg10(int n[10])
{
    int i, sum=0;
    for (i = 1; i <= 10; i++) {
        sum += n[i-1];
    }
    return sum /10;
}

 练习2:(1)产生不重复乱数的练习

  • 随机产生一组由10个1到10之间的数字所组成的序列,序列里面没有重复的数字
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand(time(0));
    int i, j, n[10];
    for (i = 1; i <= 10; i++) {
            do {
                n[i-1] = rand() % 10 + 1;// rand()是产生乱数的函式,rand() % 10 产生1到9,然后再加1;就是1到10了
                for (j = 1; j <= i; j++) {
                    if (n[i-1] == n[j-1]) {
                        break;
                    }
                }
            }while (j != i); // j=i表示这个值没有被用过,j!=表示这个值被用过了,没有自然的结束,被break了。

        printf(" %d", n[i -1]);
    }
    printf("\n");
    return 0;

}

 2 10 8 6 5 4 7 3 1 9

Process returned 0 (0x0)   execution time : 7.412 s
Press any key to continue.

 

(2)产生不重复乱数的练习

  • 随机产生一组由10个1到10之间的数字所组成的序列,序列里面没有重复的数字
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand(time(0));
    int i, n, counter[10] = {10};// 统计1到10有没有被使用过,计数,为1次表示只用一次没有重复
    for (i = 1; i <= 10; i++) {
            do {
                n = rand() % 10 + 1;// rand()是产生乱数的函式,rand() % 10 产生1到9,然后再加1;就是1到10了
            } while (counter[n-1] != 0);//
            printf(" %d", n);
            counter[n-1]++;
            }

    printf("\n");
    return 0;

}

 5 2 3 8 10 4 7 6 9

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄