以下是我的程式碼
已經沒有error了
可是還是有問題
煩請修改我的程式
不要另外打別種的
printf %x 那種的不行
謝謝~
#include
int itoh(int n,char c[]);
void main()
{
int n,c[50];
printf("請輸入數字:");
scanf("%d",&n);
printf("%s",c);
int itoh(int n,char c[]);
{
int i=0,n2,n3;
while(n>0)
{
c[i]=n%16;
n=n/16;
i++;
}
for(n3=0,n2=i-1;n2>=0;n2--,n3++)
{
if(c[n2]==10)
c[n3]='a';
if(c[n2]==11)
c[n3]='b';
if(c[n2]==12)
c[n3]='c';
if(c[n2]==13)
c[n3]='d';
if(c[n2]==14)
c[n3]='e';
if(c[n2]==15)
c[n3]='f';
if(c[n2]<10)
c[n3]=c[n2];
}
}
}
2007-01-07 21:42:37 · 3 個解答 · 發問者 SHO 1 in 電腦與網際網路 ➔ 程式設計
#include
void itoh(int n,char ret[]);
void main()
{
int n;
char c1[50];
printf("請輸入數字:");
scanf("%d",&n);
itoh(n, c1);
printf("%s\n",c1);
}
2007-01-09 11:14:36 · update #1
void itoh(int n,char ret[])
{
char c2[50];
int i=0,n2,n3;
while(n>0)
{
c2[i]=n;
n=n/16;
i ;
}
for(n3=0,n2=i-1;n2>=0;n2--,n3 )
{
if(c2[n2]>=10)
ret[n3]=c2[n2] 55;//10 55=65 -->A
if(c2[n2]<10)
ret[n3]=c2[n2] 48;//0 48=48-->0
}
ret[n3]='\0';
}
貼上正解
2007-01-09 11:15:08 · update #2
//補上最後一行
ret[n3]='\0';
}
補上正解方便以後查詢
2007-01-09 11:16:06 · update #3
#include
void itoh(int n,char c[]); /* itoh 不傳回值 */
void main()
{
int n;
char c[50]; /* c 陣列要存字元 */
printf("請輸入數字 : ");
scanf("%d",&n);
itoh(n, c); /* 要呼叫函數 */
printf("%s\n",c); /* 加了比較好看而已 */
}
void itoh(int n,char c[]) /* itoh 不傳回值 */
{
int i=0,n2,n3;
char tmp; /* 交換字元用的 */
while(n>0)
{
n2 = n%16; /* c 陣列存數字時會被轉成 ASCII 碼 */
n = n/16;
if (n2<10) /* 馬上轉換馬上存 */
c[i] = n2+'0'; /* 10 以下直接換成 ASCII 碼的數字 */
else
c[i] = n2 + 55; /* 10 以上要換成 A (65) ~ F */
i++;
}
/* 轉換時個位數在最左邊 所以全部翻轉過來 */
for(n2 = i-1, n3 = 0; n3 <= n2; n3++, n2--)
{
tmp = c[n2];
c[n2] = c[n3];
c[n3] = tmp;
}
/* 你這樣做會把一半的資料洗掉
這一段我濃縮了, 如果要照原來的意思做 必須另有 整數陣列 d[50] 來儲存剛轉換的數值
for(n3=0,n2=i-1;n2>=0;n2--,n3++)
{
if(c[n2]==10)
c[n3]='a';
if(c[n2]==11) 因為 c[n2] 不會同時等於 所有的數 用 else if 比較省時間
c[n3]='b';
if(c[n2]==12)
c[n3]='c';
if(c[n2]==13)
c[n3]='d';
if(c[n2]==14)
c[n3]='e';
if(c[n2]==15)
c[n3]='f';
if(c[n2]<10)
c[n3]=c[n2];
}
*/
}
如果有問題, 請來函討論. 不然, 我可能會錯失你再補充的疑點.
2007-01-09 06:34:06 · answer #1 · answered by JJ 7 · 0⤊ 0⤋
函式的內容不要包在MAIN裡面,
MAIN{}
ITOH{}
ITOH沒有要傳回值的話,改成VOID ITOH
2007-01-09 04:13:21 · answer #2 · answered by poolqa 3 · 0⤊ 0⤋
基本上你少了
system("pause");
return 0;
這兩個
2007-01-07 21:52:53 · answer #3 · answered by ﹛﹛mimic-5258﹛﹛ 3 · 0⤊ 0⤋