Work_4
1.在屏幕上输出以下图案:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main(){ int x = 0; printf("请输入该图案的行数:\n"); scanf("%d", &x); int number = -1; for (int i = 1; i <= x; i++){ if (i <= x / 2 + 1){ number = number + 2; for (int m = 1; m <= number; m++){ printf("*"); } printf("\n"); } else { number = number - 2; for (int n = 1; n <= number; n++){ printf("*"); } printf("\n"); } } printf("\n"); system("pause"); return 0; }
2.求出0~999之间的所有“水仙花数”并输出。
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。
例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:
153 = 1^3 + 5^3 + 3^3。
370 = 3^3 + 7^3 + 0^3。
371 = 3^3 + 7^3 + 1^3。
407 = 4^3 + 0^3 + 7^3。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int Cube(int number){ int cube = 0; cube = number * number * number; return cube; } int Daffodil(int i){ int sum = 0; int x1, x2, x3; x1 = x2 = x3 = 0; while (i > 0){ x1 = i % 10; i = i / 10; x2 = i % 10; i = i / 10; x3 = i % 10; i = i / 10; } sum = Cube(x1) + Cube(x2) + Cube(x3); return sum; } int main(){ printf("100~999之间的所有水仙花数为:\n"); for (int x = 100; x < 999; x++){ if (Daffodil(x) == x){ printf("%4d", x); } } printf("\n"); system("pause"); return 0; }
3.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math.h> int Every_item(int number){ int item = 0; for (int i = 0; i < number; i++){ item = item + 2*(pow(10.0, i)); } return item; } int main(){ int item_number = 0; printf("请输入项数:\n"); scanf("%d", &item_number); int Sn = 0; for (int i = 1; i <= item_number; i++){ Sn = Sn + Every_item(i); } printf("Sn=%d\n",Sn); printf("\n"); system("pause"); return 0; }
注释:
多写函数,使问题模块化,让问题的层次和结构更加清楚。for()不多于三层,最好控制在两层。