大家看看刚学c的大学牲吧😢😢
没显示有错误但是就是跑不起来qwq
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;
}