‘壹’ 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去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。