程序一:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
1 #include<stdio.h> 2 void main(){ 3 int a, b, c, i; 4 for (i = 100; i <= 999; i++){ 5 //获取百位数 6 a = i / 100; 7 //获取十位数 8 b = i / 10 % 10; 9 c = i % 10; 10 if ((a*a*a + b*b*b + c*c*c) == i){ 11 printf("%d ",i); 12 } 13 } 14 }
程序二:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
1 #include<stdio.h> 2 void main() 3 { 4 int a, k = 0, i; 5 char b[100]; 6 scanf_s("%d", &a); 7 printf("%d=", a); 8 for (i = 2; i <= a; i++) 9 { 10 do 11 { 12 if (a%i == 0) 13 { 14 b[k] = i; k++; 15 a = a / i; 16 } 17 else 18 break; 19 } while (a >= i); 20 } 21 for (i = 0; i<2 * k - 1; i++) 22 if (i % 2 == 0) 23 printf("%d", b[i / 2]); 24 else 25 printf("*"); 26 }
程序三:输入两个正整数m和n,求其最大公约数和最小公倍数。
1 #include<stdio.h> 2 void main() 3 { 4 int a, b, x, y, r, t; 5 scanf_s("%d,%d", &a, &b); 6 printf("%d %d ", a, b); 7 x = a; 8 y = b; 9 //交换位置 最终结果 y>x 10 if (x>y) 11 { 12 t = y; y = x; x = t; 13 } 14 //碾转相除获取最大公约数 15 do 16 { 17 r = y%x; 18 y = x; 19 x = r; 20 } while (r != 0); 21 printf("%d ", y); 22 //根据两个数的乘积除以其最大公约数就是最小公倍数 23 printf("%d", a*b / y); 24 }
程序四:判断10-30之间有多少个素数,并输出所有素数。所谓素数:仅能被1和它本身整除的数。
1 #include<stdio.h> 2 void main() 3 { 4 int a, b, i, j, k, s = 0, n = 0; 5 int c[100]; 6 for (i = 10; i <= 30; i++) 7 { 8 k = 0; 9 for (j = 2; j <= i / 2; j++) 10 { 11 b = i%j; 12 if (b == 0) 13 k = 1; 14 } 15 if (k == 0) 16 { 17 s++;//计数用 18 c[n] = i;//将素数放进数组中 19 n++;//数组键值 20 } 21 } 22 printf("%d ", s);//一共多少个素数 23 //打印出数组内容 24 for (i = 0; i<n; i++) 25 printf("%d ", c[i]); 26 }
程序五:Fibonacci数列,第1数为1,第2数为1,从第3输开始,为前两个数的和,即f1=1;f2=1;fn=fn-1+fn-2;求前20项个是什么,并且每行输出五个数
#include<stdio.h> void main() { int f1, f2, f3, i, j; f1 = 1; f2 = 1; printf("%d %d ", f1, f2); for (i = 1; i <= 20; i++) { f3 = f1 + f2; f1 = f2; f2 = f3; printf("%d ", f3); //换行使用 for (j = 1; j <= 20; j++) { if (i == 5 * j - 2) printf(" "); } } }
程序六:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
#include <stdio.h> void main() { int count, i, sum, t, a; scanf_s("%d", &count); scanf_s("%d", &a); t = a; sum = 0; //每个数在前一个数的基础上增长了10倍 并加上了个位数 for (i = 1; i <= count; i++) { sum = sum + t; t = 10 * t + a; } printf("%3d", sum); }