この仕事のための要件は、https://edu.cnblogs.com/campus/nenu/2019fall/homework/5523見ます
1.1アプリケーションがA.EXEと、現在のディレクトリ内のファイル、および次のテキストコンソールがはいコマンドをどのような役割図における補助データストリームがB.TXTことが想定されます。(5点)
A.EXE <B.TXT> c.txt
A:このコマンドは、ファイルBの内容であるプログラムファイルcに得られる出力した後、実行中のプロセスを保存し、プログラムに入力されています。次のようにデータフロー図です。
1.2 Cでアプリケーションを開発するためになさD.EXEください、それぞれ、コンソール・コマンドラインパラメータから命令を読み出し、及び、bの値を印刷し、コンソールにおけるc。次の例をフォームの効果を実行する(6点)
D.EXE A = 1、B = 2、C = 3
1
2
3
= B = 22、C = 11 33 D.EXE
11
22
33
コードは以下の通りであります:
1つの#include <stdio.hの>
2 INT メイン(){
3 int型A、B、C。
4のscanf( "A =%DB =%DC =%d個"、&、&B、&C)。
5のprintf( "%d個の\ n%d個の\ n%d個の\ n" 、A、B、C)。 6戻り0 ; 7 }
次のようにショットを実行します。
2.1ウェブサイトは、[https://pintia.cn/]アカウントを登録しました。(0)
A:私は登録されています。
必要に応じてタイトルセットタイトル完全PAT(初級)実践(中国語)で2.2 3。次のようにショットは、赤のチェックマークを含む、請求項1において、(この例ヤング)2符号3ユーザ名です。(30点)
コードの2.3解釈。(20点)
(1)1001 卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 ( 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (,以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?
本题目比较简单,格式要求也不是很严格,完成的比较顺利。
代码如下:
int n=0,i; scanf("%d",&n); for(i=0;n!=1;i++){ if(n%2==0){ n=n/2; } else{ n=(3*n+1)/2; } } printf("%d",i);
运行截图如下:
(2)1006 让我们用字母 B
来表示“百”、字母 S
表示“十”,用 12...n
来表示不为零的个位数字 n
(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234
应该被输出为 BBSSS1234
,因为它有 2 个“百”、3 个“十”、以及个位的 4。
本题目难度也不大,只要注意输出的要求和格式就可以了,其中的个位按格式输出时要注意从1开始,这一点与前两个for循环有区别。
代码如下
int n=0,i,bai,shi,ge; while(scanf("%d",&n)!=EOF){ bai=n/100; shi=n/10%10; ge=n%10; for(i=0;i<bai;i++){ printf("B"); } for(i=0;i<shi;i++){ printf("S"); } for(i=1;i<=ge;i++){ printf("%d",i); } }
运行截图如下:
(3)1023 给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。现给定数字,请编写程序输出能够组成的最小的数。
本题目比较麻烦,要注意的点比较多。首先要求给定的数必须全部使用,而且0不能做首位,在保证这两点的基础上要组成最小数。
代码如下:
int a[10],i,b[50],j=1; for(i=0;i<10;i++){ scanf("%d",&a[i]); } for(i=1;i<10;i++){//找一个除0以外最小的数做最高位 if(a[i]!=0){ b[0]=i; a[i]--; break; } } for(i=0;i<10;i++){//把数字按大小顺序和个数写到b数组中 while(a[i]){ b[j]=i; j++; a[i]--; } } for(i=0;i<j;i++){ printf("%d",b[i]); } return 0;
运行截图如下:
2.4在同一篇博客中,参照教材第35页表2-2和表2-3,为上述3个题目制作PSP阶段表格。PSP阶段表格第1列分类,如功能1、功能2、测试功能1等。
PSP阶段 | 预计花费时间 | 实际花费时间 | 时间差 | 原因 |
1001编程 | 10min | 6min | 4min | 原以为一段时间没有编写c语言程序 会比较生疏,但实际上还比较顺利 |
1001测试 | 1min | 1min | 0min | 输入格式没有特定的要求,比较简单 |
1006编程 | 8min | 10min | 2min | 第一次编程时没注意到个位是 从1开始,for循环中i的初值写错了 |
1006测试 | 1min | 1min | 0min | 只需输入一个三位数即可 |
1023编程 | 15min | 17min | 2min | 其中需要注意的问题比较多,考虑的要全面一些 |
1023测试 | 1min | 3min | 2min | 输入的格式比较麻烦,每个数中间要有空格 ,而且要数好自己输入的数字的个数 |