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 #include int sushu(int n)/* 推断素数的函数 */ { int t,i; t=sqrt(n); for(i=2;i if(n%i==0)/* 假如不是素数,返回 0 */ return 0; return n;/* 假如是素数,返回该数 */ } void main() { int i,j=0,n,m=0,a[1000],x; /*clrscr();*/ printf(“Please input a number form 1 to 1000:”); scanf(“%d”,&x); if(x==2)/* x=2 时的处理 */ printf(“%d\n”,x); else if(x printf(“Error!\n”); else { if(x%2==0)/* x 为偶数时,把 x 变为奇数 */ x--; for(i=x;i>1;i-=2)/* x 为奇数时,做函数计算 */ { n=sushu(i); /* 做推断素数的函数调用 */ if(n!=0)/* 对素数的处理 */ { a[j]=n;/* 把素数由大至小存入数组 a[ ]中 */ j++; if(j m+=n; /* 统计前 10 个素数之和 */ } } if(j { for(i=0;i { n=a[i]; printf(“%d”,n); printf(“+”); } printf(“2=“); printf(“%d\n”,m+2); } else for(i=0;i { n=a[i]; printf(“%d”,n); if(i printf(“+”); else { printf(“=“); printf(“%d\n”,m); } } } } 测试数据 分别输入 1000、100、10 测试。 运行结果 出现问题及解决方法 当素数个数小于 10 时的处理不够完善,考虑不够周全。把“+2”的处理做的太牵强。...