| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 763 人关注过本帖
标题:C语言 十进制 转换任意进制。程序改对了 但是不太明白
只看楼主 加入收藏
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:11 
C语言 十进制 转换任意进制。程序改对了 但是不太明白
/*            
         while循环为何  使用的    >=1 不是>=0      i++ 为什么要放在 数组赋值前面   数组 s[0] 他有没有被赋变量   
          *************   弄明白就全明白了     ****************
*/
#include<stdio.h>
int main(void)
{


 int  s[1000];
 int a;                          //  十进制整数  的变量
 int i=0;                         // 数组变量
 int q;                            // 进制
 
printf("十进制整数:\n");
scanf("%d",&a);
printf("需要换为几进制。输入:\n");
scanf("%d",&q);

 while( a  >=  1)
  {
    i++;
    s[i]=a%q;
      a=a/q;   
  }
  
  
  while(i  >=1   )
{
printf("%d",s[i]);
i--;
}
   }
搜索更多相关主题的帖子: C语言 十进制 include 
2015-04-23 04:50
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
对了  while( a  >=  1)   改为while(a >= 0)的话  运行while循环至0/0  就崩溃
2015-04-23 04:52
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
i++; 如果在    s[i]取变量后面的话   程序运行就是乱码
2015-04-23 04:53
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:20 
嗯,比较经典的算法,稍做修改可显示16进制。
程序代码:
#include<stdio.h>
int main(void)
{
    int  s[1000],i;                 // 数组变量
    int a;                          //  十进制整数  的变量
    int q;                          // 进制
    printf("十进制整数:\n");
    scanf("%d",&a);
    printf("需要换为几进制。输入:\n");
    scanf("%d",&q);
    for(i=0;a>0;a/=q,i++)s[i]=a%q;
    for(i--;i>=0;i--)
    {
        if(s[i]<10)
          printf("%d",s[i]);
        else
            printf("%c",'A'+s[i]-10);
    }
    printf("\n");
} 

 

能编个毛线衣吗?
2015-04-23 06:51
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
回复 4楼 wmf2014
啊 我好想知道  i++ 放在后面  为什么会出现乱码之类的    i++ 放在数组获得变量值前面的话   s[0] 好像没有出现  下面输出的时候也是没有使用s[0]
2015-04-23 07:23
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
回复 3楼 a132266
while( a  >=  1)
  {
   
    s[i]=a%q;
      a=a/q;  
      i++;  
  }


如果 while 循环这样的话  转换就是乱码
2015-04-23 07:27
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
回复 3楼 a132266
明白 了  数组获取  和输出那 需要匹配才行   输出猜不出乱码  否则 就类似  获得的时候 从s[1]开始获得变量   输出却是s[0]开始输出
2015-04-23 07:44
青青绿豆
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2015-4-21
收藏
得分:0 
i++放后面,对应要while(i>=0)。
2015-04-23 07:48
青青绿豆
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2015-4-21
收藏
得分:0 
由于最后多了一次i++,所以最后一个s[i]未存入数据。得
i--;
while(i>=0){……}
2015-04-23 07:51
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
我在4楼的代码是从s[0]开始的。初始变量值多少、循环过程中值如何变化,这些都是程序设计的基本功,多想多做就不疑惑了。

能编个毛线衣吗?
2015-04-23 08:00
快速回复:C语言 十进制 转换任意进制。程序改对了 但是不太明白
数据加载中...
 
   



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

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