史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2014-10-29, 10:19 PM   #4 (permalink)
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

看的我眼睛好痛 ... 有些乍看之下莫名其妙的地方 ...

可以的話建議上註解 ...

PHP 語法:
#include<stdio.h>  
#include<stdlib.h>  

 
int main(void){  
   
int num,i,j,x;  
   
char s[999]; 
   
//char str[999]; 這是多餘的 
// while(scanf("%d",&num)!=EOF) 這行 scanf 沒有輸入提示,會搞到後面很難除錯  
 
while(1)
   {  
    
printf("\nInput DEC Number: "); // 增加的輸入提示 
    
scanf("%d",&num)!=EOF
    
j=0// 把最下面的 j=0; 移上來比較容易了解作用: s 字串陣列 index 歸零    
    
while (num!=0)
      { 
       
i=num%16// 取餘數 
       
switch(i)
         {  
          case 
10:  
            
s[j]='A'
          break;  
          
          case 
11:  
           
s[j]='B';  
          break;  
          
          case 
12:  
            
s[j]='C';  
          break;  
          
          case 
13:  
            
s[j]='D'
          break;  
          
          case 
14:  
            
s[j]='E'
          break;    
          
          case 
15:  
            
s[j]='F'
          break;  
          
          default:  
              
// s[j]=i; 資料格式錯誤,必須要把數值格式轉換成 "文字格式"。 
               
s[j]=48+i// 這一行是以 ASCII 編碼直接做換算。 
         
}  
       
num=num/16//取商數,下一回的被除數  
       
j+=1
      } 
       
s[j]='\0'// 以據 C/C++ 語言的字串特性,給予的字串結尾符號。 
      
      // j-=1; 可以直接並到 接下來的 for loop 中。 

   
printf("Otput HEX Number:["); // 增加的輸出顯示   
   //for (i=j;i>=0;i--)
   //   { printf("%s",s[i]); } 這是錯的,要顯示出字元,要用 %c 不然會錯誤,編譯後出現錯誤當機應該也是這裡   
   
   
for (i=j-1;i>=0;i--)
      { 
printf("%c",s[i]); } 

   
printf("]");     // 增加的輸出顯示
   // j=0; 這行正確的作法,應該是要移到在上面的地方,需要明確的讓 s[j] 一開始規零的地方。 
   
printf("\n"); 
   } 

 return 
0;   

getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
向 getter 送花的會員:
a471 (2014-11-01)
感謝您發表一篇好文章
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 08:28 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1