C语言博客作业--函数
2017-11-18 10:51
381 查看
一、PTA实验作业
题目1:6-5 使用函数输出一个整数的逆序数
1.本题PTA实验结果
2.设计思路
1.定义a,result放要求的逆序数2.但number不等于0执行步骤3,4,5
3.a=number%10 /求number取余10的数/
4.number=number/10
5.result=result*10+a回到步骤2
返回result的值 如果number=0 直接返回0
3.本题调试过程碰到问题及解决办法
问题:刚开始调试函数的题目时,不知道断点设在哪,以为放在主函数在调用函数时会自动调到下面的函数。
不断进行尝试,后来才知道原来要调试函数断点要放在函数那边,才能调试你编写的函数。
题目2:6-7 使用函数输出指定范围内的完数
1.本题PTA实验结果
2.设计思路
第一个函数1.定义i,sum=0
2.如果输入的number不等于1时执行循环for(i=1;i<=number/2;i++){
if(number%i==0)
sum=sum+i;
}
3.如果sum==number,就返回1,否则返回0
4.如果输入的number的值为1,返回1
第二个函数
1.定义i,j,flag=0
2.在规定范围列出所有可能并调用函数判断
for(j=m;j<=n;j++){
if(factorsum(j)==j){ /如果是就开始输出/
printf("%d = 1",j);
flag=1;
for(i=2;i<=j/2;i++){
if(j%i==0) /说明i是因数并输出i/
printf(" + %d",i);
}
printf("\n");
}
3.如果区间没有数符合就输出No Fibonacci number
3.本题调试过程碰到问题及解决办法
刚开始的代码第二个函数的循环有点问题for(i=1;i<=j/2;i++){
if(j%i==0)
printf(" + %d",i);
}
i是设从1开始的。这样总会输出1.但前面已经输出一个1了所以会导致部分正确。
经过多次输出发现了这个问题,经过排查发现并修改。
题目3:7-1 求组合数
1.本题PTA实验结果
2.设计思路
主函数1.定义n,m,a
2.输入m,n的值
3.a=fact(n)/(fact(m)*fact(n-m)) /调用函数/
4.输出值
被调用的函数
1.定义整形变量i,浮点变量result=1
2.执行循环 for(i=1;i<=n;i++)
result=result*i
3返回result的值到主函数
3.本题调试过程碰到问题及解决办法
本题能较好完成。二、同学代码结对互评
1.互评同学名称
欧阳震霆
2.同学互评照片
3.我的代码、互评同学代码截图
int prime( int p ) { int i; for(i=2;i<=sqrt(p);i++){ if(p%i==0) break; } if(i>sqrt(p)&&p!=1) return 1; else return 0; } void Goldbach( int n ) { int i,j; for(i=2;i<=n/2;i++){ if(prime(i)==1&&prime(n-i)==1){ printf("%d=%d+%d",n,i,n-i); break; } } } 欧阳
#include<math.h> int prime( int p ) { int i; if(p==1) return 0; for(i=2;i<=sqrt(p);i++){ if(p%i==0) break; } if(i>sqrt(p)) return 1; return 0; } void Goldbach( int n ) { int u,a,j; for(u=1;u<=n;u++){ int flag=0; for(j=1;j<=n;j++){ if(prime(u)&&prime(j)) a=u+j; if(a==n) { printf("%d=%d+%d",n,u,j); flag=1; break; } } if(flag==1) break; } } 我的
4.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
首先可以看出欧阳的代码相对比较简洁而我的篇幅显得比较大。在下面那个函数中我用了嵌套循环以及再设一个flag来判断条件,思路比较直接,欧阳的则是用了调用函数及运用了
函数直接解决,需要一定思考。
我更喜欢欧阳的代码。我的虽然较直接但篇幅太大。欧阳运用函数就可以解决掉问题,看起来较为简洁。
三、截图本周题目集的PTA提交列表及最后排名
四、本周学习总结
1.你学会了什么?
1.1 C语言哪些数据类型?
短整形长整形
字符形
单精度浮点形
双精度浮点形
1.2 字符型数据需要注意地方?
赋值时要加' '自增时要c++不能c=c++
1.3 自增自减运算符?
a--/a++是后缀(自减)自增,变量值(减少)增加,表达式值不变--a/++a是前缀(自减)自增,变量值(减少)增加,表达式值增加
1.4 运算符优先级?
算术运算符>关系运算符>逻辑运算符>条件表达式>赋值运算符>逗号运算符逻辑运算符,关系运算符,双目算术运算符是从左向右运算(左结合)
1.5 C语言哪些表达式?课堂派哪里做错,做错的请在这里分析原因?
赋值表达式,逻辑表达式,条件表达式,关系表达式错题:表达式(j=3,j++)的值。当时不知道j++整个表达式的值为j。
2.本周的内容,你还不会什么?
对于在设一个量判断条件运用不够灵活如:flag-找错误的能力还是不够
3.循环结构考试总结
1.哪题做错了,怎么改?
7-3 二进制的前导的零:我用pow(2,i)的方法来接近输入的数,运用表达式输出。但值一大就运行超时了。后来才知道值超过了int的范围,使用double就通过了
7-5 单词长度:当时没有去完成该题目。
该代码最后有一种情况不符合
暂时未解决
2.考试结果满意么,怎么改进?
结果不太满意。因为看到最后一题有点不太理解就放弃了。后面自己去完成可以得到较好分数。以后会多去尝试。然后自己的查错能力也要提高,就是自己多去思考,多做题。