题目一:
1.本题PTA提交列表:
2.设计思路(包括流程图),主要描述题目算法
//由题目,设计思路如下
1.该题目可以将一个公式拆分为三个子函数
2.声明一个fact()子函数用于求分子n!;然后多次调用这个函数
3.最后在主函数中调用三次函数组合成一个公式就可的到最终的结果
4.流程图如下:
最终的代码如下:
#include<stdio.h>
double fact(int i);
main()
{
int i,n,m,N,M,B,result;
scanf("%d %d",&m,&n);
N=fact(n);
M=fact(m);
B=fact(n-m);
result=N/(B*M);
printf("result = %d",result);
}
double fact(int i)
{
int j,s=1;
for(j=1;j<=i;j++)
s=s*j;
return s;
}
3.本题调试过程碰到的问题及PTA提交的情况说明(**注意:调试过程必须截图说明如何调试,如何解决问题,PTA提交的列表中的每一个错误详细说明为什么及如何解决)
编译上传之后出现部分错误,多次修改之后还是有错误,与同学对比,也没有结果,便不了了之
题目二:
1.本题PTA提交列表:
2.设计思路(包括流程图),主要描述题目算法
//由题目,设计思路如下
1.利用for()循环语句和数学公式sqrt(),先声明一个函数用于求2的指数幂之和
2.在主函数中需要定义整型变量n,result;
3.输入n的值,并且把n的值传递给子函数
4.最后根据题目要求输出子函数返回的值
5.流程图如下:
最终的代码如下:
#include<stdio.h> #include<math.h> double fact(int i); main() { int i,j,k,result=0; scanf("%d",&i); for(j=1;j<=i;j++){ k=pow(2,j); result+=k; } printf("result = %d",result); } double fact(int i) { int s; s=pow(2,i); return s; }
3.本题调试过程碰到的问题及PTA提交的情况说明(**注意:调试过程必须截图说明如何调试,如何解决问题,PTA提交的列表中的每一个错误详细说明为什么及如何解决)
一开始忘记参照题目格式,出现格式错误,后来修改之后,便正确了
题目三:
1.本题PTA提交列表:
2.设计思路(包括流程图),主要描述题目算法
//由题目,设计思路如下
1.该题目可以将一个公式拆分为两个子函数
2.声明一个sushu()子函数用于判断素数,另外一个用来控制循环
3.最后在主函数中函数
4.流程图如下:
最终的代码如下:
#include<stdio.h> #include<math.h> int ss(int m) { int i,k; if(m==1) return 0; k=(int)sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) return 1; else return 0; } main() { int N,m,x; int a[10]; scanf("%d",&N); for(m=0;m<N;m++){ scanf("%d",&a[m]); } for(m=0;m<N;m++) { x=a[m]; x=ss(x); if(x==1) printf("Yes\n"); else if(x==0) printf("No\n"); } }
3.本题调试过程碰到的问题及PTA提交的情况说明(**注意:调试过程必须截图说明如何调试,如何解决问题,PTA提交的列表中的每一个错误详细说明为什么及如何解决)
在第一次编写之后,总是运行不出正确答案,后来发现,自己粗心,把1当做素数来判断,导致出现问题,后加以修改,便成功的出所要的语句。
二、同学代码互评
1.我的代码:
#include<stdio.h> #include<math.h> int ss(int m) { int i,k; if(m==1) return 0; k=(int)sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) return 1; else return 0; } main() { int N,m,x; int a[10]; scanf("%d",&N); for(m=0;m<N;m++){ scanf("%d",&a[m]); } for(m=0;m<N;m++) { x=a[m]; x=ss(x); if(x==1) printf("Yes\n"); else if(x==0) printf("No\n"); } }
2.同学:李嘉林
同学的代码:
#include<stdio.h> #include<math.h> int sushu(int n) { int i; if(n==1) return 0; for(i=2;i<=sqrt(n);i++) { if(n%i==0) { return 0; } } return 1; } int main() { int a,n,i; { scanf("%d",&a); } for(i=0;i<a;i++) { scanf("%d",&n); if(sushu(n)) { printf("Yes\n"); } else printf("No\n"); } }
3.我和同学的代码有哪些不同?各自有哪些优势?你更喜欢那种代码的风格?
李同学的代码更短,也更简单,我思考问题复杂化了,我的更适合新手,比较喜欢她的代码
三、截图本周题目集的PTA最后排名
四、本周学习总结
1.本周你学会了什么?
1.本周学会简单的声明一个函数,调用函数;
2.以及声明函数过程的参数的选择
3.学会了如何把一个复杂的函数拆分为多个简单的函数
2.本周的内容,还有那些内容不会?
1. 一些较复杂的函数还不会如何声明,比如指数型的函数,对于参数总是容易弄错