c语言-17题


2025年3月24日

1. 统计及格人数及平均分

#include <stdio.h>
int main() {
float score, sum=0;
int i=1, k=0; // k记录及格人数,sum记录总分
while(i <= 10) {
scanf("%f", &score);
if(score >= 60) {
k = k + 1;
sum = sum + score;
}
i = i + 1;
}
printf("及格人数:%d,平均分:%f", k, sum/k);
return 0;
}

2. 统计及格与不及格人数及平均分

#include <stdio.h>
int main() {
float score, sum_jige=0, sum_bujige=0;
int i=1, k=0, m=0; // k及格人数,m不及格人数
while(i <= 10) {
scanf("%f", &score);
if(score >= 60) {
k = k + 1;
sum_jige = sum_jige + score;
} else {
m = m + 1;
sum_bujige = sum_bujige + score;
}
i = i + 1;
}
printf("及格人数:%d,平均分:%f\n", k, sum_jige/k);
printf("不及格人数:%d,平均分:%f", m, sum_bujige/m);
return 0;
}

3. 统计优良、及格、不及格信息

#include <stdio.h>
int main() {
float score, sum_you=0, sum_ji=0, sum_bu=0;
int i=1, you=0, ji=0, bu=0;
while(i <= 10) {
scanf("%f", &score);
if(score >= 80) {
you = you + 1;
sum_you = sum_you + score;
} else if(score >= 60) {
ji = ji + 1;
sum_ji = sum_ji + score;
} else {
bu = bu + 1;
sum_bu = sum_bu + score;
}
i = i + 1;
}
printf("优良:%d人,平均分:%f\n", you, sum_you/you);
printf("及格:%d人,平均分:%f\n", ji, sum_ji/ji);
printf("不及格:%d人,平均分:%f", bu, sum_bu/bu);
return 0;
}

4. 统计各等级人数

#include <stdio.h>
int main() {
int score, i=1, you=0, ji=0, bu=0;
while(i <= 10) {
scanf("%d", &score);
if(score >= 80) {
you = you + 1;
} else if(score >= 60) {
ji = ji + 1;
} else {
bu = bu + 1;
}
i = i + 1;
}
printf("优良:%d人\n及格:%d人\n不及格:%d人", you, ji, bu);
return 0;
}

5. 输出3或7的倍数(每行10个)

#include <stdio.h>
int main() {
int i=1, count=0;
while(i <= 100) {
if(i % 3 == 0 || i % 7 == 0) {
printf("%d ", i);
count = count + 1;
if(count % 10 == 0) {
printf("\n");
}
}
i = i + 1;
}
printf("\n总共有%d个", count);
return 0;
}

6.1 计算m到n的奇数和

#include <stdio.h>
int main() {
int m, n, sum=0;
scanf("%d %d", &m, &n);
int current = m;
while(current <= n) {
if(current % 2 != 0) {
sum = sum + current;
}
current = current + 1;
}
printf("奇数和:%d", sum);
return 0;
}

6.2 统计能被17整除的数的和

#include <stdio.h>
int main() {
int m, n, sum=0;
scanf("%d %d", &m, &n);
int current = m;
while(current <= n) {
if(current % 17 == 0) {
sum = sum + current;
}
current = current + 1;
}
printf("和:%d", sum);
return 0;
}

7. 求正整数的因数

#include <stdio.h>
int main() {
int num, i=1, count=0, sum=0;
scanf("%d", &num);
printf("因数:");
while(i <= num) {
if(num % i == 0) {
printf("%d ", i);
count = count + 1;
sum = sum + i;
}
i = i + 1;
}
printf("\n个数:%d,总和:%d", count, sum);
return 0;
}

8. 统计1、5、10的出现次数

#include <stdio.h>
int main() {
int n, num, i=1, c1=0, c5=0, c10=0;
scanf("%d", &n);
while(i <= n) {
scanf("%d", &num);
if(num == 1) c1 = c1 + 1;
else if(num == 5) c5 = c5 + 1;
else if(num == 10) c10 = c10 + 1;
i = i + 1;
}
printf("1出现:%d次\n5出现:%d次\n10出现:%d次", c1, c5, c10);
return 0;
}

9. 找出符合条件的四位数

#include <stdio.h>
int main() {
int num=1000, count=0;
while(num <= 9999) {
int a = num / 1000;
int b = (num / 100) % 10;
int c = (num / 10) % 10;
int d = num % 10;
if(d - a - b - c > 0) {
printf("%d ", num);
count = count + 1;
}
num = num + 1;
}
printf("\n共有%d个", count);
return 0;
}

10. 输出水仙花数

#include <stdio.h>
int main() {
int num=100, count=0;
while(num <= 999) {
int a = num / 100;
int b = (num / 10) % 10;
int c = num % 10;
if(a*a*a + b*b*b + c*c*c == num) {
printf("%d ", num);
count = count + 1;
}
num = num + 1;
}
printf("\n水仙花数共有%d个", count);
return 0;
}

11. 输出100-200的回文数

#include <stdio.h>
int main() {
int num=100, count=0;
while(num < 200) {
int a = num / 100;
int c = num % 10;
if(a == c) {
printf("%d ", num);
count = count + 1;
}
num = num + 1;
}
printf("\n回文数共有%d个", count);
return 0;
}

12. 统计字符类型(输入10个字符)

#include <stdio.h>
int main() {
int i=0, letter=0, space=0, digit=0, other=0;
char ch;
while(i < 10) {
scanf(" %c", &ch); // 空格跳过换行符
if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
letter = letter + 1;
} else if(ch >= '0' && ch <= '9') {
digit = digit + 1;
} else if(ch == ' ' || ch == '\n') {
space = space + 1;
} else {
other = other + 1;
}
i = i + 1;
}
printf("字母:%d,数字:%d,空格:%d,其他:%d", letter, digit, space, other);
return 0;
}

13. 求sum首次超过100时的n

#include <stdio.h>
int main() {
int n=0, sum=0;
while(sum <= 100) {
n = n + 1;
sum = sum + n;
}
printf("n=%d,sum=%d", n, sum);
return 0;
}

14. 找最小x使a,b,c同余

#include <stdio.h>
int main() {
int a, b, c, x=2;
scanf("%d %d %d", &a, &b, &c);
while(1) {
if(a % x == b % x && b % x == c % x) {
printf("%d", x);
break;
}
x = x + 1;
}
return 0;
}

15. 找最大值和最小值

#include <stdio.h>
int main() {
int num, min=1000, max=0;
printf("输入若干整数(输入非数字结束):");
while(scanf("%d", &num) == 1) {
if(num < min) min = num;
if(num > max) max = num;
}
printf("最小值:%d,最大值:%d", min, max);
return 0;
}

16. 判断m是否符合条件

#include <stdio.h>
int main() {
int m, k, count3=0, temp;
scanf("%d %d", &m, &k);
temp = m;
while(temp > 0) {
int digit = temp % 10;
if(digit == 3) count3 = count3 + 1;
temp = temp / 10;
}
if(m % 19 == 0 && count3 == k) {
printf("YES");
} else {
printf("NO");
}
return 0;
}

17. 统计与指定数字相同的个数

#include <stdio.h>
int main() {
int n, m, num, count=0, i=0;
scanf("%d %d", &n, &m);
while(i < n) {
scanf("%d", &num);
if(num == m) count = count + 1;
i = i + 1;
}
printf("%d", count);
return 0;
}

——感谢马骁在群里提供的代码