| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 345 人关注过本帖
标题:看看这个程序
只看楼主 加入收藏
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
看看这个程序
将一个十进制数转化为2 8 16进制 不知道哪里错了 可以运行 但是结果不对
#include<stdio.h>
#include<stdlib.h>
void trdec(char *str,int idec,int ibase)
{
 int n,k;
 char temp;
  for(n=0,k=0;(idec/ibase)!=0;n++,k++)
  {
   if(idec%ibase<10)
   {
    str[n]='0'+idec%ibase;
   }
   else
   {
    str[n]='A'+idec%ibase-10;
   }
   idec/=ibase;
  }
  for(n=0;n<k/2;n++)
  {
   temp=str[n];
   str[n]=str[k-1-n];
   str[k-1-n]=temp;
  }
  str[k]='\0';
}
main()
{
 FILE *fp;
 char str[3][50],*p0=*str,*p1=str[1],*p2=str[2];
 int idec;
 scanf("%d",&idec);
 if((fp=fopen("myf2.out","w"))==NULL)
 {
  printf("open fail\n");
  exit(0);
 }
 trdec(*p0,idec,2);
 printf("%s,",*p0);
 fprintf(fp,"%s,",*p0);
 trdec(p1,idec,8);
 printf("%s,",p1);
 fprintf(fp,"%s,",p1);
 trdec(p2,idec,16);
 printf("%s\n",p2);
 fprintf(fp,"%s\n",p2);
 fprintf(fp,"my text number is : 1231231234\n");
 if(fclose(fp))
 {
  printf("close fail\n");
  exit(0);
 }
}

搜索更多相关主题的帖子: 十进制 
2011-03-09 16:54
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:20 
void trdec(char *str,int idec,int ibase)
{
    int n,k;
    char temp;
    for(n=0,k=0;idec!=0;n++,k++)
    {
        if(idec%ibase<10)
        {
            str[n]='0'+idec%ibase;
        }
        else
        {
            str[n]='A'+idec%ibase-10;
        }
        idec/=ibase;
    }
    for(n=0;n<k/2;n++)
    {
        temp=str[n];
        str[n]=str[k-1-n];
        str[k-1-n]=temp;
    }
    str[k]='\0';
}

trdec(p0,idec,2);
printf("%s,",p0);
fprintf(fp,"%s,",p0);


[ 本帖最后由 『点点滴滴』 于 2011-3-9 17:04 编辑 ]
2011-03-09 17:03
njzhangyuhao
Rank: 2
等 级:论坛游民
帖 子:197
专家分:35
注 册:2010-11-20
收藏
得分:0 
?????????看不懂啊
2011-03-09 17:08
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
void trdec(char *str,int idec,int ibase)
{
    int n,k;
    char temp;
    for(n=0,k=0;idec!=0;n++,k++)
    {
        if(idec%ibase<10)
        {
            str[n]='0'+idec%ibase;
        }
        else
        {
            str[n]='A'+idec%ibase-10;
        }
        idec/=ibase;
    }
    for(n=0;n<k/2;n++)
    {
        temp=str[n];
        str[n]=str[k-1-n];
        str[k-1-n]=temp;
    }
    str[k]='\0';
}
main()
{
    FILE *fp;
    char str[3][50],*p0=*str,*p1=str[1],*p2=str[2];
    int idec;
    scanf("%d",&idec);
    if((fp=fopen("myf2.out","w"))==NULL)
    {
        printf("open fail\n");
        exit(0);
    }
    trdec(p0,idec,2);
    printf("%s,",p0);
    fprintf(fp,"%s,",p0);
    trdec(p1,idec,8);
    printf("%s,",p1);
    fprintf(fp,"%s,",p1);
    trdec(p2,idec,16);
    printf("%s\n",p2);
    fprintf(fp,"%s\n",p2);
    fprintf(fp,"my text number is : 1231231234\n");
    if(fclose(fp))
    {
        printf("close fail\n");
        exit(0);
    }
}
2011-03-09 17:10
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
以前做过的练习,10进制整数到2~16进制任意转换。

程序代码:

#include <stdio.h>

int convertedNumber[64];
long int numberToConvert;
int base;
int digit=0;

int main (void) {

        void getNumberAndBase (void);
        void convertNumber (void);
        void displayConvertedNumber (void);

        getNumberAndBase ();
        convertNumber ();
        displayConvertedNumber ();

        return 0;
}

void getNumberAndBase (void) {

        printf ("Number to be converted? ");
        scanf ("%li",&numberToConvert);

        printf ("Base? ");
        scanf ("%i",&base);

        if(base<2||base>16) {
                printf ("Bad base - must be between 2 and 16\n");
                getNumberAndBase();
        }

}

void convertNumber (void) {

        do {
                convertedNumber[digit]=numberToConvert%base;
                digit++;
                numberToConvert /= base;
        }
        while(numberToConvert!=0);
}

void displayConvertedNumber (void) {

        const char baseDigits[16]={'0','1','2','3','4','5','6','7','8','9','A','
B','C','D','E','F'};

        int nextDigit;

        printf ("Converted number= ");

        for(digit--;digit>=0;digit--){
                nextDigit=convertedNumber[digit];
                printf ("%c",baseDigits[nextDigit]);
        }

        printf ("\n");

}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-09 17:30
快速回复:看看这个程序
数据加载中...
 
   



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

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