| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1509 人关注过本帖
标题:请问下这题y=y/10有什么用
只看楼主 加入收藏
gqdbsfc
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-2-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
请问下这题y=y/10有什么用
题目:查找1到一百内含有3和7的所有整数

#include <stdio.h>
int find(int y)
{
    int a,flag=0;
    while(y!=0){
        a=y%10;
        if((a==3)||(a==7)){
            flag=1;
            break;
            
        }
         y=y/10;
        
    }
    return flag;
}
    int main(){
        int x,n=0;
        for(x=1;x<100;x++){
        
         if(find(x)){
             printf("%d",x);
            
         }
    }
   
   
   
return 0;   
}
搜索更多相关主题的帖子: int return main find flag 
2022-02-09 11:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:5 
假如 y = abc 这个三位数
y = y/10 之后,y就是 ab 了

y = ab 之后
再一次执行 y = y/10 后,y 就是 a 了

y = a 之后
再一次执行 y = y/10 后,y 就是 0 了
2022-02-09 13:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:0 
查找1到一百内含有37的所有整数

if((a==3)||(a==7)){

到底是“含有37”,还是“含有37”?我怀疑你题目写错了,“含有3和7”且在[0,100]区间的数只有37一个。

程序代码:
#include <stdio.h>

_Bool foo( int n )
{
    for( ; n!=0 && n%10!=3 && n%10!=7; n/=10 );
    return n!=0;
}

int main( void )
{
    for( int i=1; i<=100; ++i )
    {
        if( foo(i) )
            printf( "%d\n", i );
    }
}
2022-02-09 14:06
gqdbsfc
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2022-2-9
收藏
得分:0 
回复 2楼 rjsp
这题好像只要找到1到100间的数,,我试过把那句删了,运行后什么也不会显示
2022-02-09 14:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:0 
回复 4楼 gqdbsfc
你删掉 y=y/10 后,那个 while就是死循环了呀,当然什么都不输出。
(严格来讲,这种无副作用的死循环,属于“未定义行为”,也就是不保证任何输出,包括不保证一定没有输出。)
2022-02-09 15:43
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
收藏
得分:5 
回复 楼主 gqdbsfc
y=y/10没有了,y就一直不会变啊,如果if不执行,没有break出来,while就会一直执行啊。
2022-02-13 11:15
不会游泳的虾
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:27
帖 子:107
专家分:675
注 册:2021-7-1
收藏
得分:5 
while (y != 0) {  //这段代码的功能是:将整数 y 分别取它的 个 十 百 。。。位数值,再进行比较判断
    a = y % 10;  //取得个位数值
    if ((a == 3) || (a == 7)) {
        flag = 1;
        break;
    }
    y = y / 10;//缩小十倍,去掉个位数值
}
比如:y = 1234;
while (y != 0)条件成立 ,进入循环。
       a = y % 10 = 1234 % 10 = 4;
      if () {} 判断
      y = y /10 , y = 1234/10 = 123
回到 while(y!=0) 此时 y = 123 != 0  条件成立 继续循环
     a = y % 10 = 123 % 10 = 3
    if () {} 判断
    y = y / 10, y = 123 / 10 = 12
以此类推,直到 y == 0 时退出while()循环。
2022-02-14 09:51
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:5 
y/10与y%10的结合是判定每一位的数据是否为3或7;
int find(int y)
{
    int a,flag=0;
    while(y!=0){
        a=y%10;
        if((a==3)||(a==7)){
            flag=1;
            break;
            
        }
         y=y/10;
        
    }
    return flag;
}
上面程序可以理解为 y%10先判断个位数据
y/10以十进制向右移位(消去个位数据)
一直循环
直至个位数为0 跳出循环

穷举是最暴力的美学
2022-02-14 11:20
快速回复:请问下这题y=y/10有什么用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012713 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved