『壹』 c語言:從鍵盤輸入一個十進制正整數,求各位數字之和,咋寫
代碼文本:
#include "stdio.h"
char myf(int n){
return n>9 ? n%10+myf(n/10) : n;
}
int main(int argc,char *argv[]){
int x;
printf("Enter x(int x>0)... x=");
if(scanf("%d",&x)==1 && x>0)
printf("The result is %d ",myf(x));
else
printf("Input error, exit... ");
return 0;
}
『貳』 C語言編程,輸入十進制數輸出十六進制和八進制
可以通過下面的公式解決
#include<stdio.h>
const int maxn = 128;
const int index8 = 8;
const int index16 =16;
int main()
{int Array8[maxn];
int Array16[maxn];
int n, cot8 = 0;
scanf("%d", &n);
int m = n, cot16 = 0;
while(n) {Array8[cot8++] = n % index8;
n /= index8;}
while(m) {Array16[cot16++] = m % index16;
m /= index16;}
int i;
for(i = cot8 - 1; i >= 0; i--)
printf("%d", Array8[i]);
puts("");
for(i = cot16 - 1; i >= 0; i--)
(2)c語言輸入幾個十進制數字擴展閱讀:
十進制轉十六進制的具體方法:
對於整數部分,用被除數反復除以16,除第一次外,每次除以16均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。
對於小數部分,採用連續乘以基數16,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」。
10進制數轉換成十六進制數,這是一個連續除以16的過程:把要轉換的數,除以16,得到商和余數,將商繼續除以16,直到商為0。最後將所有餘數倒序排列,得到數就是轉換結果。
『叄』 C語言:鍵盤輸入一個十進制整數,輸出其對應的二進制、三進制、四進制……十六進制數值。
#defineN"0123456789ABCDEF"
#include<stdio.h>
voidchange(intx,intn,char*p){
chartmp[100];//臨時存放轉換數
inti,total=0;
while(x){
tmp[total++]=N[x%n];
x/=n;
}
for(i=total-1;i>=0;i--){
p[total-1-i]=tmp[i];
}
if(total==0){
p[0]='0';
p[1]=0;
}
else
p[total-1-i]=0;
}
intmain()
{
chars[100];//用於存放轉換的進制的數
inti,x;
printf("把一個數轉換成234...16進制數 ");
scanf("%d",&x);
for(i=2;i<=16;i++){
change(x,i,s);
printf("轉換成%d進制是:%s ",i,s);
}
}
『肆』 【c語言】輸入一個十進制數,轉換成對應的八進制數和十六進制數並輸出
#include<stdio.h>
voiddec2n(intx,intn)
{inta[33],i;
for(i=0;x;x/=n)a[i++]=x%n;
for(i--;i>=0;i--)
if(a[i]<10)printf("%d",a[i]);
elseprintf("%c",a[i]+55);
printf("
");
}
intmain()
{intx;
scanf("%d",&x);
printf("%d的八進制:",x);dec2n(x,8);
printf("%d的十六進制:",x);dec2n(x,16);
return0;
}
『伍』 用C語言編寫輸入2個十進制數,輸出是一個壓縮的BCD碼(如輸入64,輸出 0110 0100 )
#include<stdio.h>
voidd2b(unsignedn,unsignedp)
{
if(p)
{
d2b(n/2,p-1);
printf("%d",n%2);
}
}
voidfunc(unsignedn)
{
if(n>9)
func(n/10);
d2b(n%10,4);
printf("");
}
intmain()
{
unsignedn;
scanf("%u",&n);
func(n);
return0;
}
『陸』 用C語言編寫輸入一個十進制數,輸出相應的八進制數和十六進制數。例如:輸入31,輸出37和1F
#include <iostream> #include <iomanip> using namespace std; int main() { int a; cin>>dec>>a; cout<<oct<<a<<" "<<hex<<a; return 0; } 我用C-FREE5.0測試過的
『柒』 C語言 輸入一個十進制數,要求分別定義不同的函數將十進制轉換成八進制和十六進制,並輸出
你的問題還真不好說,大方向沒問題,細節上得加強。為了盡可能簡單,我用了全局變數,除非必要,濫用它是一個非常不好的習慣。
自己要學會不使用全局變數,怎麼實現相同的功能。另外了解一下使用%o,%x,%a這幾種格式時printf的輸出結果
int a[100] = { 0 }; // 轉換後的值
int flag = 0; // 符號
// 把x轉換為base進制數
int convert(int x, int base)
{
int i = 0;
flag = 0;
if (x < 0)
{
flag = 1;
x = -x; // 確保是非負整數
}
if (base <= 0)
{
printf("進制輸入錯誤\n");
return 0;
}
while (x)
{
a[i++] = x % base;
x /= base;
}
i--;
return i; // 返回位數
}
int eight(int x)
{
return convert(x, 8);
}
int sixteen(int x)
{
return convert(x, 16);
}
/* 非常簡陋,只處理16進制以下的情形 */
void printf_num(int i)
{
printf("\n");
if (flag)
printf("-"); // 負號
while (i >= 0)
{
if (a[i] > 9 && a[i] < 16)
printf("%c", a[i] + 55); // 輸出A-F
else
printf("%d", a[i]); // 輸出0-9
i--;
}
}
int main() {
int x, i;
printf("請輸入一個十進制整數:");
scanf("%d", &x);
i = eight(x);
printf_num(i);
i = sixteen(x);
printf_num(i);
return 0;
}
『捌』 用C語言編程,輸入一個十進制正整數,輸出其對應的十六進制整數。
#include<stdio.h>
int main()
{
int a,*p;
p=&a;
scanf("%d",p);
printf("%x ",*p);
return 0;
}
(8)c語言輸入幾個十進制數字擴展閱讀:
十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。
十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。