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

这个作业属于哪个班级 C语言--网络2011/2012
这个作业的地址 C博客作业00--我的第一篇博客
这个作业的目标 学习Makdown语法,对本专业及C语言课程有个简单了解,记录自学慕课视频的笔记。教师可以对学生有个初步的认识。

展示PTA总分

顺序结构:
分支结构:

本章学习总结

1.1 学习内容总结

开学两周主要学习了顺序结构、分支结构和顺序结构,主要内容如下:

  1. 数据类型

    整型 int
    短整型 short
    长整型 Long
    字符型 char
    单精度浮点型 float
    双精度浮点型 double

    • 注意:整型变量优先使用int,浮点型优先使用double,操作变量时,需要非常注意数据是否会溢出。
数据类型 占用内存(字节) 输入 输出
int(整数型) 4 %d %d
double(双精度浮点型) 8 %lf %f
float(单精度浮点型) 4 %f %f
char(字符型) 1 %c %c
  1. 格式化输入输出函数

    • 格式化输出函数scanf( ):不要漏“&”符号。
    • 格式化输出函数printf( ):整型用“%d”,浮点型用“%f”。M为指定的数据输出宽度。“% m.nf”表示输出的浮点型数据共占m列,含小数点,其中小数点后有n位数字;“% m.ns”表示输出的字符串共占m列,但只取字符串左端的n个字符,这n个字符输出在m列的右侧,左侧补空格。
    • 字符输入函数getchar():该函数一般调用格式为“ch = getchar( );”功能是从键盘输入一个字符,并赋值给变量ch,但是该函数只能读入一个字符。
    • 字符输出函数putchar():该函数一般调用格式为“getchar(输出参数);”功能是输出输出参数的字符型变量或常量,该函数只能输出一个字符。
  2. 分支结构

    1)单分支结构

    if(表达式)
    {
    
    语句;
    }
      return 0;
    

    2) 双分支结构

    if(表达式)
    {
    语句;
    }
    else
    {
    语句;
    }
       return 0;
    
    • 例题:

      • 判断偶数

    3)多分支结构

    • else-if语句

      if (表达式)
      	{
      		语句;
      	}
      	…
      	else if (表达式)
      	{
      		语句;
      	}
      	else
      	{
      		语句;
      	}
      

      执行流程:求解表达式1,如果表达式1的值为“真”,执行第一个语句并结束整个if语句的执行,否则求解表达式2。最后的else是条件都不满足的情况。

      • 例题:

        • A除以B
    • switch语句

      switch (表达式)
      	{
      	case 1:语句1; break;  *注意:case后要空格且case后面只能跟常量不能跟表达式
      	…
      	case n:语句n;break;
      	default:语句;break;
      	}
      

      注意:break结束该循环体,并直接结束该流程。而continue是结束该语句,继续执行下一语句。
      执行流程:先求解表达式,若表达式值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段;若表达式的值与任何一个常量表达式都不相等,则执行default后的语句段,最后执行break;语句,结束switch语句。

      • 例题:

        • 计算天数

  3. 循环结构

    • while循环
    while(表达式)
    {
    (循环语句;
    }
    
    • do-while循环

    do
    {
    (循环语句;)
    }while(表达式);
    

    执行流程:先执行do内代码一次,然后对表达式进行检验,后面是while的那么其中的表达式是执行条件,符合则再次执行。

    • for循环

      for(赋初值即表达式1;判断条件即表达式2;改变其值即表达式3)    
      {
      循环体语句;
      }
      

      执行流程:先计算表达式1,再判断表达式2,若为“真”,则执行循环体语句,紧接着计算表达式3,然后继续循环;若值为“假”,则结束循环。

      • 例题:

        • 求交错序列前N项和
  4. 常用的数学函数

    • 平方根函数sqrt(x):计算根号x;

    • 绝对值函数fabs(x):计算|x|;

    • 幂函数pow(x,n):计算x的n次方;

    • 指数函数exp(x):计算e的x次方;

      以上均为double型

  5. 随机数

    #include <stdio.h>
    #include <stdlib.h> 
    #include <time.h>   
    int main()
    {
    srand(time(0));   //生成随机种子,产生不同随机数,用来初始化srand的起始值;
    int x=rand()%100;  //生成范围为[1,99]的随机数;
    printf("%d",x)"
    return 0;
    }
    

1.2 编程技巧总结

  • 常用的条件:

闰年:year % 400 == 0 || (year % 4 == 0 && year % 100 != 0

偶数:Num %2==0

整除:%Num==0

取个位:unit = a % 10

取十位:decade = (a / 10) % 10

取百位:hundred = a / 100

求平均数时,需要考虑除数为0的情况,否则有除0的问题。

if(num!=0)
avg=total/num;
else avg=0;

进入循环体之前,看看一些变量是否需要有初始值。

1.3 本章学习体会

  • 虽然暑假有提前学习C语言,但学起来还是有点点吃力,即使上课内容大致听懂了,注意点标注了,但是写题的时候还是很吃力,不能很快的理清题目中的所考察的内容,不能立马知道该题目从何下手,要怎么用分支?怎么用循环?可能存在的问题是题目刷的不够多,基础知识不够扎实,希望之后多多刷题,增加自己的代码量。
  • 对教学的建议:希望老师能够讲的慢一点,然后适当扩展学习内容。

PTA实验作业

2.1 前天是哪天

2.1.1 数据处理

  • 数据表达:
    int year;//年
    int month;//月
    int day;//日

  • 数据处理:
    运用了else -if多分支结构,通过月份和日期进行分类。第一种情况是每个月3号-31号都为常规的“day-2”,第二种情况是每个月的2号,第三种情况是3号,但第二、三种情况还需要注意的是上个月为30天还是31天又或是2月的28天、29天,还需注意1月1号、2号的时候,year需要year-1。

2.1.2 代码截图



2.1.3 PTA提交列表及说明

错误1:条件中将“==”写成了“=”

错误2: printf()中多添加了“&”

错误3:在day=2,month=1的分支中,year忘记-1了

错误4:少了几个“}”

2.2 单词长度(字符型数据处理)

2.2.1 数据处理

  • 数据表达:
    char ch;//字符
    int count;//表示单词长度
    int flag = 1;

  • 设计思路:
    1.读入一个字符
    2.如果是空格,则:
    输出单词长度
    count=0.
    3.如果不是空格:count++
    4.重复1,直到字符‘.’,则停止

  • 伪代码:
    while 读入字符ch!='.'
    if ch=='' then
    输出单词长度浮count=0
    else 计数count++;
    end while

2.2.2 代码截图


2.2.3 PTA提交列表及说明


错误:
”.“前一个单词即最后一个单词无法读入
未引入flag
d"or"%d"(表示空格)

2.3 最佳情侣身高(介绍单步调试)

2.3.1 单步调试截图

错误:

经过更改调试后:

2.3.2 代码截图

2.3.3 PTA提交列表及说明


错误原因:在for循环结构中的scanf()前还有一个scanf(),且上个scanf()是以回车符“;”结束的,则这个回车符“;”被“%c”给收了。为了避免回车符不被收,将多输入一行“getchar()”,该函数作用是吸收一个字符。

posted @ 2020-11-07 21:21  GGGa-Yi  阅读(170)  评论(0编辑  收藏  举报