C语言博客作业--函数
一、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%i0) /说明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.考试结果满意么,怎么改进?
结果不太满意。因为看到最后一题有点不太理解就放弃了。后面自己去完成可以得到较好分数。以后会多去尝试。
然后自己的查错能力也要提高,就是自己多去思考,多做题。