作业要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11185
1.熟悉 命令行和控制台/标准输入和标准输出
假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)
数据流图:
a.exe < b.txt > c.txt 控制台命令的作用:b文件中的数据输入a应用程序中执行,将结果数据覆盖到新生成的c文件中。<和>为重定向命令。
请用C语言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。运行效果形如下面的示例(6分)
代码:
#include <stdio.h> int main(int argc, char *argv[]) { int a,b,c; sscanf(argv[1], "a=%d", &a); sscanf(argv[2], "b=%d", &b); sscanf(argv[3], "c=%d", &c); printf("%d ",a); printf("%d ",b); printf("%d",c); return 0; }
运行截图:
2.熟悉 测试用例
(2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。截图如下,要求包括1.红色对号、2.标号、3.用户名(此例中为 Young)。(30分)
(3)代码解读 (20分)
发表博客,介绍上述3个题目代码中重点/难点,展示重要代码片断,给出执行效果截图,展示你感觉得意、突破、困难的地方。
1006 换个格式输出整数 (15分)
让我们用字母 B
来表示“百”、字母 S
表示“十”,用 12...n
来表示不为零的个位数字 n
(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234
应该被输出为 BBSSS1234
,因为它有 2 个“百”、3 个“十”、以及个位的 4。
输入格式:
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
输出格式:
每个测试用例的输出占一行,用规定的格式输出 n。
输入样例 1:
234
输出样例 1:
BBSSS1234
输入样例 2:
23
输出样例 2:
SS123
重点/难点:求个、十、百位的数字,并根据数字循环输出。
重要代码:
while(scanf("%d",&n)!=EOF&&n<1000) { b=n/100; for(i=0;i<b;i++) { printf("B"); } s=n/10%10; for(i=0;i<s;i++) { printf("S"); } g=n%10; for(i=0;i<g;i++) { printf("%d",i+1); } }
运行截图:
给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
输入格式:
每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。
输出格式:
对 N 中每一种不同的个位数字,以 D:M
的格式在一行中输出该位数字 D
及其在 N 中出现的次数 M
。要求按 D
的升序输出。
输入样例:
100311
输出样例:
0:2
1:3
3:1
重点/难点:
- 定义一个字符数组存放不超过1000位的正整数N,且进行初始化,否则数组中各元素的值不可预料。
- 如果数字出现次数为0,则不输出,所以需要加上代码if(b[j]==0)continue;,continue作用不执行continue之后的语句而执行下一次循环。
重要代码:
for(i=0;a[i]!='