0.展示PTA总分

1.本章学习总结

1.1学习内容总结

  • 第一章:了解C语言的产生和应用领域,学习了C语言的主要“单词”。
    标识符:由字母、数字和下划线组成,其中第一个字符必须是字母或者下划线。
    常量:有整型常量123,实型常量12.34,字符常量'a',字符串常量"Hello World!"等。
    运算符:有+(加)、-(减)、*(乘)、/(除)、%(求余)、>(大于)、**>=(大于等于)**、**==(等于)**、**=(赋值)**等。
    分隔符:有;、[、]、(、)和#等。
  • 第二章:
学习了解C语言中的数据类型,包括int(整型),char(字符型),float(单精度浮点型),double(双精度浮点型)。
学习了数据格式化输出函数printf(),数据格式化输入函数scanf(),字符输出函数putchar(),字符输入函数getchar()。
  • 第三章:学习如何运用if语句和switch语句来解决各种问题。
  • 小知识点
  1. 单行注释://注释内容;多行注释:/* 注释内容 */。
  2. 基本数据类型占用空间:char(1个字节),int(4个字节),float(4个字节),double(8个字节)。
  3. 表达式count++的值为count原来的值,表达式count--的值为count后来的值。
  4. %d输出10进制整数;%md输出m位,不足左补空格,其他正常输出;%c输出字符串;%f输出实数。
  5. 优先级:赋值运算符<关系运算符<算数运算符。

1.if语句的使用

  • 语法:
if(表达式) 
 {
语句1
}  
else  
{
语句2;
}
  • 注意:
    if语句表达式可以接收所有的数据类型。
    if语句后面不能加分号。
    else子句是if语句的一部分,必须与if配对使用,不能单独使用。
    else与最靠近它的、没有与别的else匹配过的if相匹配。

2.switch语句的使用

  • 语法:
switch(表达式)
{
             case '值1'://若值1==表达式的值,执行语句1
                      语句1;break;//阻止当前程序的执行
             case '值2':
                      语句2;break;
             case '值3':
                      语句3;break;
             default://若表达式的值不满足case的任何一种情况,则执行default下的语句
}
  • 注意:
    case后面注意有一个空格。
    case后面的常量表达式不能相同。
    break语句只能用于循环语句和switch语句中,不能单独使用。

3.for语句的使用

  • 语法:
for(表达式1;表达式2;表达式3)
{
       循环体语句;
}
  • 说明:
    表达式1对循环变量赋初值,若前面有赋初值,这里可不填。
    表达式2作为循环的条件,若省略则会成为死循环。
    表达式3设置循环的步长,改变循环变量的值。
  • 注意:
    若循环体语句由多条语句组成,必须用大括号括起来。
    必须用两个分号分隔三个表达式,但for后面无分号。

1.2本章学习体会

  • C语言是我们学习计算机的基础课程。在学习过程中,我发现自身存在许多不足,基础较为薄弱。自己预习的时候已经对教材内容有了大概了解,课堂上也了解比较清晰,但是一到实验却不知道如何操作。主要的问题还是眼高手低,刷题太少,导致自己对语法的应用不熟练。再有是做题不严谨,写的代码也不是很规范,应该自己学会进行测试,自己制造数据,并学会自己寻找错误。
  • 代码量为497行。

2.PTA实验作业

2.1 7-12 判断一个三位数是否为水仙花数

2.1.1数据处理

  • 数据表达:仅需定义一个整型变量N。
  • 数据处理:
    表达式:N>=100&&N<=999,Npow(N%10,3)+pow((N/10)%10,3)+pow(N/100,3)
    流程结构:输入一个整数N,若N满足表达式N>=100&&N<=999则进入if语句,否则直接输出"Invalid Value!"当N再满足表达式N
    pow(N%10,3)+pow((N/10)%10,3)+pow(N/100,3)输出"Yes"否则进入其else子句,输出"No"。

2.2.2代码截图

2.1.3本题可扩展功能

  • 本题可扩展为输出100到999之间的水仙花数及个数

2.1.4PTA提交列表及说明

  • 把if()后面的分号去掉。
  • N==pow(N%10,3)+pow((N/10)%10,3)+pow(N/100,3)漏了一个等于号。
  • N==pow(N%10,3)+pow((N/10)%10,3)+pow(N/100,3)中第三个pow()里把%改为/。

2.2 7-2 求幂级数展开的部分和

2.2.1数据处理;

  • 数据表达:定义一个变量i,给它赋值1,变量n作为循环次数,i,n都是整型变量。浮点型变量:item表示某一项的值;x表示输入的实数;number作为分子;product作为分母;sum表示累加起来的项。
  • 数据处理:
    表达式:item>= 0.00001,number = number * x,product = product * i,i++,sum = sum + item,item=number/product。
    流程结构:输入一个实数x,当item>= 0.00001时,进入while循环,当item< 0.00001时,跳出循环,累加各项,输出sum的值。

2.2.2代码截图

2.2.3本题可扩展功能

  • 使用for语句循环及if语句

2.2.4PTA提交列表及说明

  • 表达式item>=0.00001漏了一个0
  • 错误给item赋值为0,后改为1
  • 将item的类型改为double
  • 在item类型前面加上long

2.3 7-3 输出三角形面积和周长

2.2.1数据处理

  • 数据表达:定义四个整型变量a,b,c,s,分别是三角形的三条边及周长的一半,浮点型变量area,perimeter,分别是面积和周长。
  • 数据处理:
    表达式:s=(a+b+c)1.0/2,area=sqrt(s(s-a)(s-b)(s-c)),perimeter=a+b+c,(a+b>c)&&(a+c>b)&&(b+c>a)
    流程结构:输入三个整数a,b,c,如果满足表达式(a+b>c)&&(a+c>b)&&(b+c>a)则输出面积和周长,否则输出"These sides do not correspond to a valid triangle"。

2.2.2代码截图

2.2.3本题可扩展功能

  • 本题可扩展为在三条边能构成三角形的条件下,能构成何种三角形。若三条边满足表达式(a2+b2=c2||a2+c2=b2||c2+b2=a^2),则三条边能构成直角三角形;若三条边满足表达式(ab||ac||b==c),则三条边能构成等边三角形;若以上都不满足则为锐角三角形。

2.2.4PTA提交列表及说明

  • s=(a+b+c)1.0/2忘记了1.0/2。
  • 把(a+b>c)||(a+c>b)||(b+c>a)改成(a+b>c)&&(a+c>b)&&(b+c>a)。
  • printf("area = %.2f; perimeter = %.2f",area,perimeter)中间漏了分号。

3.阅读代码


  • 代码功能:用公式(y-y0)=-ax2计算第一条抛物线在building2的y,用公式(y-y0)=-b(x-x0)2计算第二条抛物线在building2的y,最后判断y>=h2是否成立。
  • 代码优点:
    使用eps控制迭代精度,以免double类型不精确,不能和0直接比较。
    使用多个if语句和while语句,逻辑清晰,层次分明。
    使用了const ,便于进行类型检查,消除了一些隐患。
    代码写得很规范,没有明显的安全问题。
posted on 2019-10-07 20:53  uhoh  阅读(288)  评论(3编辑  收藏  举报