29、输入3个学生4门课的成绩{(60,70,65,75),(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果保留一位小数。
#include <stdio.h> int main() { int student[3][4]; int i = 0; int j = 0; double result[3][2];//三个同学的总分和平均分 double sum = 0; double avg = 0; for (i = 0; i < 3; i++) { sum = 0; printf("请输入第%d个同学的四门成绩(中间用空格分隔):", i + 1); for (j = 0; j < 4; j++) { scanf("%d", &student[i][j]); sum += student[i][j]; } result[i][0] = sum; result[i][1] = sum / 4.0; } for (i = 0; i < 3; i++) { printf("第%d位同学的总分为:%.1lf,平均分为:%.1lf\n", i + 1, result[i][0], result[i][1]); } return 0; }
30、求两个正整数的最大公约数。
#include <stdio.h> int main() { int a = 0; int b = 0; int tmp = 0; printf("请输入俩个正整数:"); if (!(scanf("%d %d", &a, &b) && a > 0 && b > 0)) { printf("输入数据非法!\n"); return -1; } if (a < b) { tmp = a; a = b; b = tmp; } while (a % b != 0) { tmp = a % b; a = b; b = tmp; } printf("最大公约数为:%d\n", b); return 0; }
31、求100之内自然数中奇数之和。
#include <stdio.h> int main() { int i = 0; int sum = 0; for (i = 0; i < 100; i++) { if (1 == i % 2) { sum += i; } } printf("100之内的奇数之和为:%d\n", sum); return 0; }
32、输出所有200-400之间能被3整除且个位数字为7的整数
#include <stdio.h> int main() { int i = 0; for (i = 200; i < 400; i++) { if (0 == i % 3 && 7 == i % 10) { printf("%d ", i); } } printf("\n"); return 0; }
33、编程计算1 * 2 * 3+4 * 5 * 6+…+97 * 98 * 99的值
#include <stdio.h> int main() { int i = 0; int sum = 0; for (i = 1; i < 98; i += 3) { sum += i * (i + 1) * (i + 2); } printf("sum = %d\n", sum); return 0; }
34、输入n的值,计算并输出1 * 1+2 * 2+3 * 3+4 * 4+5 * 5+…+n * n的值。要求编写函数f求平方。
#include <stdio.h> int f(int num); int main() { int n = 0; int i = 0; int sum = 0; printf("请输入n:"); scanf("%d", &n); for (i = 0; i <= n; i++) { sum += f(i); } printf("sum = %d\n", sum); return 0; } int f(int num) { return num * num; }
35、计算并输出1-200之间不能被3整除的整数的和。
#include <stdio.h> int main() { int i = 0; int sum = 0; for (i = 1; i < 200; i++) { if (0 != i % 3) { sum += i; } } printf("sum = %d\n", sum); return 0; }
36、输入一个华氏温度,输出摄氏温度,计算公式为c=5/9*(F-32)。要求结果保留两位小数。
#include <stdio.h> int main() { double fahrenheit = 0; double degree_celsius = 0; printf("请输入一个华氏温度:"); scanf("%lf", &fahrenheit); degree_celsius = 5.0 / 9 * (fahrenheit - 32); printf("转换为摄氏温度为:%.2lf\n", degree_celsius); return 0; }
37、输入任意三个数,按从大到小的顺序输出
#include <stdio.h> int main() { int a = 0; int b = 0; int c = 0; scanf("%d%d%d", &a, &b, &c); if(a > b) { int temp = a; a = b; b = temp; } if(b > c) { int temp = b; b = c; c = temp; } if(a > b) { int temp = a; a = b; b = temp; } printf("%d %d %d\n", a, b, c); return 0; }
38、用1元人民币兑换5分、2分、1分的硬币共50枚,每种硬币至少一枚,问共有多少种兑换方案?输出每一种方案中三种硬币的数量
#include <stdio.h> int main() { int i = 0; int j = 0; int k = 0; printf("有如下几种情况:\n"); for (i = 1; i < 20; i++) { for (j = 1; j < 50; j++) { for (k = 1; k < 100; k++) { if ((100 == i * 5 + j * 2 + k) && (50 == i + j + k)) { printf("5分的%d个,2分的%d个,1分的%d个\n", i, j, k); } } } } return 0; }
39、从键盘输入圆的半径,计算并输出圆面积与周长,要求结果保留两位小数。
#include <stdio.h> #define PI 3.1415926 int main() { double r = 0; double per = 0; double area = 0; printf("请输入圆的半径:"); scanf("%lf", &r); per = 2 * PI * r; area = PI * r * r; printf("周长为:%.2lf,面积为:%.2lf\n", per, area); return 0; }
40、从键盘输入一个字符串,再输入两个正整数m和n,输出字符串中从m开始,连续n个字符。例如,输入abcdefg,2,3,输出bcd。
#include <stdio.h> int main() { char str[100]; int m = 0; int n = 0; printf("请输入一段字符:"); fgets(str, 100, stdin); printf("请依次输入m和n的值:"); scanf("%d %d", &m, &n); if (m > n) { printf("输入数据非法!"); return -1; } int i = 0; for (i = m - 1; i <= n; i++) { putchar(str[i]); } printf("\n"); return 0; }
41、输入一个不多于5位的正整数,判断它是几位数,并逆序输出各位数字
#include <stdio.h> int main() { int oldnum = 0; int newnum = 0; int len = 0; int tmp = 0; printf("请输入一个不多于五位的正整数:"); scanf("%d", &oldnum); tmp = oldnum; while (tmp != 0) { tmp /= 10; len++; } tmp = oldnum; while (tmp != 0) { newnum = newnum * 10 + tmp % 10; tmp = tmp / 10; } printf("这是个%d位数,逆序后为:%d\n", len, newnum); return 0; }
42、输出Fibonacci数列的前40项
#include <stdio.h> int main() { long long num1 = 0; long long num2 = 1; long long tmp = 0; int i = 0; printf("%lld,", num1); for (i = 2; i < 40; i++) { tmp = num1 + num2; num1 = num2; num2 = tmp; printf("%lld,", num1); } printf("\n"); return 0; }
43、判断某一年是否是闰年
#include <stdio.h> int main() { int year = 0; printf("请输入一个年份:"); scanf("%d", &year); if ((0 == year % 4 && 0 != year % 100) || (0 == year % 400)) { printf("是闰年!"); } else { printf("不是闰年!"); } printf("\n"); return 0; }
44、起泡法(选择法)对十个数排序
#include <stdio.h> int main() { int n[10] = { 3, 2, 5, 6, 7, 67, 14, 1, 8, 13 }; int i = 0; int j = 0; for (i = 0; i < 10 - 1; i++) { for (j = 0; j < 10 - 1 - i; j++) { if (n[j] > n[j + 1]) { int tmp = n[j]; n[j] = n[j + 1]; n[j + 1] = tmp; } } } printf("排序后的结果:\n"); for (i = 0; i < 10; i++) { printf("%d ", n[i]); } printf("\n"); return 0; }
45、判断某个数是否为素数.
#include <stdio.h> int main() { int n = 0; int i = 0; printf("请输入一个数字:"); scanf("%d", &n); for (i = 2; i < n; i++) { if (0 == n % i) { printf("不是素数!\n"); return 0; } } printf("是素数!\n"); return 0; }
46、编程计算1!+2!+3!+…+10的值。
#include <stdio.h> int main() { int i = 0; int sum = 0; int tmp = 1; for (i = 1; i <= 10; i++) { tmp = tmp * i; sum += tmp; } printf("sum = %d\n", sum); return 0; }
47、求以下数列前十五项的和:2/1,3/2,5/3,8/5,13/8,21/13…。
#include <stdio.h> int main() { int a1 = 1; int a2 = 1; int b1 = 0; int b2 = 1; int i = 0; double sum = 0; for (i = 0; i < 15; i++) { int tmp = a2; a2 = a1 + a2; a1 = tmp; tmp = b2; b2 = b1 + b2; b1 = tmp; sum += a2 / (double)b2; //printf("%lf\n", sum); } printf("sum = %.2lf\n", sum); return 0; }
48、从键盘输入圆柱体高与底面半径,计算并输出圆柱体表面积与体积,要求结果保留两位小数。
#include <stdio.h> #define PI 3.1415926 int main() { double high = 0; double r = 0; double area = 0; double volume = 0; printf("依次输入圆柱体高和地面半径:"); scanf("%lf %lf", &high, &r); //area = 2πr2 + 2πrh area = 2 * PI * r * r + 2 * PI * r * high; // 圆柱体的体积=底面积×高=(V=πr²h) volume = PI * r * r * high; printf("圆柱体表面积为:%.2lf, 体积:%.2lf\n", area, volume); return 0; }
49、从键盘输入一个十进制整型数据,计算并输出其各位上数字之和(忽略正负号)。例如,输入1234,输出10;输入-1234,输出10。
#include <stdio.h> int main() { int num = 0; int n = 0; printf("请输入一个数字:"); scanf("%d", &num); if (num < 0) { num *= -1; } while (num != 0) { n += num % 10; num /= 10; } printf("输出:%d\n", n); return 0; }
50、已知银行定期存款利率为r=2.25%,输入存款本金x、存款年数n,输出本利之和y=x(1+r)(1+r)…(1+r),共n个(1+r)。
#include <stdio.h> #include <math.h> int main() { double rate = 0.0225; int x = 0; int n = 0; double sum = 1; int i = 0; printf("请输入存款本金和存款年数:"); scanf("%d %d", &x, &n); for (i = 0; i < n; i++) { sum *= (1 + rate); } sum = x * sum; printf("本息和为:%.2lf\n", sum); return 0; }
51、编程判断输入的字符串是否为“回文”。所谓“回文”是指顺读和倒读都一样,如abcba。
#include <stdio.h> #include <string.h> int main() { char str[100]; fgets(str, 100, stdin); int len = strlen(str) - 1; int i = 0; for (i = 0; i < len / 2; i++) { if (str[i] != str[len - 1 - i]) { break; } } if (i != len / 2) { printf("不是回文!\n"); } else { printf("是回文!\n"); } return 0; }
52、编写程序,将用户输入的字符串中删除所有的数字,然后输出剩余的字符
#include <stdio.h> #include <ctype.h> int main() { char str[100]; char ch = ' '; int i = 0; while (scanf("%c", &ch) && ch != '\n') { if (!isdigit(ch)) { str[i++] = ch; } } str[i] = '\0'; fputs(str, stdout); printf("\n"); return 0; }
本章完!由于匆忙可能存在一些错误。感谢理解。