《C程序设计》综合性实践学习报告
专业学号姓名题目名称自评分最后得分
基本思
路及关
键语句
说明
本题基本思路如下:
该程序设计四个函数:读函数ReadDat()把100个四位数从键盘存入数组a中,再写函数jsValue(),其功能是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次
存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()
输出。
在main()函数中调用以上函数。
关键语句说明如下:
①for(i = 0 ; i < 3 ; i++) 循环输入100个四位数
②for(i=0;i<cnt-1;i++) 将所有素数按从小到大的顺序进行排序
for(j=i+1;j<cnt;j++)
if(b[j]<b[i])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
③for(i = 2 ; i < m ; i++) 判断一个数是否为数素
if(m % i == 0)是素数,否则不是素数
④for(i = 0 ; i < cnt; i++) 循环输出数组b
printf( "b[%d]=%d\n",i,b[i]);
(流程图在下个表中)
运行结果如下:(以三个数为例)
教师评
语
签名:
日期:
主要函数流程图
ReadDat() jsValue()
writeDat() main()
程序源代码:
#include "stdio.h"
void readDat(); //函数声明
N Y 开始
for i 0 to 3 输入数据 四位数
开始
for i 0 to 3 isP(a[i])=1 N
Y if(b[j]<b[i])
t=b[i];b[i]=b[j];b[j]=t
for i 0 to 3
for i 0 to 3 结束
b[cnt++]=a[i] 开始 素数的个数
素数的值
for i 0 to cnt
b[i]
结束
开始
调用readDat()
调用jsValue()
调用writeDat()
结束
void writeDat(); //函数声明
void jsValue(); //函数声明
int a[3], b[3], cnt=0 ; //定义数组a和b,定义全局变量cnt
int isP(int m)
{
int i ;
for(i = 2 ; i < m ; i++) //判断是否为数素
if(m % i == 0) return 0 ; //不是素数返回0
return 1 ; //是素数返回1
}
void jsValue()
{
int i,j,t;
for(i=0;i<3;i++) //将是素数的数存入数组b中
if(isP(a[i])) b[cnt++]=a[i];
for(i=0;i<cnt-1;i++) //将所有素数按从小到大的顺序进行排序
for(j=i+1;j<cnt;j++)
if(b[j]<b[i])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
/*将所有这些四位数是素数的个数cnt,依次存入数组b中,然后按从小到大的顺序进行排序*/
}
void main()
{
readDat() ; //调用输入函数
jsValue() ; //调用判断函数
writeDat() ; //调用显示函数
}
void readDat()
{
int i ;
printf("请输入100个四位数\n");
for(i = 0 ; i < 3 ; i++) //循环输入100个四位数
{
scanf( "%d,", &a[i]) ;
while(a[i]<1000||a[i]>9999) //如果输入的不是四位数,则重新输入
{printf("你输入的不是四位数,请重新输入:\n");
scanf( "%d,", &a[i]) ;} //将输入的数据存入数组a中
}
}
void writeDat() //显示函数
{
int i ;
printf( "素数的个数 cnt=%d\n", cnt) ;
printf("素数的值从小到大分别为:\n");
for(i = 0 ; i < cnt ; i++) //输出数组b
printf( "b[%d]=%d\n",i, b[i]) ;
/***********输出数组b(调用函数)********/
}
题目
程序设计四个函数:读函数ReadDat()把100个四位数从键盘存入数组a中,再写函数jsValue(),其功能
是:求出所有这些四位数是素数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b 的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()输出。
在main()函数中调用以上函数。