实验2 C语言控制语句应用编程
1试验任务一
(1)task1.c源代码,及,运行结果截图
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 int main() { int number; int i; srand(time(0)); // 以当前系统时间作为随机种子 for (i = 0; i < N; ++i) { number = rand() % 500 + 1; printf("20228329%04d\n", number); } return 0; }
(2)回答试验任务一中提出的问题
问题1:解释line17代码 number = rand()%500 + 1; 的功能
答:其功能是产生1~500之间的随机数
问题2:这个程序的功能是什么?
答:该程序的功能是随机打印2022级新生的学号
2.试验任务2
task2.c源代码,及,运行结果截图
/*使用随机函数,生成1~31之间的一个随机整数作为11月的lucky day 用户有三次猜的机会。根据用户输入的日期,提示用户猜的日期是猜中了,或是,早或晚。 如果用户已经猜中了,则无需打印输出lucky day。 如果用户用光三次机会也没有猜中,那么,就打印输出用户在11月的lucky day。*/ #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int num, lnum, i; printf("猜猜2022年11月那一天会是你的lucky day\n"); printf("开始喽,你有三次机会,猜吧(1~30): "); srand(time(0)); for (i = 1; i <= 3; i++) { scanf_s("%d", &num); lnum = rand() % 30 + 1; if (num == lnum) { printf("哇,猜对了\n"); break; } else if (num < lnum) { printf("你猜的日期早了,你的lucky day 还没到呢\n"); printf("再猜:"); } else { printf("你猜的日期晚了,你的lucky day还没到呢\n"); printf("再猜:"); } } if (i == 4) printf("次数用完了,偷偷告诉你:11月你的lucky day是%d号\n", lnum); return 0; }
3.试验任务3
task3.c源代码,及,运行结果截图
/*判断交通信号灯颜色,要求用户从键盘输入字符,用来表示交通信号灯颜色。输入r表示red,输入g表示green, 输入y表示 yellow*/ #include<stdio.h> int main() { char color; printf("请输入交通信号灯颜色:r表示red,g表示green,y表示yellow\n"); while (scanf_s("%c", &color) != EOF) { getchar(); switch (color) { case 'r':printf("stop!\n"); break; case 'g':printf("go go go\n"); break; case 'y':printf("wait a minute\n"); break; default:printf("something must be wrong.....\n"); break; } } return 0; }
4.试验任务4
task4.c源代码,及,运行结果截图/*编写程序task4.c,实现从键盘输入正整数n和a,根据计算式,计算s。要求支持多组输入*/
#include<stdio.h> #include<math.h> int main() { int n, i,a,j,c; float s;
while (scanf_s("%d %d", &n, &a) != EOF) { s = 0; for (i = 1; i <= n; i++) { c = a; for (j = 2; j <= i; j++) c = c + c * pow(10, j - 1); s = s + (float)i / c; } printf("n = %d,a = %d,s = %lf\n", n,a,s); } return 0; }
细节:对于实验4一定要记住每次循环都需要将s初始化为0
5.试验任务5
task5.c源代码,及,运行结果截图
//打印九九乘法表 #include<stdio.h> int main() { int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) printf("%d * %d = %d\t", j, i, j * i); printf("\n"); } return 0; }
6.试验任务6
task6.c源代码,及,运行结果截图
//从键盘输入n, 打印n行按图示方式递减的字符小人阵列 #include<stdio.h> int main() { int i, j, n, s, k,q,r,t,p; scanf_s("%d", &n); s = n; for (i = 1; i <= n; i++) { for (j = 1; j < i; j++) printf("\t"); for (k = 1; k <= (2 * s - 1); k++) printf(" o \t"); printf("\n"); for (q = 1; q < i; q++) printf("\t"); for (r = 1; r <= (2 * s - 1); r++) printf("<H>\t"); printf("\n"); for (t = 1; t < i; t++) printf("\t"); for (p = 1; p <= (2 * s - 1); p++) printf("I I\t"); printf("\n"); s = s - 1; } return 0; }