一、实验结论
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;
}

问题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;
}
出现“猜中”情况

三次均“未猜对”

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

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

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

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

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

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

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