黑马程序员技术交流社区

标题: 关于循环结构if与流程结构for的知识提问 [打印本页]

作者: 骑着飞机去看海    时间: 2014-6-26 23:44
标题: 关于循环结构if与流程结构for的知识提问
本帖最后由 骑着飞机去看海 于 2014-6-27 23:08 编辑

怎么说,其实前一段时间已经看了一次视频了,但是因为工作原因导致时间断开,所以只能从新看一遍,但是发现在if和for嵌套在一起的时候就很蒙,看代码得看一段时间才懂,老师讲能听懂,但是感觉嵌套就一个列子太少了,根本不能锻炼思维,想问一下该怎么锻炼for这方面的思维,我自己也写了一些这方面的代码,但是总是很费劲的才能想到,好像自己的思维不全面似得
列如 下面的代码我想了很久才想到嵌套一个if 完成。
/*
要求输入一个正数n,
输出现实从1到n增量排列,
同时每10个数字换一行
*/
#include <stdio.h>
int main()
{   int n =0;
    printf("输入数字n\n");
    scanf("%d",&n);
    while (n<0)
    {
        printf("从新输入数字\n");
        scanf("%d",&n);
    }
      for(int i=1;i<=n;i++)//实现循环从0~i
    {
        if (i%10==1)//实现换行
        {
            printf("\n");
        }

         printf(" %d",i);//输出0~i的数
    }
   
   
     /*
     1 2 3 4 5 6 7 8 9 10
     11 12 13 14 15 16 17 18 19 20
     21 22 23 24 25 26 27 28 29 30
     31 32 33
     
     */
    return 0;
}
总是要花费很久的时间才能想到,就是想问一下,该如何一下子就能想到呢?


作者: 董月峰    时间: 2014-6-27 07:17
多敲多练多积累,把老师视频里的代码敲到不看视频随手敲出来就差不多了,另外c语言算法100例看看自己敲敲试试去吧
作者: 骑着飞机去看海    时间: 2014-6-27 11:11
董月峰 发表于 2014-6-27 07:17
多敲多练多积累,把老师视频里的代码敲到不看视频随手敲出来就差不多了,另外c语言算法100例看看自己敲敲试 ...

哪有100列?百度一下??还是??
作者: 零下_1°    时间: 2014-6-27 11:15
继续锻炼,多写多练就ok了,孰能生巧嘛
作者: zhs    时间: 2014-6-27 11:38
楼主,你好,我看了你的程序,你的控制换行的语句应该错了if(i%10==1)这个应该该无法控制每10个数换行,应该if(i%10==0)才对,你下面是这段程序运行的结果么?不应该呀
作者: 忘了一切更好    时间: 2014-6-27 12:56
一定要多写多练,语法是死的,思维才是最重要的
作者: Emy♪    时间: 2014-6-27 14:04
zhs说的是对的。  那个取余的式子貌似有问题。。。
作者: 骑着飞机去看海    时间: 2014-6-27 23:06
zhs 发表于 2014-6-27 11:38
楼主,你好,我看了你的程序,你的控制换行的语句应该错了if(i%10==1)这个应该该无法控制每10个数换行,应 ...

额,你应该木有复制代码测试....如果改为0,那么循环结果就是1到9了而不是1到10~~要不你复制试试?
作者: wuming1990    时间: 2014-6-28 08:51
多联系一下就好了
作者: zhs    时间: 2014-6-28 10:56
骑着飞机去看海 发表于 2014-6-27 23:06
额,你应该木有复制代码测试....如果改为0,那么循环结果就是1到9了而不是1到10~~要不你复制试试? ...

嗯,我运行了一下,你是对的。如果if(i%10==0)控制的话,当i=10时会先输出'/n'回车,然后再输出数字10。我说的控制语句if(i%10==0)得先输出,然后再判断才行。
作者: 骑着飞机去看海    时间: 2014-6-28 11:26
zhs 发表于 2014-6-28 10:56
嗯,我运行了一下,你是对的。如果if(i%10==0)控制的话,当i=10时会先输出'/n'回车,然后再输出数字10 ...

额。。。。蒙了。。。。求解附带码。
作者: zhs    时间: 2014-6-28 11:52
骑着飞机去看海 发表于 2014-6-28 11:26
额。。。。蒙了。。。。求解附带码。

#include "stdio.h"
int main()
{
    int n =0,i;
    printf("输入数字n\n");
    scanf("%d",&n);
    while (n<0)
    {
        printf("从新输入数字\n");
        scanf("%d",&n);
    }
      for(i=1;i<=n;i++)//实现循环从0~i
    {
            printf(" %d",i);//输出0~i的数
        if (i%10==0)//实现换行
        {
            printf("\n");
        }

         
    }     
}
你试试这个,不会到9换行了
作者: yueyuanlin    时间: 2014-6-29 10:02
多敲,多练,多看看算法~
作者: 骑着飞机去看海    时间: 2014-6-29 11:50
标题: RE: 关于循环结构if与流程结构for的知识提问
zhs 发表于 2014-6-28 11:52
#include "stdio.h"
int main()
{

恩,懂,而且这要写比较严谨,在加代码不会出错~
作者: 秋天的悲伤    时间: 2014-6-29 11:52
咋一看,还以为是个排序问题,结果~嘻嘻
作者: 大坏蛋    时间: 2014-6-30 00:32
zhs 发表于 2014-6-27 11:38
楼主,你好,我看了你的程序,你的控制换行的语句应该错了if(i%10==1)这个应该该无法控制每10个数换行,应 ...

对,楼主应该是写错了,/是除法运算%是取余数运算
作者: 大坏蛋    时间: 2014-6-30 00:33
楼主要多看实例多敲代码,这个应该是很简单的小程序了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2