实验二
task1
//此程序功能:随机生成5个学号 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5 int main() { int grade, number; int i; srand(time(0)); for (i = 0; i < N; ++i) { grade = rand() % 4 + 2018;//rand()%4得到0-3的数,所以grade的值是2021、2020、2019、2018 number = rand() % 999 + 1;//rand()%999得到0-998的数,所以number的值是1-999的整数 printf("%d8330%04d\n", grade, number); } return 0; }

task2
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int luckyday; printf("猜猜2022年4月哪一天会是你的lucky day\n\n"); srand(time(0)); luckyday = rand() % 30 + 1; printf("开始喽,你有3次机会,猜吧(1~30):"); int i; for (i = 0; i < 3; ++i) { int x; scanf("%d", &x); if (x < luckyday) { printf("你猜的时间早了,你的lucky day还没到呢\n\n"); if(i<2) printf("再猜(1~30):"); continue; } else if (x > luckyday) { printf("你猜的日期晚了,你的lucky day已经过了\n\n"); if(i<2) printf("再猜(1~30):"); continue; } else if (x = luckyday) { printf("恭喜你回答正确\n\n"); break; } i++; } while (i == 3) { printf("你的lucky day是:%d", luckyday); ++i; } return 0; }

task3
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { char ch; while ((ch = getchar()) != EOF) { getchar(); if (ch == 'r') printf("stop!\n\n"); else if (ch == 'g') printf("go go go\n\n"); else if (ch == 'y') printf("wait a minute\n\n"); else printf("something must be wrong\n\n"); } return 0; }

task4
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> int main() { int a, n; double s , p ,i; while (scanf("%d%d", &n, &a) != EOF) { p = 0.0, s = 0.0; for (i = 1; i <= n; ++i) { p += a * pow(10, i - 1); s += i / p; } printf("n=%d,a=%d,s=%lf\n\n", n, a, s); } return 0; }

task5
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> #include<stdio.h> int main() { int line,column,value; for (line = 1; line <= 9; line++) { for (column = 1; column <= line; column++) { value = column * line; printf("%d*%d=%d ", line, column, value); } printf("\n"); } return 0; }

task6-1
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int i,n; printf("input n:"); scanf("%d", &n); for (i = 1; i <=n;i++) { printf(" o\n"); printf("<H>\n"); printf("I I\n\n"); } return 0; }

task6-2
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int i, n; printf("input n:"); scanf("%d", &n); for (i = 1; i <= n; i++) { printf(" o "); while (i == n) { printf("\n"); i++; } } for (i = 1; i <= n; i++) { printf("<H> "); while (i == n) { printf("\n"); i++; } } for (i = 1; i <= n; i++) { printf("I I "); while (i == n) { printf("\n"); i++; } } return 0; }

task6-3
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int n,i,j,m,t; printf("input n:"); scanf("%d", &n); for (j =1; j<=n; j++)//n行小人 { t = 5* (j - 1); printf("%*s", t, ""); for (i = j; i <= 2*n-j; i++) printf(" o "); printf("\n"); t = 5 * (j - 1); printf("%*s", t, ""); for (i = j; i <= 2*n-j; i++) printf("<H> "); printf("\n"); t = 5 * (j - 1); printf("%*s", t, ""); for (i = j; i <= 2*n-j; i++) printf("I I "); printf("\n"); } return 0; }

收获:
1.输入时,需要接收字符的getchar()接收了上次输入时最后的回车键,而没有正确的接收我要输入的字符。可使用getchar回收掉回车,再输入字符。eg:task3
2.在循环外和循环内给变量赋值带来的结果不同。eg:task4中s和p的赋值
3.
t = 5 * (j - 1);
printf("%*s", t, "");
输出连续空格

浙公网安备 33010602011771号