啊哈磊_编程从这里起步

标题: if的循环问题 [打印本页]

作者: Dear    时间: 2015-8-15 10:26
标题: if的循环问题
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int i,a,b,c,d;
    printf("请输入一个三位数我会帮你求出个位十位百位的和\n");
    scanf("%d",&i);
    if(i<100 || i>999)
    {
    printf("请输入三位数");
    }
    a=i%100%10;
    b=i%100/10;
    c=i/100;
    d=a+b+c;
    printf("%d",d);
        system("pause");
        return 0;
}
怎样才能在红字那里做成循环    在不是3位数的情况下一直循环


作者: 小榛鼠    时间: 2015-8-15 10:26
#include <stdio.h>
#include <stdlib.h>
int main(){
        int i,a,b,c,d,n; //多了个变量n来让while中断
       
    do{
            if(i<100 || i>999){
                    puts("请输入三位数:");
                    scanf("%d",&i);
                    }
            else{
                    n=0;
                    break;
            }
    }while(n=1);
   
           a=i%100%10;
    b=i%100/10;
    c=i/100;
    d=a+b+c;
    printf("和是:%d\n",d);
   
        system("pause");
    return 0;
}

用while或者do while
用do while可以少一条输入语句
作者: Dear    时间: 2015-8-15 10:34
还有一个问题
书上127页
输入一个n位数范围在1-99 999 999求这个n位数每一位上的数之和。例如输入12输出3;输入234510输出15
作者: 小榛鼠    时间: 2015-8-15 12:12
求这个n位数每一位上的数之和其实隔壁帖子就有。。

#include <stdio.h>
#include <stdlib.h>
int nixu(int n){
    int g=0,t;
    t=n;
    while(t>0){
        g+=t%10;
        t/=10;
    }
    return g;
}

int main(){
        int n;
    scanf("%d",&n);
    printf("它的和是%d\n",nixu(n));
    system("pause");
    return 0;
}
这个也可以用while(1)来无限循环
作者: 初学C    时间: 2015-8-15 18:03
本帖最后由 初学C 于 2015-8-15 18:06 编辑

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>//getch();函数的头文件
int main()
{
    int i,a,b,c,d;
    loop:;//用户的goto标签
    system("cls");
    printf("请输入一个三位数我会帮你求出个位十位百位的和\n");
    scanf("%d",&i);
    if(i<=99 || i>=1000)
    {
    printf("请输入三位数");
    getch();
    goto loop;//啊哈C没讲的goto语句
    }
    a=i%100%10;
    b=i%100/10;
    c=i/100;
    d=a+b+c;
    printf("%d",d);
    system("pause");
    return 0;
}

作者: 初学C    时间: 2015-8-15 18:07
goto语句就是这么用的
作者: 初学C    时间: 2015-8-15 18:09
直接改语句执行流程
不信的话,你试试
#include <stdio.h>
void main()
{
int a = 0;
abc:;
printf("你好,这是用goto语句造的循环!\n");
if(a<=10)
{
goto abc;
}
}
作者: 初学C    时间: 2015-8-15 18:10
最后,欢迎你加入QQ群 C工作室
作者: 初学C    时间: 2015-8-15 18:11
不讲goto是啊哈C的失职啊!
作者: 小榛鼠    时间: 2015-8-15 18:26
不太建议用goto,某方面来说它像毒品,你会用着用着就上瘾,然后最后害死自己。。
作者: zhuzhu81998    时间: 2015-8-15 20:33
小榛鼠 发表于 2015-8-15 18:26
不太建议用goto,某方面来说它像毒品,你会用着用着就上瘾,然后最后害死自己。。

正解,坚决抵制goto
作者: zhuzhu81998    时间: 2015-8-15 20:35
好的回复是对人的鼓励。[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
int main()
{
         int i,a,b,c,d;
     printf("请输入一个三位数我会帮你求出个位十位百位的和\n");
     scanf("%d",&i);
    if(i<100 || i>999)
    {
    printf("请输入三位数");
    main();
    }
     a=i%100%10;
     b=i%100/10;
     c=i/100;
     d=a+b+c;
     printf("%d",d);
         system("pause");
         return 0;
}[/mw_shl_code]
作者: Dear    时间: 2015-8-16 09:47
zhuzhu81998 发表于 2015-8-15 20:35
好的回复是对人的鼓励。[mw_shl_code=c,true]#include
#include
int main()

运行出来的结果不敢看
作者: Dear    时间: 2015-8-16 09:47
小榛鼠 发表于 2015-8-15 10:26
#include
#include
int main(){

do while书上还没学到·
作者: zhuzhu81998    时间: 2015-8-16 09:50
Dear 发表于 2015-8-16 09:47
运行出来的结果不敢看

什么意思?
作者: Dear    时间: 2015-8-16 10:00
小榛鼠 发表于 2015-8-15 10:26
#include
#include
int main(){

怎样用while做循环语句啊   do while不会
作者: Dear    时间: 2015-8-16 10:19
zhuzhu81998 发表于 2015-8-16 09:50
什么意思?

回复没插图  你看帖子吧  我才发

作者: Dear    时间: 2015-8-16 10:22
这是用你的代码运行出来的·····{:soso_e153:}zhuzhu81998

QQ截图20150816102114.png (11.66 KB, 下载次数: 33)

QQ截图20150816102114.png

作者: 小榛鼠    时间: 2015-8-16 11:13
Dear 发表于 2015-8-16 10:00
怎样用while做循环语句啊   do while不会

#include <stdio.h>
#include <stdlib.h>
int main(){
        int i,a,b,c,d,n; //多了个变量n来让while中断
       
        puts("请输入三位数:");
          scanf("%d",&i);
        while(n=1){
            if(i<100 || i>999){
                     puts("请输入三位数:");
                scanf("%d",&i);
                 }
                
         else{
                 n=0;
                  break;
          }
    }

    a=i%100%10;
    b=i%100/10;
    c=i/100;
    d=a+b+c;
    printf("和是:%d\n",d);

        system("pause");
    return 0;
}

while(表达式){语句....};
如果表达式成立,这个语句会一直循环;
如果表达式不成立,这个语句就不会循环;
do while只是无论如何都会先执行一次循环,然后再判断表达式;
如果括号只放1或其它整数默认为条件成立,放0为不成立,这个你应该懂吧




作者: 小榛鼠    时间: 2015-8-16 11:16
小榛鼠 发表于 2015-8-16 11:13
#include
#include
int main(){

while因为要先判断所以比do while多打一次
puts("请输入三位数:");
scanf("%d",&i);
作者: Dear    时间: 2015-8-16 11:19
小榛鼠 发表于 2015-8-16 11:13
#include
#include
int main(){

                                        懂
作者: zhuzhu81998    时间: 2015-8-17 14:50
Dear 发表于 2015-8-16 10:22
这是用你的代码运行出来的·····zhuzhu81998

应该是你那儿的问题,我这儿没错
作者: Dear    时间: 2015-8-17 17:44
zhuzhu81998 发表于 2015-8-17 14:50
应该是你那儿的问题,我这儿没错

我是复制的你的代码啊
作者: zhuzhu81998    时间: 2015-8-17 17:55
Dear 发表于 2015-8-17 17:44
我是复制的你的代码啊

C:\Users\levi\Pictures\捕获.png
作者: zhuzhu81998    时间: 2015-8-17 17:57
Dear 发表于 2015-8-17 17:44
我是复制的你的代码啊

我这儿没错
作者: zhuzhu81998    时间: 2015-8-17 17:57
Dear 发表于 2015-8-17 17:44
我是复制的你的代码啊

[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
#include <conio.h>//getch();函数的头文件
int main()
{
    int i,a,b,c,d;
    system("cls");
    printf("请输入一个三位数我会帮你求出个位十位百位的和\n");
    scanf("%d",&i);
    if(i<=99 || i>=1000)
    {
    printf("请输入三位数");
    getch();
    main();
    }
    a=i%100%10;
    b=i%100/10;
    c=i/100;
    d=a+b+c;
    printf("%d",d);
    system("pause");
    return 0;
}
[/mw_shl_code]
作者: Dear    时间: 2015-8-17 22:01
zhuzhu81998 发表于 2015-8-17 17:57
[mw_shl_code=c,true]#include
#include
#include //getch();函数的头文件

看一下你上次回复的代码(11楼的)    两次发的是一样的吗?

QQ截图20150817215949.png (144.56 KB, 下载次数: 31)

QQ截图20150817215949.png

作者: zhuzhu81998    时间: 2015-8-17 22:55
Dear 发表于 2015-8-17 22:01
看一下你上次回复的代码(11楼的)    两次发的是一样的吗?

额,那也不会出现你那样的情况吧
作者: Dear    时间: 2015-8-18 08:59
zhuzhu81998 发表于 2015-8-17 22:55
额,那也不会出现你那样的情况吧

你不信可以把你11楼发的代码复制试以下




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2