2

一、PTA实验作业。

题目1. 400~499 中4出现的次数

1. 本题PTA提交列表

2. 设计思路

步骤1:定义n=0来储存4的个数
步骤2:如果x%10=4,则n++
步骤3:如果(x/10)%10=4,n++
步骤4:如果x/100=4,n++
步骤5:返回n的值

3.本题调试过程碰到问题及解决办法

1.通过调试发现忘了对n赋值,有可能这种细节不注意,对于以后的编程有一定的影响。
2.调试过程中,发现无论如何结果都不对,后发现时x/100写成了x%100

题目2. 完数

1. 本题PTA提交列表

2. 设计思路

int factorsum( int number )函数

  • 1.定义整型变量i为循环次数,N为求余数,sum放因子,初值为0
  • 2.如果number等于1,则直接return 1;否则进入for循环
  • 3.计算N=number%i,如果N等于0,则计算sum=sum+i
  • 4.重复步骤3,直到i>number/2
  • 5.如果number等于sum,则返回return sum

void PrintPN( int m, int n )函数

  • 1.定义整型变量j,k为循环次数,count为求余数赋初值为1,flag赋初值为0
  • 2.如果m等于1,就输出1 = 1然后换行
  • 3.否则进入双层for循环,j=m开始且flag=0
  • 4.调用factorsum(j)函数,如果函数值=j,则输出j=
  • 5.进入内层for循环,计算count=j%k且flag加一
  • 6.如果count=0且flag=1,输出k;如果count=0且flag不等于1,输出+k;如果count=0且k等于j/2,则输出换行
  • 7.内层循环重复步骤5,6直到k大于j/2结束
  • 8.外层循环重复步骤3,4,5,6,7直到j大于n
  • 9.如果count==1&&m!=1&&n!=1,则输出No perfect number

3.本题调试过程碰到问题及PTA提交列表情况说明

题目3.组合数

1. 本题PTA提交列表

2. 设计思路

主函数

  • 1.定义整型变量m,n,浮点型变量a,b,c,resuit
  • 2.输入m,n
  • 3.调用fact()函数 a=fact(m);b=fact(n);c=fact(n-m);
  • 4.计算result=b/(a*c)
  • 5.输出result

double fact(int n)函数

  • 1.定义整型变量i,浮点型变量sum为1.0
  • 2.计算sum=sum*i
  • 3.重复步骤3,直到i大于n结束
  • 4.return sum到主函数

3.本题调试过程碰到问题及PTA提交列表情况说明

  • 1.第一个答案错误是没有对sum赋初值
  • 2.第二个答案错误是输出的result不是整型

二、同学代码结对互评

1.互评同学名称:赖河

2.我的代码、互评同学代码截图:

①我的代码

②互评同学代码

3.不同点:我们的算法完全不同,一个运用了倒序递加,一个正序递减,差别非常大

我的优点:算法不容易想出来,但是可读性非常高
互评同学优点:算法想起来更容易,但是对于观看者比较不友好

三、截图本周题目集的PTA最后排名。

四、本周学习总结

1.你学会了什么?
1.1 C语言哪些数据类型?
C语言的三种基本数据类型为整型,实型,字符型。

1 整型,包括short, int, long等,用以表示一个整数,默认为有符号型,配合unsigned关键字,可以表示为无符号型。
2 实型,即浮点型,包括float, double等,用来表示实数,相对于整型,该类型可以表示带有小数部分的数值。需要注意的是,实型在计算机语言中为近似值表示,并非准确值,在多次计算后可能会出现真值偏差。
3 字符型,即char型,用来表示各种字符,与ascii码表一一对应。除可以用来表示各类字符外,char型的其它规则与整型相同,可以认为char是一种特殊的整型。
1.2 字符型数据需要注意地方?
格式字符串中一般不要有其他的非格式字符,如
scanf("Please input a char :\t%c\n", &ch); // 双引号内的"Please.......",以及\t、\n等都不要出现scanf("%c", &ch);   // 只包含格式字符就好了
输入多个字符时直接连续用%c,不需要加入分隔符,同样输入也是连续输入且不能使用任何其他字符(如空格,回车等)来分隔。空格、制表以及回车都将被视作有效的字符输入。
scanf("%c%c%c", &ch, &ch2, &ch3);   // 只包含格式字符就好了
当字符和其他数值类数据混合输入时,字符要放在前面,数值放在后面输入。这样可以保证开始已经有效的输入了字符,而后面的数值也可以正确的输入
但如果一定要字符在数值之后输入,就需要要求输入者严格按照指定的个时输入数据了。稍有不慎,就不能得到正确的输入。
如需要输入一个整数i和一个字符ch。scanf("%d%c",&i,&ch); 要求在整数后面不能有任何分隔,如回车,要立即跟随要输入的字符。如果不小心输入了回车,则回车符将被输入到字符变量ch中。
1.3 自增自减运算符?
++i, --i   (在使用i之前,先使i的值加(减)1)
i++, i--   (在使用i之后,使i的值加(减)1)
 
其中++i和i++的作用相当于i=i+1。但是++i和i++不同之处在于++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1
1.4 运算符优先级?
单目运算优于双目运算。如正负号。
先乘除(模),后加减。
先算术运算,后移位运算,最后位运算。
逻辑运算最后计算
1.5 C语言哪些表达式?课堂派哪里做错,做错的请在这里分析原因
语言中常用表达式有:
1.算术表达式;
2.赋值表达式;
3.逗号表达式;
4.关系表达式;
5.逻辑表达式。
课堂派做错在i++在表达式中没有执行i+=1,在表达式完成后才执行
2.本周的内容,你还不会什么?
c语言基本数据类型short、int、long、char、float、double还不能熟练运用
3.你碰到什么困难,打算如何解决?
(1)多次出现编译错误,解决方法为在Dev C++中运行,看看提示你除了什么错误,实在不行发群上问老师助教同学。
(2)格式错误(答案错误)是最常见的问题,解决方式为将输出样例复制粘贴下来,还是错误就向老师助教寻求帮助。
(3)部分正确是最难受的,说明你成功完成了大部分,但是还有部分没完成,这时候应该静下心来好好想想是什么地方出了问题,可以重新敲一次代码,和原来进行核对

posted @ 2017-11-18 22:17  林怡鹏  阅读(308)  评论(4编辑  收藏  举报