zoukankan      html  css  js  c++  java
  • C博客作业01--分支、顺序结构

    C博客作业01--分支、顺序结构

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业00--顺序分支结构
    这个作业的目标 初步认识C语法,掌握数据表达、printf、scanf语法及分支结构内容

    0.展示PTA总分

    2020-1-顺序结构

    2020-2-分支结构

    1.本章学习总结

    1.1 学习内容总结

    1. 数据
    数据类型 占用内存(字节) 输入 输出
    int(整数) 4 %d %d
    double(双精度) 8 %lf %f
    float(单精度) 4 %f %f
    char(字符) 1 %c %c
    1. if else
    if (条件语句) 
    {
    结果1;
    } 
    else if (条件语句)
    {
    结果2;
    } 
    else 
    {
    结果n;
    }
    
    1. switch case
    switch(控制表达式)
    {
          case 1:
          结果2;
          break;
    ......
          case n:
          结果n;
          break;
    
          default:
          结果n+1;
    
    }
    

    tip:

    • switch倾向于数值的匹配而不进行条件判断,switch不支持float型,布尔型,且常和break联用。
    • if判断是逐句判断,速度可能没有switch case快,但是能用switch case写的if都能写,反之不然。如,区间判断。
    • 判断时==,&&,||不要漏打,(经常因为这个而找错半天,毕竟不会报错)。
    1. for
      for循环的表达式为for( ; 判断 ; )比while,更简洁.
    2. 字符
    • 字符输入用getchar()
    • ()中无参数;输出用putchar()
    • ()中要含有参数。两者都每次只能输入输出一个字符
    1. 函数
    2. math.h的
    • 幂函数:pow(x,n)
    • e^x:exp(x)
    • 平方根:sqrt(x)
    • 绝对值:fabs(x)
    1. 随机函数:srand(time(0));
    • srand()为生成一个随机数,time(0)则是改变随机数生成种子进而随时间变化生成不同的随机数

    1.2编程技巧总结

    • 取某数的各个位数
      %10取个位,后/10。

    样例:水仙花数

    代码

    #include<stdio.h>
    #include<math.h>
    int main(){
        int n,sum;
        scanf("%d",&n);
        int mark=pow(10,n);
        int m=mark/10;
        int p[10];
        for(int i=0;i<10;i++){
            p[i]=pow(i,n);
        }
        for(int i=m;i<mask;i++){
            sum=0;
            int x=i;
            for(int j=1;j<=n;j++){
                int d=x%10;
                x=x/10;
                sum+=p[d];
            }
            if(sum==i){
               printf("%d
    ",i);
            }
        }
    }
    
    • 判断一个数是否被整除
    • a % b == 0

    判断闰年

    if (((yyyy % 4 == 0) && (yyyy % 100 != 0)) || (yyyy % 400 == 0)) 
        {
            switch (mm)
            {
                case 1:
                    digit = dd;
                    break;
                case 2:
                    digit = 31 + dd;
                    break;
                case 3:
                    digit = 31 + 29 + dd;
                    break;
                case 4:
                    digit = 31 + 29 + 31 + dd;
                    break;
                case 5:
                    digit = 31 + 29 + 31 + 30 + dd;
                    break;
                case 6:
                    digit = 31 + 29 + 31 + 30 + 31 + dd;
                    break;
                case 7:
                    digit = 31 + 29 + 31 + 30 + 31 + 30 + dd;
                    break;
                case 8:
                    digit = 31 + 29 + 31 + 30 + 31 + 30 + 31 + dd;
                    break;
                case 9:
                    digit = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + dd;
                    break;
                case 10:
                    digit = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + dd;
                    break;
                case 11:
                    digit = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + dd;
                    break;
                case 12:
                    digit = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + dd;
                    break;
            }
        }
    
    • 比较大小并交换
    • 通过判断大小将最大数或最小数放在一个自变量中在逐步判断即可

    找出最小值

    #include<stdio.h>
    int main(){
        int n,num,min;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&num);
            if(i==0)min=num;
            else if(num<min)min=num;
        }
        printf("min = %d",min);
        return 0;
    }
    

    本章学习体会

    • 林老师教的很好,因为自己自学的比较慢,代码量也不多,所以在上课时经常跟不上进度。做作业和刷题时经常出错导致速度太慢,有时理解不了题目,还好有舍友zgd的细心帮助才能解开迷惑。现在也在努力刷pta提高代码量,打牢基础。
    • 总计约50道左右

    2.PTA实验作业

    2.1 前天是哪天


    2.1.1 数据处理

    • 数据日,月,年全是整数,用int和%d。
    • 日>=3都是无需过多处理的。当小于三时需要考虑月份的减一后的三种情况
    1. 前一月份的日数
    2. 1月减一会减一年
    3. 闰年平年的二月分别有29,28天

    2.1.3 PTA提交列表及说明

    • 第一次输入的时候break没有写。

    2.2 字符型数据处理

    2.2.1数据处理

    • ch记录字符,cnt记录空格,length记录输出单词长度,sign作标志符

    2.2.2代码截图

    2.2.3PTA提交列表及说明

    • 一开始忘记加''
    • 空格的计算出错

    2.3 自选一题,介绍单步调试如何检查错误

    2.3.1 单步调试截图

    经过debug得标识符cnt没有初始化,应对其初始化。

    2.3.2 代码截图 水仙花数

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int sum, x, i, flower, cnt = 0;
        int M;
        int N;
        scanf("%d %d", &M, &N);
        flower = M;
        if (M <= N && M >= 100 && N <= 999)
        {
            for (; flower <= N; flower++)
            {
                sum = 0;
                x = flower;
                for (i = 0; i < 3; i++)
                {
                    int d = x % 10;
                    x = x / 10;
                    sum += pow(d, 3);
                }
                if (sum == flower && cnt > 0)
                {
                    printf("
    ");
                    printf("%d", flower);
                }
                if (sum == flower && cnt == 0)
                {
                    printf("%d", flower);
                    cnt++;
                }
            }
        }
        else {
            printf("Invalid Value.");
        }
        if (M <= N && M >= 100 && N <= 999 && cnt == 0)
        {
            printf("");
        }
        return 0;
    }
    

    2.3.3 PTA提交列表及说明

    • 没看清楚题干的Invalid Value.条件
    • 无输出时输出了Invalid Value.
  • 相关阅读:
    WebForms和MVC之间的抉择
    RPM install Error: Failed dependencies
    存储NAS和SAN
    python基础31[visualstudio2010来编写python程序]
    Linux系统性能检测
    perl的引用和>
    Linux内存高级 [swap/buffer]
    python类库26[web2py的URL映射]
    python类库31[python的libpath]
    VShpere中创建新Linux(ubuntu)的virtual machine
  • 原文地址:https://www.cnblogs.com/lz02/p/13944916.html
Copyright © 2011-2022 走看看