C 语言程序设计实验报告 c 语言实验上机报告答案 实验名称计算出 1000 以内 10 个最大素数之和 实验目的 1、熟练掌握 if、if…else、if…elseif 语句和 witch 语句格式及使用方法,掌握 if 语句中的嵌套关系和匹配原则,利用 if 语句和 switch 语句实现分支选择结构。 2、熟练掌握 while 语句、do…while 语句和 for 语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出 1000 以内最大的 10 个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在 1000 以内的素数超过 10 个,但是要对 1000 以内不够 10 个素数的情况进行处理。 输出形式为:素数 1+素数 2+素数 3+…+素数 10=总和值。 算法描述流程图 Main 函数: 推断素数: 源程序 #include #include intsushu(intn)/*推断素数的函数*/ { intt,i; t=sqrt(n); for(i=2;i<=t;i++) if(n%i==0)/*假如不是素数,返回 0*/ return0; returnn;/*假如是素数,返回该数*/ } voidmain() { inti,j=0,n,m=0,a[1000],x; /*clrscr();*/ printf("Pleaseinputanumberform1to1000:"); scanf("%d",&x); if(x==2)/*x=2 时的处理*/ printf("%dn",x); elseif(x1;i-=2)/*x 为奇数时,做函数计算*/ { n=sushu(i);/*做推断素数的函数调用*/ if(n!=0)/*对素数的处理*/ { a[j]=n;/*把素数由大至小存入数组 a[]中*/ j++; if(j<11) m+=n;/*统计前 10 个素数之和*/ } } if(j<10)/*当素数个数小于 10 个时,结果输出*/ { for(i=0;i { n=a[i]; printf("%d",n); printf("+"); } printf("2="); printf("%dn",m+2); } elsefor(i=0;i<10;i++)/*当素数个数大于等于 10 个时,结果输出*/ { n=a[i]; printf("%d",n); if(i<9) printf("+"); else { printf("="); printf("%dn",m); } } } } 测试数据 分别输入 1000、100、10 测试。 运行结果 出现问题及解决方法 当素数个数小于 10 时的处理不够完善,考虑不够周全。把“+2”的处理做的太牵强。 程序过大,不够精简,无用文字太多。 学习耐心与细心不足,如 scanf(“%d”,&n);中的“&”常...