| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3518 人关注过本帖
标题:新手学C ,还请各位高人指点
取消只看楼主 加入收藏
Wx2019
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2019-8-30
收藏
 问题点数:0 回复次数:3 
新手学C ,还请各位高人指点
网上看到一段代码,有些地方不理解,输入一个整数,判断是否有重复的数字。如下
#include<stdio.h>
int main()
{int x,x1,t,a[10]={0};
   
    scanf("%d",&x);
 x1=x;
 for(;x;x/=10)
 {
 
     t=x%10;
     printf("a[10]的值是%d\n",a[10]);//这段是我加上的,当循环到最后这个值为什么就是1???
  if(a[t])
      {
         
          printf("%d中%d重复了\n",x1,t); return 0;}
    else a[t]=1;
  }
 printf("%d中没有重复的数字\n",x1);
 return 0;
}
搜索更多相关主题的帖子: return 重复 int printf 高人 
2019-08-30 19:08
Wx2019
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2019-8-30
收藏
得分:0 
回复 3楼 云不喜
你说的没有错,a[t]的值是真或者假,我的描述也不很清楚。
今天重新模拟了下,终于搞懂了,关键的点在 else a[t] = 1 这句,这个意思就是重新给a[t]赋值了,t的值在0--9中变化,
每次循环,都会给数组中的0--9个中的其中一个元素赋值1 ,当下一次循环,遇到是1的直接打印重复的数字了。
谢谢回复!!


2019-08-31 10:53
Wx2019
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2019-8-30
收藏
得分:0 
回复 2楼 c小白2333
t的值是变化的,最开始给数组a[10]全部赋值为0 ,所以第一次循环a[t],理论上会是0 ,就执行了else a[t] = 1这句,当下次循环时碰到t与上次相等时,if(a[t])这个就是1 ,为真,谢谢回复。
2019-08-31 10:59
Wx2019
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2019-8-30
收藏
得分:0 
回复 4楼 zhaoxd
没有错,这个程序如果遇到两个或者两个以上的重复数字,它就不灵了。现在在想如何修改让它判断任意整数。
2019-08-31 11:01
快速回复:新手学C ,还请各位高人指点
数据加载中...
 
   



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

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