实验2
任务1
源代码
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 #define N1 397 #define N2 476 #define N3 21 int main() { int cnt; int random_major, random_no; srand(time(NULL)); // 以当前系统时间作为随机种子 cnt = 0; while (cnt < N) { random_major = rand() % 2; if (random_major) { random_no = rand() % (N2 - N1 + 1) + N1; printf("20248329%04d\n", random_no); } else { random_no = rand() % N3 + 1; printf("20248395%04d\n", random_no); } cnt++; } return 0; }
运行结果
问题一 a:生成379~476间的随机数
问题二a:生成1~21间的随机数
问题三a:随机在两个班中抽取5个人
任务二
源代码
#include <stdio.h> #include <math.h> int main() { double a, b, c; double delta, p1, p2; // 用于保存中间计算结果 while (scanf_s("%lf%lf%lf", &a, &b, &c) != EOF) { if (a == 0) { printf("a = 0, invalid input\n"); continue; } delta = b * b - 4 * a * c; p1 = -b / 2 / a; p2 = sqrt(fabs(delta)) / 2 / a; if (delta == 0) printf("x1 = x2 = %.2g\n", p1); else if (delta > 0) printf("x1 = %.2g, x2 = %.2g\n", p1 + p2, p1 - p2); else { printf("x1 = %.2g + %.2gi, ", p1, p2); printf("x2 = %.2g - %.2gi\n", p1, p2); } } return 0; }
运行结果
任务三
源代码
#include<stdio.h> int main() { char a; while (scanf_s("%c", &a) != EOF) { if (a == 'r') { printf("stop!\n"); getchar(); } else if (a == 'g') { printf("go go go\n"); getchar(); } else if (a == 'y') { printf("wait a minute\n"); getchar(); } else { printf("something must be wrong\n"); getchar(); } } return 0; }
运行结果
任务四
源代码
#include<stdio.h> #include<stdlib.h> float max(float n, float m) { return (n > m) ? n : m; } float min(float n, float m) { return (n < m) ? n : m; } int main() { float i, input, sum = 0; float m = 0; float q = 32767.0; printf("输入今日开销,直到输入-1终止\n"); for (i = 0; scanf_s("%f", &input) && input != -1; i++) { sum += input; m = max(m, input); q = min(q, input); } printf("今天累计消费:%.1f\n", sum); printf("今日最高一笔开销:%.1f\n", m); printf("今日最低一笔开销:%.1f\n", q); system("pause"); return 0; }
运行结果
任务五
源代码
#include<stdio.h> int main() { int n, a, b, c; while (scanf_s("%d%d%d", &a, &b, &c) != EOF) { if (a + b <= c || a + c <= b || b + c <= a) { printf("不构成三角形\n"); } else if (a == b && b == c) { printf("正三角形\n"); } else if (a == b || a == c || b == c) { printf("等腰三角形\n"); } else if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) { printf("直角三角形\n"); } else { printf("普通三角形\n"); } } return 0; }
运行结果
任务六
源代码
#include<stdio.h> #include<stdlib.h> int main() { printf("猜猜2024年11月哪天会是你的lucky day\n"); int i = 0, a, n; printf("开始喽,你有3次机会,猜吧(1~30):"); n = rand() % 31; while (i < 2) { ++i; scanf_s("%d", &a); if (a < n) { printf("你猜的日期早了,你的lucky day还没到呢\n"); printf("再猜:"); } else if (a > n) { printf("你猜的日期晚了,你的lucky day在前面哦\n"); printf("再猜:"); } else if (a == n) { printf("哇,猜中了:)\n"); system("pause"); exit(0); } } scanf_s("%d", &a); if (a < n) { printf("你猜的日期早了,你的lucky day还没到呢\n"); } else if (a > n) { printf("你猜的日期晚了,你的lucky day在前面哦\n"); } else if (a == n) { printf("哇,猜中了:)"); } printf("次数用光啦,偷偷告诉你,你的幸运数字是%d\n", n); system("pause"); return 0; }
运行结果