1.实验题目
1.6【问题描述】输出7 和7 的倍数,还有包含7 的数字例如(17,27,37...70,71,72,73...)
【输入】 一个整数N。(N 不大于30000)【输出】 从小到大排列的不大于N 的与7 有关的数字,每行一个。
【输入范例】20
【输出范例】7 14 17
2.
需求分析本演示程序用VC++6.0编写,完成7 ,7 的倍数,包含7 的数字的输出。
① 输入的形式和输入值的范围:一个整数N(N 不大于30000)。在所有输入中,元素的值都是整数
② 输出的形式:从小到大排列的不大于N 的与7 有关的数字,每行一个。
③ 程序所能达到的功能:从小到大找出和输出在[0,N]中7 ,7 的倍数,包含7 的数字
④ 测试数据:
【输入范例】20
【输出范例】7 14 17
3.
概要设计
1)为了实现上述程序功能,需要定义函数来调用来运行,定义数组来记录符合要求的数:void p(){ int k,n,i=0; printf("请输入n:"); scanf("%d",&n); int s[30000];
2)本程序包含2个函数:① 主函数main()② 求7,7的倍数及与7有关的数的函数p()各函数间关系如下:main() p()
4.详细设计
#include
printf("请输入n:"); scanf("%d",&n);
int s[30000]; ////s[]是为了记录符合要求的数
if(n>30000) //n不大于30000
printf("输入的n值超出范围!\n"); if(n<7) //n<7时没有符合要求的数
printf("没有7和7的倍数以及包含7的数字!\n");
else {
for(k=7;k<=n;k++) //利用循环从小到大递增遍历
{ if(k%7==0||k%10==7||(k/10)%10==7||(k/100)%10==7||(k/1000)%10==7)//判断是否是7,7的倍数以及与7有关的数 s[i]=k,
printf("%d\n",s[i]), //输出符合要求的数
i++; } }}
void main(){
p();}
5.调试分析
#include
void p(){
int k,n,i=0;
printf("请输入n:");
scanf("%d",&n);
int s[30000];
if(n>30000)
printf("输入的n值超出范围!\n");
if(n<7)
printf("没有7和7的倍数以及包含7的数字!\n");
else { for(k=7;k<=n;k++)
{
if(k%7==0||k%10==7||(k/10)%10==7||(k/100)%10==7||(k/1000)%10==7)
s[i]=k,
printf("%d\n",s[i]), i++; } //时间复杂度T(n)=O(n),空间复杂度S(n)=O(n) }}
void main(){ p();}
调试时,先进入main()函数,然后就是调用p()函数,定义形参,申请一个数组空间,接下来输入一个整数,再根据输入的数据执行判断语句,再分别进入其判断的结果,执行相应的语句。通过循环S[i]先记录数字再输出以达到题目的要求。6.使用说明程序名为1.exe,运行环境为VC++6.0。程序执行后显示在提示语后输入一个整数(不大于30000),再点击换行,即输出相应结果。7.测试结果1) 建立函数:» 输入:20 输出:7 14 17 » 输入:1输出:没有7和7的倍数以及包含7的数字!» 输入:30001输出:输入的n值超出范围!