C博客作业00--顺序分支结构.md

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

0.展示PTA总分


1.本章学习总结

1.1学习内容总结

  • **if else & switch case **

    用法:

    1、if(判断条件){语句}

    2、if(判断条件) {语句}else {语句}

    3、if(判断条件) {语句}else if (判断条件) {}···

    4.switch(i)

    {

    case 1:语句break;

    case 2:

    ···

    default:···

    }

    注意点:

    在连续使用&&、||时注意条件判断是否合理不要漏打符号

    在判断变量是否为零时注意判断方式

    switch case 语句中case后面不能接式子

  • 函数

    幂函数:pow(x,n)

    平方根:sqrt(x)

    绝对值:fabs(x)

    随机函数:srand(time(0));

    srand()为生成一个随机数,time(0)则是改变随机数生成种子进而随时间变化生成不同的随机数

  • 数据输入

    数据类型 占用内存(字节) 输入 输出
    int(整数) 4 %d %d
    double(双精度) 8 %lf %f
    float(单精度) 4 %f %f
    char(字符) 1 %c %c

1.2编程技巧总结

  • 取某一位数各位做法

    将该数用10取余即可;

    在配合/10混合使用可分离一个数的不同位的数

    #include<stdio.h>
    int main()
    {
        int x,a,b,c;
        scanf("%d",&x);
        a=x/100;
        x=x%100;
        b=x/10;
        c=x%10;
        printf("%d,%d,%d",a,b,c);
        return 0;
    }
    
  • 判断整除

    用10取余被判断的数在判断余数是否为零

    #include<stdio.h>
    int main()
    {
        int N,M;
        scanf("%d %d",&M,&N);
        if(M%N==0)
        {
            printf("YES");
        } else
        {
            printf("NO");
        }
        return 0;
    }
    
  • 比较大小

    通过判断将最大数或最小数放在一个自变量中在逐步判断即可

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

1.3本章学习体会

  • 总的来说分支结构不难但是细节多,在重复使用时容易出现错误,而PTA的难度不均衡,容易导致在某一道题目上无法突破。
  • 总计约40道左右

2.PTA实验作业

2.1 前天是哪天

2.1.1 数据处理

  • 先区分闰年在逐一对每个月进行判断。

  • 数据表达:year,month,day,类型为整数型。

  • 表达式:主要用到了取余和分支结构的if else。

2.1.2 代码截图

#include<stdio.h>
int main()
{
    int year, month, day;
    scanf("%d-%d-%d",&year,&month,&day);
    if (day > 2)
    {
        day = day - 2;
    }
    else
    {
        if (month == 5 || month ==7 || month ==8 || month ==10 || month ==12)
        {
            day = day - 2 + 30;
            month = month - 1;
        } else if (month == 2 || month ==4 || month ==6 || month ==9 || month ==11)
        {
            day = day - 2 + 31;
            month = month - 1;
        } else if (month == 1)
        {
            day = day - 2 + 31;
            month = 12;
            year = year - 1;
        } else if (month == 3)
        {
            if (year % 4 == 0) 
            {
                if(year%100==0)
                {
                    if (year % 400 == 0)
                    {
                        month = month - 1;
                        day = day - 2 + 29;
                    } else 
                    {
                        month = month - 1;
                        day = day - 2 + 28;
                    }
                } else
                {
                    month = month - 1;
                    day = day - 2 + 29;
                }
            } else
            {
                month = month - 1;
                day = day - 2 + 28;
            }
        }
    }
    printf("%d-%d-%d", year, month, day);
    return 0;
}

2.1.3 PTA提交列表及说明

  • 编译错误:有输入没加&或者未加;
  • 部分正确:将大月与小月的运算式弄反,闰年判断错误,二月进位错误。

2.2 自选一题,内容要和字符型数据处理有关的题目

2.2.1 数据处理

  • 设置变量:ch(记录字符),sign(记录空格),len(用来记录输出单词长度),flag(作为一个标志符)
  • 先记录字符长度但输入空格时停止输出字符长度即为一个循环,后再继续运行直到输入句号为止。

2.2.2 代码截图

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char ch;
    char sign = ' ';
    int len;
    int flag;
    len = 0;
    flag = 0;
    while( (ch=getchar())!='.'){
        if(ch!=' ') len++;
        else if(len!=0){ 
            if(flag!=0) putchar(sign); 
            flag = 1;
            printf("%d",len);
            len = 0;
        }else{
            continue;
        }
 
    }
    if(flag==1 && len!=0) putchar(sign);
    if (len) printf("%d",len);
    return 0;
}

2.2.3 PTA提交列表及说明

  • 先在VS上经过调试,遇到过任何停止计数输出长度问题。

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

2.3.1 单步调试截图

经过debug得money2运算后值为零,应改变运算类型。

2.3.3 PTA提交列表及说明

#include<stdio.h>
int main()
{
    double length, money1, money2, money;
    int time;
    scanf("%lf %d",&length,&time);
    if(length<=3)
    {
        money1 = 10;
        money2 = (time / 5) * 2;
        money = money1 + money2;
    }
    else if(length<=10)
    {
        money1 = 10 + (length - 3) * 2;
        money2 = (time / 5) * 2;
        money = money1 + money2;
    }
    else
    {
        money1 = 24 + (length - 10) * 3;
        money2 = (time / 5) * 2;
        money = money1 + money2;
    }
    printf("%.0f", money);
    return 0;
}
posted @ 2020-11-07 01:01  2011王博  阅读(147)  评论(0编辑  收藏  举报