老师的作业
点击查看作业要求
第12周的第9次作业(循环)7-1 求整数的位数及各位数字之和
1.实验代码
#include<stdio.h> int main() { int i,sum=0,item=0,t,a,b=0,c,d; scanf("%d",&t); while (t!=0){ d=t; a=t/10; b=b+1; item=d-a*10; sum=sum+item; t=a; } printf("%d %d",b,sum); return 0; }
2.设计思路
第一步:使输入的数字不停循环除以十,因为输入的数字是整型,小数会省略因此,用while语句设置循环结构。
第二步:使用循环并且使用输入的数与约掉个位数的数乘以十相减等到一个个位数,通过循环使每次得到的个位数相加,并且进行循环直至输入的数变成零,进程结束。
流程图:
3.本题调试过程碰到问题及解决办法
刚开始编写时发生了这个错误:
接着我进行了调试:
是因为whlie条件里的量和输入的量不是同一个,将他改正后:
通过调试,发现起初用if语句分类了输入为个位数和多位数,多此一举毫无用处因此我将他删除。
错误改正成功。
第12周的第10次作业(循环)7-1 统计素数并求和 (20 分)
1.实验代码
#include<stdio.h> #include<math.h> int main(){ int m,n; scanf("%d %d",&m,&n); int i,count,sum,a; count=0; sum=0; for(m;m<=n;m++){ a=sqrt(m); for(i=2;i<=a;i++){ if(m%i==0){ break; } } if(i>a){ if(m==1){ count=count; }else{ sum=sum+m; count++; } } } printf("%d %d",count,sum); return 0; }
2.设计思路
首先用循环体判断出素数,在进行素数的相加和。
流程图:
3.本题调试过程碰到问题及解决办法
这串代码经过运行输入1-100,1-20,的结果都是正确的,而在输入1-500,的时候运行出错,原因经过调试
if语句编写出错,经过修改if语句,将a=1改成a==1,并且加了else if之后,程序运行成功。
第12周的第11次作业(循环)6-4 使用函数求素数和 (20 分)
1.实验代码
int prime( int p ){ int i,n; if(p >= 2){ n = sqrt(p); for (i = 2;i <= n;i++){ if(p % i == 0) break; } if (i > n) return 1; else return 0; } else return 0;} int PrimeSum( int m, int n ) { int i,a,b = 0; for(a = m;a <= n;a++) if(prime(a) == 1) b = b + a; return b; }
2.设计思路
第一步:首先编写一个可以判断p为素数的函数Prime,第二步:编写一个可以控制区间[m,n]的函数PrimeSum,可以让题目中的运行程序直接调取函数使用,得出结果。
流程图:
3.本题调试过程碰到问题及解决办法
刚开始编写时没有把判断素数的函数和判断区间的函数写在了一起导致错误。
用二次循环方法一直报错。
因此改用平方根的数学函数。
运行正确。
**个人总结*
1.整体学习方法和以往大致相同,记录上课时老师所讲知识点,课后通过百度查询疑难问题后解读代码或者询问同学。
2.通过这些学习途径,学习到了制作自定义函数和使用函数的方法,以及for连续循环体的使用。
3.这周学习过程中遇到的难点也是以往所不能体会的,for循环使用困难,以及自定义函数和使用的困难。
4.通过上课时老师所讲内容,课下查询了百度,再自己翻译代码理解代码结构,认识代码结构,学会了使用。
互评和学习进度