编写C语言程序,输入n和相应的n个数,统计输入的n个数的最大值以及其素数的个数

大家看看刚学c的大学牲吧😢😢
没显示有错误但是就是跑不起来qwq

img

img

img

img

max=a放到循环里,那岂不是每次max都改为新输入的值了么

说明:
该程序首先提示用户输入 n 的值,然后使用 for 循环读入 n 个数,并同时统计最大值和素数个数。其中 is_prime() 函数用于判断一个数是否为素数,变量 max_num 用于存储最大值,变量 prime_count 用于统计素数的个数。最后程序输出最大值和素数个数。
以下是C语言代码实现:

#include <stdio.h>
#include <stdbool.h> // 用于支持bool类型

bool is_prime(int num) { // 判断是否为素数
    if (num <= 1) {
        return false;
    }
    for (int i = 2; i <= num / 2; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    int n, max_num = 0, prime_count = 0;
    printf("请输入n的值:");
    scanf("%d", &n);
    
    for (int i = 0; i < n; i++) {
        int num;
        printf("请输入第%d个数:", i+1);
        scanf("%d", &num);
        
        if (num > max_num) { // 更新最大值
            max_num = num;
        }
        if (is_prime(num)) { // 判断是否为素数
            prime_count++;
        }
    }
    printf("n个数中的最大值为:%d\n", max_num);
    printf("n个数中的素数个数为:%d\n", prime_count);

    return 0;
}


题主的代码修改如下,改动处见注释,供参考:

#include <stdio.h>
int main()
{
    int n,i,j,count=0,flag,a,max;//修改
    printf("请输入正整数n:\n");
    scanf("%d", &n);
    printf("请输入%d个数:\n", n);
    for (i=1; i<=n; i++)
    {
        scanf("%d", &a);
        if (i==1 || max<a)     //修改
            max=a;
        for (j=2,flag=1;flag && j<a; j++) //修改
        {
            if (a%j==0) flag=0;
        }
        if (flag && a != 1)
            count++;
    }
    printf("这个数的最大值是:%d\n", max);
    printf("素数的个数为:%d\n", count);
    return 0;
}