您的位置:首页 > 编程语言 > C语言/C++

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.考试结果满意么,怎么改进?

结果不太满意。因为看到最后一题有点不太理解就放弃了。后面自己去完成可以得到较好分数。以后会多去尝试。

然后自己的查错能力也要提高,就是自己多去思考,多做题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: