C語言小白疑問
#include <stdio.h>
#include <math.h>
#include <string.h>
int zhuanru( );
void zhuanchu(int num);
int main(int argc, char *argv[])
{
char shuru,shuchu,s;
int jiezhi;
//while(1){
jiezhi=zhuanru( );
zhuanchu(jiezhi);
//}
return 0;
}
int zhuanru( )
{ int b,i,a=0;
char shuru,s[20];
printf("請輸入源資料的進制(D-十進制 H-十六進制 O-八進制 B-二進制);");
scanf("%s",&shuru);
printf("請輸入源資料(字母請大寫):");
scanf("%s",&s);
b=strlen(s);
printf("\nb=%d",b);
for(i=0;i<b;i++)
{
if(shuru=='H')
{
if(s[i]>='A' && s[i]<='Z')
s[i]=int(s[i]-'A')+10+'0';
a=a+((s[i]-'0')*(pow(16,b-1-i)));
}
if(shuru=='O')
{
a=a+((s[i]-'0')*(pow(8,b-1-i)));
}
if(shuru=='B')
{
a=a+((s[i]-'0')*(pow(2,b-1-i)));
}
if(shuru=='D')
{
a=a+((s[i]-'0')*(pow(10,b-1-i)));
}
}
printf("\na=%d\n",a);
return a;
}
void zhuanchu(int num)
{ int y,i=0,m=0,n=0,yushu;
char z[20],a[20],b[20];
char shiliu[20]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char shi[20]={'0','1','2','3','4','5','6','7','8','9'};
char ba[20]={'0','1','2','3','4','5','6','7'};
char er[20]={'0','1'};
char shuchu;
printf("請輸入目標資料的進制(D-十進制 H-十六進制 O-八進制 B-二進制);");
scanf("%s",&shuchu);
printf("\nnum=%d\n",num);
if(shuchu=='H')
{ y=16;
for(i=0;i<20;i++) b[i]=shiliu[i];
}
if(shuchu=='D')
{ y=10;
for(i=0;i<20;i++) b[i]=shi[i];
}
if(shuchu=='O')
{ y=8;
for(i=0;i<20;i++) b[i]=ba[i];
}
if(shuchu=='B')
{ y=2;
for(i=0;i<20;i++) b[i]=er[i];
printf("\ner=%s",er);
printf("\nb=%s",b);
}
i=0;
while(num>0)
{
yushu=num%y;
a[i]=yushu;
//printf("\na[i]=%d\n",a[i]);
i++;
num=num/y;
}
for(i=i-1;i>=0;i--)
{ m=a[i];
//printf("\nM=%d\n",m);
z[n]=b[m];
printf("\nb[m]=%d\n",b[m]);
//printf("\nZ[i]=%d\n",z[i]);
n++;
}
z[n]='\0';
printf("轉化后的數值為:%s",z);
}
這個程式中為什么函式zhuanchu里面使用回圈將shiliu【20】,ba【20】等陣列回圈賦值給b【20】陣列的時候出錯了?
我單獨把這個zhuanchu函式作為主函式的時候賦值是對的,但是不知道這個怎么錯了,該怎么改呢?萬分感謝
(程式是一個進制轉換)
uj5u.com熱心網友回復:
#include <stdio.h>
#include <math.h>
#include <string.h>
int zhuanru( );
void zhuanchu(int num);
int main(int argc, char *argv[]) {
char shuru,shuchu,s;
int jiezhi;
//while(1){
jiezhi=zhuanru( );
zhuanchu(jiezhi);
//}
return 0;
}
int zhuanru( ) {
int b,i,a=0;
char shuru,s[20];
printf("請輸入源資料的進制(D-十進制 H-十六進制 O-八進制 B-二進制);");
scanf("%s",&shuru);
printf("請輸入源資料(字母請大寫):");
scanf("%s",&s);
b=strlen(s);
printf("\nb=%d",b);
for(i=0;i<b;i++) {
if(shuru=='H') {
if(s[i]>='A' && s[i]<='Z')
s[i]=int(s[i]-'A')+10+'0';
a=a+((s[i]-'0')*(pow(16,b-1-i)));
}
if(shuru=='O') {
a=a+((s[i]-'0')*(pow(8,b-1-i)));
}
if(shuru=='B') {
a=a+((s[i]-'0')*(pow(2,b-1-i)));
}
if(shuru=='D') {
a=a+((s[i]-'0')*(pow(10,b-1-i)));
}
}
printf("\na=%d\n",a);
return a;
}
void zhuanchu(int num) {
int y,i=0,m=0,n=0,yushu;
char z[20],a[20],b[20];
char shiliu[20]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char shi[20]={'0','1','2','3','4','5','6','7','8','9'};
char ba[20]={'0','1','2','3','4','5','6','7'};
char er[20]={'0','1'};
char shuchu;
printf("請輸入目標資料的進制(D-十進制 H-十六進制 O-八進制 B-二進制);");
scanf("%s",&shuchu);
printf("\nnum=%d\n",num);
if(shuchu=='H') {
y=16;
for(i=0;i<y;i++) b[i]=shiliu[i];
b[y]='\0';
}
if(shuchu=='D') {
y=10;
for(i=0;i<y;i++) b[i]=shi[i];
b[y]='\0';
}
if(shuchu=='O') {
y=8;
for(i=0;i<y;i++) b[i]=ba[i];
b[y]='\0';
}
if(shuchu=='B') {
y=2;
for(i=0;i<y;i++) b[i]=er[i];
b[y]='\0';
printf("\ner=%.2s",er);
printf("\nb=%s",b);
}
i=0;
while(num>0) {
yushu=num%y;
a[i]=yushu;
//printf("\na[i]=%d\n",a[i]);
i++;
num=num/y;
}
for(i=i-1;i>=0;i--) {
m=a[i];
//printf("\nM=%d\n",m);
z[n]=b[m];
printf("\nb[m]=%d\n",b[m]);
//printf("\nZ[i]=%d\n",z[i]);
n++;
}
z[n]='\0';
printf("轉化后的數值為:%s",z);
}
//這個程式中為什么函式zhuanchu里面使用回圈將shiliu【20】,ba【20】等陣列回圈賦值給b【20】陣列的時候出錯了?
//我單獨把這個zhuanchu函式作為主函式的時候賦值是對的,但是不知道這個怎么錯了,該怎么改呢?萬分感謝
//(程式是一個進制轉換)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238788.html
標籤:C語言
上一篇:FTPClient上傳txt檔案,檔案被篡改。檔案換行時偶現。檔案內容發生了改變,FTP上傳檔案內容多了一個字符
下一篇:關于峰岹庫的問題
