acm实习报告之一

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 的数字

④ 测试数据:

扫描二维码关注公众号,回复: 1444674 查看本文章

【输入范例】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<stdio.h>void p(){ int k,n,i=0;

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<stdio.h>

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值超出范围!

猜你喜欢

转载自blog.csdn.net/attack_5/article/details/80330671