C 语言程序设计实验报告 实验名称 计算出 1000 以内 10 个最大素数之和实验目的1、熟练掌握 if、if…else、if…else if 语句和 witch 语句格式及使用方法,掌握 if 语句中的嵌套关系和匹配原则,利用 if语句和 switch 语句实现分支选择结构。2、熟练掌握 while 语句、do…while 语句和 for 语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。实验内容计算并输出 1000 以内最大的 10 个素数以及它们的和。要求:在程序内部加必要的注释。由于偶数不是素数,可以不考虑对偶数的处理。虽然在 1000 以内的素数超过 10 个,但是要对 1000 以内不够 10个素数的情况进行处理。输出形式为:素数 1+素数 2+素数 3+…+素数 10=总和值。算法描述流程图Main 函数:推断素数:源程序#include#includeint sushu/* 推断素数的函数 */{int t,i;t=sqrt;forif/* 假如不是素数,返回 0 */return 0;return n;/* 假如是素数,返回该数 */}void main{int i,j=0,n,m=0,a[1000],x;/*clrscr;*/printf;scanf;if/* x=2 时的处理 */printf;else if /* x 在 1~1000 范围外时的处理 */printf;else{if/* x 为偶数时,把 x 变为奇数 */x;for/* x 为奇数时,做函数计算 */{n=sushu; /* 做推断素数的函数调用 */if/* 对素数的处理 */{a[j]=n;/* 把素数由大至小存入数组 a[ ]中 */j++;ifm+=n; /* 统计前 10 个素数之和 */}}if/* 当素数个数小于 10 个时,结果输出 */{for;printf;}printf;printf;}else for/* 当素数个数大于等于 10 个时,结果输出 */{n=a[i];printf;ifprintf;else{printf;printf;}}}}测试数据分别输入 1000、100、10 测试。运行结果出现问题及解决方法当素数个数小于 10 时的处理不够完善,考虑不够周全。把“+2”的处理做的太牵强。程序过大,不够精简,无用文字太多。学习耐心与细心不足,如 scanf;中的“”常常忘记。编程思想不够发散,例如如何推断素数,只能想出 2 种方式(其中 1 种为参考教科书上内容);在今后学习中应更多的动脑,综合运用所学。基本功不够,如清屏 clrscr 等函数用的不好,有时同样的问题多次犯,给实验课老师带来很大的麻烦。这说明我的知识不...