C语言第五次作业
题目7-1 判断素数
1.实验代码:
#include <stdio.h> #include <math.h> int main() { int n, i, flag; long long x; scanf("%d", &n); while(n--) { scanf("%lld", &x); flag = 1; for(i = 2; i <= sqrt(x); i++) { if(x % i == 0) { flag = 0; break; } } if(x == 1 || flag == 0) printf("No\n"); else printf("Yes\n"); } return 0; }
2 设计思路:
(1)题目需要我们判断素数,首先我们得知道怎么判断素数,再根据原理写出代码,判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数,还有更简单的判断方法,只需被 2 ~ 之间的每一个整数去除就可以了。如果 m 不能被 2 ~ 间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。这里我用第二种办法,首先定义整形变量n,i,flag,再定义long long变量x,再输入x,对x进行上述的判断过程,如果x不是素数,则flag为0,判断,如果x=1或flag=0时,输出no,否则输出yes.
(2)流程图:
3.本题调试过程碰到问题及解决办法:
遗漏了1不是素数,于是在判定输出yes的条件中加一个||x=1
题目7-1 统计一行文本的单词个数
1.实验代码:
#include <stdio.h> int main() { int i, sum = 0, word = 0; char string[10000]; gets(string); for (i = 0; string[i] != '\0'; i++) if (string[i] == ' ') word = 0; else if (word == 0) { word = 1; sum++; } printf("%d\n", sum); return 0; }
2 设计思路:
(1)
1.这道题可以用数组来解决,首先定义i,sum,word,char string[10000]
2.用for循环使判断在文本结束前进行
3.用素组判断文本中字符是否为单词,如果是,sum加一,直到读取结束
(2)流程图:
3.本题调试过程碰到问题及解决办法:
错误的将空格的数量定义为单词的数量,应在初始时定义一个word,从字符与空格的关系进行赋值,从而判断s
二、总结和学习进度条
1.这几周学了数组,循环嵌套,数组的用处很多,可以处理很多数据上的问题,同时我还意识到我基础的不牢固,需要更多的练习。
3.