| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 664 人关注过本帖
标题:进制转换请教!
只看楼主 加入收藏
Cafe﹖
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-4-25
收藏
 问题点数:0 回复次数:7 
进制转换请教!
大家好! 近日小弟做关于C语言的题目,碰到了两个难题
请高手们帮我想想,题目是:
1.将M进制转换成N进制  小于等于36位  0-9 A-Z  
2.输入6个字符串,按照从大到小输出
搜索更多相关主题的帖子: 进制 
2008-11-29 22:28
Cafe﹖
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-4-25
收藏
得分:0 
没人回呢
只好自己顶啦!
2008-12-02 22:20
世纪天下城
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-13
收藏
得分:0 
#include "stdio.h"
#include"string.h"
#define N 20

int main()
{
    int i,j;
    char a[N];
    char max;
    printf("请输入字符\n");
    gets(a);
    
    
    for(i=0;i<strlen(a);i++)
        for(j=i+1;j<strlen(a);j++)
    {
            if(a[i]<=a[j]) {max=a[i];a[i]=a[j];a[j]=max;}
        
    }
        puts(a);

    return 0;
}
2008-12-02 23:03
Cafe﹖
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2008-4-25
收藏
得分:0 
回复 第3楼 世纪天下城 的帖子
你好,十分感谢你的回答~
我想提一点问题,就是关于字符串比较的
可以直接用a[i]<a[j]吗?还是要用strcmp
2008-12-04 08:30
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
#include <stdio.h>
#include <string.h>
#define N0 6
void main()
{
    char s[N0][80];
    char t[80];  
    int i,j,k;
    //----------------------------
    printf("请输入%d个字符串:\n",N0);
    for(i=0;i<N0;i++)
        gets(s[i]);
    //----------------------------
    for(i=0;i<N0-1;i++)
    {
        k=i;
        for(j=i+1;j<N0;j++)
            if(strcmp(s[k],s[j])>0)k=j;
        if(k!=i)
        {
            strcpy(t,s[i]);
            strcpy(s[i],s[k]);
            strcpy(s[k],t);
        }
    }
    //----------------------------
     printf( "---排序后的顺序为:\n ");
     for(i=0;i<N0;i++)
        puts(s[i]);
}
2008-12-04 09:21
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
//1.将M进制转换成N进制  小于等于36位  0-9 A-Z

#include <stdio.h>
#include <string.h>
void main()
{
    char s[80],c;  
    int i,j,sum=0,M,N,flag;
    //----------------------------
    printf("将M进制转换成N进制(所用字符为:0-9 A-Z)\n\n");
    printf("请输入M和N(M,N<=36):\n");
    scanf("%d%d",&M,&N);
    printf( "\n");
    c=getchar();    //接收scanf()的垃圾字符
    //------------
    do
    {
        printf("请输入一个正确的%d进制数:\n",M);
        gets(s);
        flag=0;
        for(i=0;c=s[i];i++)
            if(!(c>='0'&&c<='9'||c>='A'&&c<='A'+M-10))
                flag=1;
    }while(flag);
    printf( "\n");
    //----------------------------
    //--从M进制转换为十进制
    sum=0;
    for(i=0;c=s[i];i++)
        if(c>='0'&&c<='9')
            sum=sum*M+c-'0';
        else if(c>='A'&&c<='Z')
            sum=sum*M+c-'A'+10;    
    //----------------------------
    //--从十进制转换为N进制
    for(i=0;sum!=0;i++)
    {
        c=sum%N;
        if(c>=0&&c<=9)
            s[i]=c+'0';
        else
            s[i]=c+'A'-10;
        sum=sum/N;
    }
    s[i]='\0';
    sum=strlen(s);
    for(i=0,j=sum-1;i<j;i++,j--)
    {
        c=s[i];s[i]=s[j];s[j]=c;
    }
        
    //----------------------------
     printf( "转化后的%d进制数为:  \n",N);
        puts(s);
     printf( "\n");
}
2008-12-04 10:34
qingchen0000
Rank: 1
来 自:长春
等 级:新手上路
威 望:1
帖 子:145
专家分:0
注 册:2008-12-3
收藏
得分:0 
进制转换 N<=36 0-9 A-Z
程序代码:
#include <stdio.h>
int main()
{
    unsigned m;
    int n,k,e=50;
    char D[37]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char s[51];
    s[50]='\0';
    while((scanf("%d%d",&n,&k))!=EOF)
    {
        if(n<0)
        {
            m=-(1+n)+1;
        }
        else
        {
            m=n;
        }
        do
        {
            s[--e] = D[m%k];
            m/=k;
        }
        while(m);
        if(n<0)
        {
            s[--e]='-';
        }
        printf("%s\n", s+e);
    }
    return 0;
2008-12-04 10:36
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
回复 第7楼 qingchen0000 的帖子
呵呵,能将主要语句注释一下吗?我实在读不懂。
2008-12-04 10:42
快速回复:进制转换请教!
数据加载中...
 
   



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

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