当前位置:网站首页>第二次作业

第二次作业

2020-11-08 10:05:54 稶郗

0.展示PTA总分


1.本章学习总结

1.1 本章学习总结 和 1.2 编程技巧总结

  1. 变量名:小驼峰命名法 例:aB
    函数名:大驼峰命名法 例:Ab
  2. c语言中的标识符由字母 数字 下划线组成,其中第一个字符必须是字母或者下划线
  3. int(整型) char(字符型) float(单精度浮点型) double(双精度浮点型)typedef(自定义类型)
  4. /文字/ 注释多行
    //:注释单行
  5. (1) 两个整型数据作除法运算,其运算结果为整数。
    例:10/4=2 1/3=0
    (2)求余运算
    例:5%6=5 9%4=1 100%4=0(表示能被整除)
    (3)若要转换为浮点数型,需对其中一个数进行浮点数的转换
    例:10.0/4 10.0/4.0
  6. (1)格式化输入函数scanf()
    int型数据用%d float型数据用%f doouble型数据用%lf
    例:scanf("%lf",&x); (注意输入的数据是什么类型,用相应的格式控制字符,&不要漏掉)
    (2)格式化输出函数printf()
    int型数据用%d fioat和double型数据都可用%f,double型也可用%lf
    %nf表示输出的数据保留了小数点后n位
    %f默认保留小数点后6位
    例:printf("%d %f %.3f",a,b,c);
  7. 生成随机数
    例:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main()
    {
     int number;             //定义随机数的变量
     srand(time(0));         //生成种子
     number = rand() % 100;  //生成随机数的范围为0-100
     printf("%d", number);   //输出随机数
     return 0;
    }
    
    若生成随机数的范围为10-100,则范围的代码改为:number=10+rand()%90;
  8. 关系运算符
    == 相等 !=不等
  9. 数学函数
    调用输入输出函数,要加#include <stdio.h> 调用数学函数,要加#include <math.h>
    平方根函数: sqrt(x) 例: sqrt(4.0)=2.0
    绝对值函数: fabs(x) 例: fabs(-5.0)=5.0
    幂函数: pow(x,n) 例: pow(4,2)=16
    指数函数 exp(x) 例: exp(2.3)的值为e的2.3次方
  10. 控制输出数
    %md 若数的位数小于m,则会自动从左边补空格
    %-md 若数的位数小于m,则会自动从右边补空格
    %m.nf m包括符号位和小数点,n表示保留n位小数
    例:
    #include <stdio.h>
    int main()
    {
       int number1,number2;
       double number3;
       scanf("%d %d %lf", &number1,&number2,&number3);
       printf("%5d%-5d%5.3f", number1,number2,number3);
       return 0;
    }
    
    当输入30 50 5.5时,输出结果为:三个空格+3050三个空格+5.500
  11. 使尾部不带空格
    例:
    #include <stdio.h>
    int main()
    {
    int n = 3;
    int i;
    int flag = 1;
    int number;
    int a;
    for (i = 1; i <= 3; i++)
    {
    	scanf_s("%d", &a);
            number = a;
            if (flag == 1)                    //找到第一个数,并改变后面数的输出方式
    {
    	flag = 0;
    	printf("%d", number);
    }
            else
    {
    	printf("a%d", number);
    }
    }
        return 0;
    }
    
    当输入30和40和50时,输出结果为30a40a50,可实现尾部不带空格
  12. 字符型数据
    字符型变量的数据用char来定义,并要加上''
    常用的十进制的字符型常量的ASCII码:'a':97,'A':65,'0':48
    字符型输入输出函数:
    (1)getchar():只能读入一个字符,()里不带参数
    (2)putchar():输出一个字符,格式:putchar(输出参数)
    例:
    #include <stdio.h>
    int main()
    {
    char ch;
    ch = 97;
    printf("%c %d", ch, ch);
        return 0;
    }
    
    输出结果为:ch 97
  13. 逻辑运算
    !:非,&&:且,||:或
    &&和||的优先级低于关系运算符
  14. 活用switch语句中的break
    例:展示部分代码
    case n: case m: case f: ......case z:
    表达式;
    break;
    
    以上case共用表达式
  15. 伪代码描述符号
    例:
    (1)while 条件
    表达式
    end while
    (2) if 条件
    表达式
    end if
  16. n--与--n一类区别
    例:
    #include <stdio.h>
    int main()
    {
        int n;
        n = 8;
        printf("%d ", n--);
    }
    
    输出结果为8
    #include <stdio.h>
    int main()
    {
        int n;
        n = 8;
        printf("%d ", --n);
    }
    
    输出结果为7
  17. 取一个数某一位上的数
    例:
    number表示一个数,n表示其某一位上的数
    个位:n=number%10
    十位:n=number/10%10
    百位:n=number/100%10
    以此类推
  18. 输入3个数输出最大或者最小或者中间或者按大小顺序排布
    例题:

    自己一开始的代码:
    #include <stdio.h>
    
    int main()
    {
        int a,b,c;
        scanf("%d %d %d",&a,&b,&c);
        if(a>b)
        {
            if(b>c)
            {
                printf("x=%d,y=%d,z=%d",c,b,a);
            }
            else if(c>a)
            {
                printf("x=%d,y=%d,z=%d",b,a,c);
            }else
            {
                printf("x=%d,y=%d,z=%d",b,c,a);
            }
        }else
        {
            if(c>b)
            {
                printf("x=%d,y=%d,z=%d",a,b,c);
            }
            else if(a>c)
            {
                printf("x=%d,y=%d,z=%d",c,a,b);
            }else
            {
                printf("x=%d,y=%d,z=%d",a,c,b);
            }
        }
        return 0;
    }
    
    出现的问题:代码量大,且思路复杂,不利于快速完成工作。
    学会引用中间量替换后的代码:
    #include <stdio.h>
    int main()
    {
        int number1,number2,number3, temp;
        scanf("%d %d %d", &number1, &number2, &number3);
        if (number1 > number2)
        {
    	    temp = number1; 
    	    number1 = number2;
    	    number2 = temp;
        }
        if (number1 > number3)
        {
    	    temp = number1;
    	    number1 = number3;
    	    number3 = temp;
        }
        if (number2 > number3)
        {
    	    temp = number2;
    	    number2 = number3;
    	    number3 = temp;
        }
        printf("x=%d,y=%d,z=%d", number1, number2, number3);
        return 0;
    }
    
    便于操作,且思路清晰明朗。
  19. 计算1-1/3+1/5-...一类题型(引入flag)
    例题:
    #include <stdio.h>
    
    int main()
    {
        int i;
        int n;
        int flag;
        double sum;
        scanf("%d", &n);
        flag = 1;
        sum = 0;
        for (i = 1; i <= n; i++)
        {
    	    sum = sum + flag*i * 1.0 / (2 * i - 1);
    	    flag = -flag;
        }
        printf("%.3f", sum);
        return 0;
    }
    
  20. 统计一个整数的位数
    例:
    #include <stdio.h>
    
    int main()
    {
        int count, number;
        count = 0;
        scanf_s("%d",&number);
        while (number != 0)
        {
    	    count++;
    	    number = number / 10;
        }
        printf("%d", count);
        return 0;
    }
    

1.3 本章学习体会

通过这两周的学习与复习c语言的相关内容,因为在暑假期间已经对前面内容有了些许了解,所以在上课内容方面跟得上,对于那些语句的结构以及内容比较没有问题,但是对其中一些语句的深究内容就不大懂,根本原因是没有对语句的基础内容有明确清晰的认识,对细节内容掌握不够,包括对课本的预习没有彻底。之后便是上课进度表示有点快 ⊙ω⊙,刚预习完就要立刻预习下一节,有点来不及巩固自己的基础,最近两周的题目就刷了分支结构把之前没写的写完以及写了上课发布的实验题集,和预习课件里的一些题目.

2.PTA实验作业

2.1 前天是哪天

2.1.1 数据处理

变量:

  • year(年份)(整型):前天时可能会跨年
  • month(月份)(整型):前天可能涉及月份变化
  • day(天数)(整型):必定涉及天数的变化
  • Febary(二月份的天数):涉及闰年和非闰年的二月天数不同
  • mark(月份/1)(整型):需要用到switch语句

2.1.2 代码截图

有点长,分开截的图



2.1.3 PTA提交列表及说明


Q1:找了半天到底哪里编程有错误或者漏些字母和符号
A1: 结果感人,原来是case 后面没加数字,直接加了表达式。。。。。

最佳情侣身高差

2.2.1 数据处理

变量:

  • sex(性别)(字符型):判断性别
  • n(人数)(整形):判断有几个人
  • i(整形):循环语句会用到
  • height(身高)(整型):题目要求
  • number(适合身高)(整型):转换以后的最适身高

2.2.2 代码截图

2.2.3 PTA提交列表及说明


老师在课上有说明输入的相关问题并打了代码,自己写的时候先在vs上调试并订正所以提交就正确了

单步调试(龟兔赛跑)

2.3.1 单步调试截图

2.3.2 代码截图


2.3.3 PTA提交列表及说明


Q1:提交时显示只有部分正确,漏了几个部分判断
A1: 忘记判断兔子跑的路程是否比乌龟快,直接对时间每十分钟分割一次,导致部分判断确缺失。

版权声明
本文为[稶郗]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/960223447a/p/13923220.html