A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 骑着飞机去看海 于 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;
}
总是要花费很久的时间才能想到,就是想问一下,该如何一下子就能想到呢?

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

16 个回复

倒序浏览
多敲多练多积累,把老师视频里的代码敲到不看视频随手敲出来就差不多了,另外c语言算法100例看看自己敲敲试试去吧
回复 使用道具 举报 1 0
董月峰 发表于 2014-6-27 07:17
多敲多练多积累,把老师视频里的代码敲到不看视频随手敲出来就差不多了,另外c语言算法100例看看自己敲敲试 ...

哪有100列?百度一下??还是??
回复 使用道具 举报
继续锻炼,多写多练就ok了,孰能生巧嘛
回复 使用道具 举报
楼主,你好,我看了你的程序,你的控制换行的语句应该错了if(i%10==1)这个应该该无法控制每10个数换行,应该if(i%10==0)才对,你下面是这段程序运行的结果么?不应该呀
回复 使用道具 举报
一定要多写多练,语法是死的,思维才是最重要的
回复 使用道具 举报
Emy♪ 中级黑马 2014-6-27 14:04:03
7#
zhs说的是对的。  那个取余的式子貌似有问题。。。
回复 使用道具 举报
zhs 发表于 2014-6-27 11:38
楼主,你好,我看了你的程序,你的控制换行的语句应该错了if(i%10==1)这个应该该无法控制每10个数换行,应 ...

额,你应该木有复制代码测试....如果改为0,那么循环结果就是1到9了而不是1到10~~要不你复制试试?
回复 使用道具 举报
多联系一下就好了
回复 使用道具 举报
zhs 中级黑马 2014-6-28 10:56:32
10#
骑着飞机去看海 发表于 2014-6-27 23:06
额,你应该木有复制代码测试....如果改为0,那么循环结果就是1到9了而不是1到10~~要不你复制试试? ...

嗯,我运行了一下,你是对的。如果if(i%10==0)控制的话,当i=10时会先输出'/n'回车,然后再输出数字10。我说的控制语句if(i%10==0)得先输出,然后再判断才行。
回复 使用道具 举报
zhs 发表于 2014-6-28 10:56
嗯,我运行了一下,你是对的。如果if(i%10==0)控制的话,当i=10时会先输出'/n'回车,然后再输出数字10 ...

额。。。。蒙了。。。。求解附带码。
回复 使用道具 举报
zhs 中级黑马 2014-6-28 11:52:44
12#
骑着飞机去看海 发表于 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换行了
回复 使用道具 举报
多敲,多练,多看看算法~
回复 使用道具 举报

RE: 关于循环结构if与流程结构for的知识提问

zhs 发表于 2014-6-28 11:52
#include "stdio.h"
int main()
{

恩,懂,而且这要写比较严谨,在加代码不会出错~
回复 使用道具 举报
咋一看,还以为是个排序问题,结果~嘻嘻
回复 使用道具 举报
大坏蛋 来自手机 中级黑马 2014-6-30 00:32:17
16#
zhs 发表于 2014-6-27 11:38
楼主,你好,我看了你的程序,你的控制换行的语句应该错了if(i%10==1)这个应该该无法控制每10个数换行,应 ...

对,楼主应该是写错了,/是除法运算%是取余数运算
回复 使用道具 举报
大坏蛋 来自手机 中级黑马 2014-6-30 00:33:58
17#
楼主要多看实例多敲代码,这个应该是很简单的小程序了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马