#define _CRT_SECURE_NO_WARNINGS #include2.输出1000以内的所有完数。“完数”是指一个数的因子之和等于自身。int main() { int i, j, n; long long sum = 0, m; printf("请输入需要计算的数据个数n: "); scanf("%d", &n); while (n < 1 || n >= 16) { printf("n应该大于1小于16,请重新输入n: "); scanf("%d", &n); } //计算阶乘和 for (i = 1; i <= n; i++) //控制个数 { m = 1; for (j = 1; j <= i; j++) //控制阶乘数 { m *= j; } sum += m; } printf("1!+......%d! = %lldn", n, sum); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include3.输入两个正整数m和n,计算并输出其最大公约数。#define NUM 1000 int main() { int i, j, sum; printf("%d以内的完数信息如下:n", NUM); for (i = 2; i <= NUM; i++) { sum = 1; //任何一个自然数n的因子对不可能大于n/2,只需将j枚举到i/2即可 for (j = 2; j <= i / 2; j++) { //判断j是否是i的因子 if (i % j == 0) { sum += j; } } //输出完数信息 if (sum == i) { printf("%dt ", i); printf("%d的因子为:", i); for (j = 1; j <= i / 2; j++) { //判断j是否是i的因子 if (i % j == 0) { printf("%d ", j); } } printf("n"); } } printf("n"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include#include int main() { int m, n, r; //n代表最大公约数,r代表余数 printf("请输入两个整数m,n: "); scanf("%d,%d", &m, &n); if (m < 1 || n < 1) { printf("输入的m或n的值不合法!n"); exit(0); } printf("%d与%d的最大公约数 = ", m, n); r = m % n; while (r!=0) { m = n; n = r; r = m % n; } printf("%dn",n); printf("n"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include4.一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第8次落地时共经过多少米,第8次反弹多高。#include int main() { int m, n, i; printf("请输入两个整数m,n: "); scanf("%d,%d", &m, &n); if (m < 1 || n < 1) { printf("输入的m或n的值不合法!n"); exit(0); } printf("%d与%d的最大公约数 = ", m, n); for (i = m < n ? m : n; i >= 1; i--) { if (m % i == 0 && n % i == 0) { printf("%dn", i); break; } } printf("n"); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include5.输入一行字符,分别统计其中英文字母、数字和其他字符的个数。int main() { float high, h = 100; int i; high = h / 2; //已经计算了第一次落地的数据 for (i = 2; i <= 8; i++) { h = h + 2 * high; //第n次落地时经过的总路程 high = high / 2; } printf("第8次落地时共经过:%.2fmn", h); printf("第8次落地时反弹:%.2fmn", high); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include6.从键盘输入任意个整数,以-888结束(不计入),计算并输出其中的最大数和最小数。#define LEN 150 int main() { char string[LEN]; printf("请输入一行字符: "); gets_s(string); int i; int letters = 0, digit = 0, others = 0; //英文字母,数字,其他字符 for (i = 0; string[i] != ' '; i++) { if (string[i] >= 'a' && string[i] <= 'z' || string[i] >= 'A' && string[i] <= 'Z') letters++; else if (string[i] >= '0' && string[i] <= '9') digit++; else others++; } printf("n字母个数:%dn数字个数:%dn其他字符个数:%dn",letters,digit,others); return 0; }
7.要将100元钱换成1元、5元和10元的零钱,每种零钱的张数大于0,且为5(的倍数,编程输出所有可能的换法。对于这道题目,我是真的不太理解。
如何设置初始的最值?如何将输入的数据存储比较?
#define _CRT_SECURE_NO_WARNINGS #include8.百钱百鸡问题。用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,小鸡三只一钱,编程输出所有可能的买法(要求每种鸡至少要买1只)。int main() { int value_1, value_5, value_10, count = 0; printf("所有可能的换法如下:nn"); //保持每种面额的钱为5的倍数,每次加5 for (value_1 = 5; value_1 * 1 <= 100; value_1 += 5) { for (value_5 = 5; value_5 * 5 <= 100; value_5 += 5) { for (value_10 = 5; value_10 * 10 <= 100; value_10 += 5) { if (100 == 1 * value_1 + 5 * value_5 + 10 * value_10) { count++; printf("¥1:%dtt¥5:%dtt¥10:%dn", value_1, value_5, value_10); } } } } printf("总计%d种情况.n",count); return 0; }
#define _CRT_SECURE_NO_WARNINGS #includeint main() { int cock, hen, chick; //公鸡,母鸡,小鸡 int count = 0; printf("所有可能的买法如下:nn"); for (cock = 1; cock * 5 <= 100; cock++) { for (hen = 1; hen * 3 <= 100; hen++) { for (chick = 1; chick *1/ 3 <= 100; chick++) { if ((cock + hen + chick == 100) && (15 * cock + 9 * hen + 1 * chick == 300)) { count++; printf("cock:%dtthen:%dttchick:%dn", cock, hen, chick); } } } } printf("n总计%d种情况.n", count); return 0; }
不对方程中的1/3处理的结果:
正确结果:



