一、实验结论

task1

#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;
		number = rand() % 999 + 1;
		printf("%d8330%04d\n", grade, number);
	}
	return 0;
}

image

问题1:解释line16代码的功能

答:随机生成2018-2021范围内的数。

问题2:解释line17代码的功能

答:随机生成1-999范围内的数。

问题3:这个程序的功能是什么?

答:随机生成五个201883300001-202183300999内的数(随机生成五个2018届到2021届学生的学号)。

task2

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 3
int main()
{
	int ld, d,i,n=0;
	srand(time(0));
	ld = rand() % 30 + 1;

	printf("猜猜2022年4月哪一天会是你的lucky day\n\n");
	printf("开始喽,你有三次机会,猜吧(1^30):");
	for (i = 0; i < N; ++i)
	{
		scanf_s("%d", &d);
		if (d == ld)
		{
		printf("\n哇,猜中了:-)\n"); break;
		}

		if (d > ld)
		{
			printf("\n你猜的日期晚了,你的lucky day已经过啦\n");
		}
		else
		{
			printf("\n你猜的日期早了,你的lucky day 还没到呢\n");
		}
		n++;

		if(n<N)
		{
			printf("\n再猜(1^30):");
		}
		else
		{
			printf("\n次数用完啦。偷偷告诉你:4月,你的lucky day是%d号\n", ld);
		}

	}
	return 0;
}

出现“猜中”情况
image

三次均“未猜对”
image

task3

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main()
{
	char c;
	while (scanf_s("%c", &c) != EOF)
	{
		if (c == 'y')
		{
			printf("wait a minute\n");
		}

		else if (c == 'g')
		{
			printf("go go go\n");
		}

		else if (c == 'r') 
		{
			printf("stop!\n");
		}

		else
		{
			printf("something must be wrong...\n");
		}

		c = getchar();
	}
	return 0;
}

image

task4

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

int main()
{
	int n, a;
	double i, s,b;
	while (scanf_s("%d%d", &n, &a) != EOF)
	{
		for (s = 0, b = 0, i = 1; i <= n; i++)
		{
			b=b+a * pow(10, i - 1);
			s += i / b;
		}

		printf("n=%d,a=%d,s=%f\n\n", n, a, s);
	}
	return 0;
}

image

task5

#include<stdio.h>
#define N 9
int main()
{
	int i, j;
	for (i = 1; i <=N; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d×%d=%-4d",j, i, j * i);
		}
		printf("\n");
	}
	printf("\n--------------------------");
	return 0;
}

image

task6

task6-1

#include<stdio.h>
int n,N;

int main()
{
	printf("input n:");
	scanf_s("%d", &N);
	do
	{
		printf(" o \n");
		printf("<H>\n");
		printf("I I\n");
		printf("\n");
		n++;
	} while (n <=N);

	return 0;
}

image

task6-2

#include <stdio.h>
int main()
{
	int n,N;
	printf("input n:");
	scanf_s("%d", &N);

	for (n= 1; n <= N; n++)
	printf(" o\t");
	printf("\n");

	for (n = 1; n <= N; n++)
	printf("<H>\t");
	printf("\n");

	for (n = 1; n <= N; n++)
	printf("I I\t");
	printf("\n");

return 0;
}

image

task6-3

#include<stdio.h>
int main()
{
	int N,m,n,a;
	printf("input n:");
	scanf_s("%d", &N);
	for (m = 0; m <= N; m++)
	{
		for (n = 0; n <= m; n++)
			printf("\t");
		for (a = 0; a < N * 2 + 1 - m * 2; a++)
			printf(" o \t");
			printf("\n");

		for (n = 0; n <= m; n++)
			printf("\t");
		for (a = 0; a < N * 2 + 1 - m * 2; a++)
			printf("<H>\t");
			printf("\n");

		for (n = 0; n <= m; n++)
			printf("\t");
		for (a = 0; a < N * 2 + 1 - m * 2; a++)
			printf("I I\t");
			printf("\n");
	}
	return 0;
	}

image

二、实验总结

1.由于对函数调用掌握不到位,因此本次作业中未使用函数调用的方法书写代码,我将会再次复习这部分相关知识;
2.对于目标任务,能够想到的不只一种解决方法,在这些可选项里找出最优解的过程是激发自己潜力的一种方式;
3.task6-3是存在瑕疵的,关于"\t"和直接打出空格来控制字符小人间的间距的不同还在思考。
编者注:相较上次作业本次更换了截图范围,你更倾向于哪种截图呢,请在评论区给我建议。

Posted on 2022-04-14 21:13  llllllimit  阅读(78)  评论(4)    收藏  举报