C语言程序设计实验报告
实验名称
计算出1000以内最大的10个素数之和
学院
理学院
专业班级
生物04
姓名
郭颖
学号
20040938
任课教师
高克宁
实验时间
2006年12 月05 日
实验目的
熟练掌握if、if…else、if…else if语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。
熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。
掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学****调试程序,掌握语法错误和逻辑错误的检查方法。
实验内容
由用户键入一个小于1000的数,计算并输出小于该数的最大10个素数以及他们的和。
要求:(1)在程序内部加必要的注释。
(2)由于偶数不是素数,可以不考虑对偶数的处理。
(3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的
情况进行处理。
(4)输出形式为:素数1+素数2+素数3+…素数10=总和值。
算法描述流程图
主函数流程图如下:
源程序
#include<>
#include<>
int IsPrime(int n) /*用于判断是否为素数的子函数:是素数返回1,不是素数返回0*/
{
int i; /*声明一个变量作因子*/
if((n==2)||(n==3)) return 1; /*接收的实参是2或3,为素数,返回1*/
for(i=2;i<=sqrt(n);i++) /*循环判断是否为素数*/
if(n%i==0) break; /*将因子从2到sqrt(n)遍历,n能被i整除则跳出循环*/
if(i>sqrt(n)) return 1; /*判断因子i,大于sqrt(n),说明n从2到sqrt(n)无因子,n为素数,返回1*/
else return 0; /*因子小于sqrt(n)说明n不是素数,返回0*/
}
main()
{
int i=0,j,k,n=0,sum=0,a[10]={0}; /*声明变量及赋值*/
printf("\nPlease input a integer:");
scanf("%d",&k); /*从键盘键入一个数,存入k*/
if(k==2) j=k; /*若接收数据为2,则将k赋值给j*/
else if(k%2==0) j=k-1; /*不对偶数进行判断,将偶数减1变成奇数赋值给j*/
else j=k; /*将奇数直接赋值给j*/
for(;j>1;)
{
if(IsPrime(j)==1) /*调用子函数判断j是素数*/
{ if(n==10) break; /*若计数变量为10则跳出循环,不是则继续执行下一条语句*/
a[i]=j; /*将素数j保存到数组单元*/
i++; /*数组下标自增1*/
sum+=j; /*将此素数加到总和值里*/
n++; /*计数变量自增1*/
if(j==3) { a[i]=2; sum=sum
C语言程序设计实验报告 来自淘豆网www.taodocs.com转载请标明出处.