• 20190905-3 命令行和控制台编程


    作业的要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/5523]

    1.熟悉命令行和控制台

    假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,

    请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)

    a.exe < b.txt > c.txt

    答:由b.txt文本输入重定向到应用程序a.exe程序中,再由a.exe程序运行出结果输出重定向到c.txt文本里。

    请用C言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。运行效果形如下面的示例(6分)

    d.exe a=1 b=2 c=3

     1

     2

     3

     d.exe a=11 b=22 c=33

     11

     22

     33

     

    #include<stdio.h>
     int main(){
             int a;
         int b;
         int c;
         scanf("a=%d b=%d c=%d", &a, &b, &c);
         printf("%d
    ", a);
         printf("%d
    ", b);
         printf("%d
    ", c);
         
         return 0;
         
     }

     

     2.熟悉测试用例

     

                                                                                                    1001 害死人不偿命的(3n+1)猜想 (15 分)
     

    卡拉兹(Callatz)猜想:

    对任何一个正整数 nnn,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1)(3n+1)(3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1n=1n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1)(3n+1)(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……

    我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 nnn,简单地数一下,需要多少步(砍几下)才能得到 n=1n=1n=1?

    输入格式:

    每个测试输入包含 1 个测试用例,即给出正整数 nnn 的值。

    输出格式:

    输出从 nnn 计算到 1 需要的步数。

    输入样例:

    3
    

    输出样例:

    5
    重要代码如下:
     while(n>1){
         if(n%2==0)
             n=n/2;
          else
              n=(3*n+1)/2;
          count++;
        } 

     本题没有难度,按照题目一步步来做就可以了,判断是否是偶数:如果一个数对2取余为零则为偶数。

                                                                                                         1002 写出这个数 (20 分)
     

    读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

    输入格式:

    每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 1。

    输出格式:

    在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

    输入样例:

    1234567890987654321123456789
    

    输出样例:

    yi san wu
    
     重要代码如下:
    for(i=0;i<longn;i++)  //把各个数字相加
           sum+=n[i]-'0';
       for(j=0;sum!=0;j++){
             shu[j]=sum%10;
             sum=sum/10;
             }
       while(j>1){
           j--;
           switch(shu[j]){
            case 0:printf("ling ");break;
            case 1:printf("yi ");break;
            case 2:printf("er ");break;
            case 3:printf("san ");break;
            case 4:printf("si ");break;
            case 5:printf("wu ");break;
            case 6:printf("liu ");break;
            case 7:printf("qi ");break;
            case 8:printf("ba ");break;
            case 9:printf("jiu ");break;
                
                }
       } 
       //最后一次不能有空格
            j--;
           switch(shu[j]){
            case 0:printf("ling");break;
            case 1:printf("yi");break;
            case 2:printf("er");break;
            case 3:printf("san");break;
            case 4:printf("si");break;
            case 5:printf("wu");break;
            case 6:printf("liu");break;
            case 7:printf("qi");break;
            case 8:printf("ba");break;
            case 9:printf("jiu");break;
                
                }

    本题需要注意是最后一个数变成汉字后,后面不能有空格,当时我就写了一个switch,提交提示格式错误,后来上参考了别人的代码,才明白没有考虑最后一个汉字后面不能有空格,还有就是忘记写终止条件,导致死循环(如下图)。

                                                                                                       1006 换个格式输出整数 (15 分)
     让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n<),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。

    输入格式:

    每个测试输入包含 1 个测试用例,给出正整数 n(<)。

    输出格式:

    每个测试用例的输出占一行,用规定的格式输出 n。

    输入样例 1:

    234
    

    输出样例 1:

    BBSSS1234
    

    输入样例 2:

    23
    

    输出样例 2:

    SS123
    重要代码如下:
              h=n/100;
              m=n%10;
              n=n/10%10;
            for(i=1;i<=h;i++)
               printf("B");
            for(i=1;i<=n;i++)
                printf("S");
             for(i=1;i<=m;i++)
                printf("%d",i);

     

    当时第一题写的就是这道题,感觉不难,可是耗时却是最长的,主要是我考虑的情况太复杂,把输入的数分成三种情况,大于9小于100,大于99小于1000,小于10,这三种情况分别写出来,最后提交只通过了一部分用例,还有一点就是我还把零考虑进去了,没有读清题目。


  • 相关阅读:
    结对编程
    个人项目(JUnit单元测试)
    我的第一个GitHub仓库
    Visual Studio 创建C++或C#Windows程序
    字符串操作
    练习数值计算
    Hello World
    ceph部署出现错误及解决
    asp.net mvc 用Redis实现分布式集群共享Session。
    Unable to load DLL 'rasapi32.dll': 动态链接库(DLL)初始化例程失败。
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/11494144.html
Copyright © 2020-2023  润新知