实验二 C语言分支与循环基础应用编程

实验二 C语言分支与循环基础应用编程


实验任务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++;
	}

}

1-1 1-2 1-3


问题1

rand()生产一个随机数% (N2 - N1 + 1)将随机数限制在0N2 - N1(班级人数)之间,最后加上N1组成学号。

问题2

同上,此时班级人数为N3,加上1组成学号。

问题3

随机从两个班级中抽取学号。



实验任务2——一元二次方程

#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);
		}
	}

}

2-1



实验任务3——模拟信号灯

#include <stdio.h>


int main() 
{
	char a;

	while (scanf_s("%c", &a) != EOF) {
		getchar();
		if (a == 'r') {
			printf("stop!\n");
		}
		else if (a == 'y') {
			printf("wait a minute\n");
		}
		else if (a == 'g') {
			printf("go go go\n");
		}
		else {
			printf("something must be wrong...\n");
		}
	}

}

3-1



实验任务4——记账

#include <stdio.h>

int main() {
	printf("输入今日开销:\n");

	double input, sum,  max, min;
	max = 0;
	min = 20000;
	sum = 0;

	while (1) {
		scanf_s("%lf", &input);
		getchar();

		if (input == -1) {
			break;
		}
		if (input < min) {
			min = input;
		}
		if (input > max) {
			max = input;
		}

		sum += input;
	}

	printf("今日累计消费总额:%lf\n", sum);
	printf("今日最高一笔开销:%lf\n", max);
	printf("今日最低一笔开销:%lf\n", min);

}

4-1



实验任务5——三角形形状

#include <stdio.h>

int main() 
{
	int a, b, c;
	while (scanf_s("%d%d%d", &a, &b, &c) != EOF) {
		getchar();

		if (a + b > c && b + c > a && a + c > b) {
			
			if (a == b || b == c || a == c) {
				if (a == b && b == c && a == c) {
					printf("等边三角形\n");
				}
				else if (a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b) {
					printf("等腰直角三角形\n");
				}
				else {
					printf("等腰三角形\n");
				}
			}
			else if (a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b) {
				printf("直角三角形\n");
			}
			else {
				printf("普通三角形\n");
			}
		}
		else {
			printf("不能构成三角形\n");
		}
	}
}

5-1



实验任务6——猜日期

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() 
{
	srand(time(NULL));
	int num = (rand() % 30 + 1);
	int input, min, max;

	min = 1;
	max = 30;

	printf("从1-30中猜一个数");
	for (int i = 0;i < 3;i++) {
		printf("%d~%d:", min, max);
		scanf_s("%d", &input);
		if (input == num) {
			printf("猜对了!");
			return 0;
		}
		else  if (input > num) {
			printf("大了\n");
			max = input - 1;
		}
		else {
			printf("小了\n");
			min = input + 1;
		}
	}
	printf("答案是:%d", num);
}

6-1 6-2



posted @ 2024-10-09 19:52  氧化铜の人  阅读(27)  评论(3编辑  收藏  举报