39 阅读 0 评论 26 点赞
我是悠悠之家的博主 现代的小鸭子,最近开发中收集的这篇文章主要介绍C语言中%d,%s,%x,%f,%.100的意义,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
C语言的字符格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。
格式字符有d,o,x,u,c,s,f,e,g等, 如:
%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,或输出字符串的地址。
%u以十进制数输出unsigned型数据(无符号数)。注意:%d与%u有无符号的数值范围,也就是极限的值,不然数值打印出来会有误。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,默认情况下保留小数点6位。
%.100f用来输出实数,保留小数点100位。
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
c语言中没有表示二进制的字符,但是你可以根据十进制、八进制或者十六进制转换一下。
可以利用短除法,将十进制转变成二进制,我们一般的思路是这样的,下面给出一个例子:
把20转换成二进制:
20/2=10........余数为0 最低位
10/2=5..........余数为0
5/2=2............余数为1
2/2=1............余数为0
1/2=0............余数为1 最高位
则20换成二进制后是10100
利用短除法可以轻松地将十进制转换成二进制,在编程中是这样用的,以下给出代码:
扩展资料:
在做数据读写传输时最常用也最直观的莫过于十进制数,但是在不同应用场合、存储的方便在C语言开发时候也常采用二进制、八进制和十六进制存储数据。
进制是一种计数机制,对于任何一种进制,如:xx进制,就表示某一位置上的数运算时逢 xx 进一位。例如:时间60′60′,分钟就会加 1,这就是六十进制。计算机中常用的进制有二进制、八进制、十进制、十六进制。
下面给出一个使用C语言编程实现任意进制数(2-16进制)转换为其他任意进制数(2-16进制)的小程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int TenNum(char a[],int B) //将输入的数字转换成10进制数
void Numchange(int m, int B) //将转换好了的10进制数转换为所需进制数
int TenNum(char a[], int B)
{
int len, i, num
int sum = 0
len = strlen(a) //求得字符串长度
for (i = 0i <leni++)
{
if (a[i] >= '0' &&a[i] <= '9')
num = a[i] - '0'
else if (a[i] >= 'A' &&a[i] <= 'F')
num = a[i] - 'A' + 10
sum = sum * B + num
}
return sum
}
void Numchange(int m, int B)
{
int n
if (m)
{
Numchange(m / B, B)
n = m % B
if (n <10)
printf("%d", n) //小于10直接输出
else
printf("%c", n + 55) //大于10转换成字符输出
}
}
int main()
{
int B, b
char a[20]
printf("请输入待转换数的进制(2-16):")
do {
scanf_s("%d", &B)
} while (B <2 &&B >16)
printf("请输入待转换数:")
getchar()
gets_s(a) //将输入的n进制数存放在数组a中
int m = TenNum(a, B) //将输入的数字转换成十进制数
printf("请输入需要转成几进制数(2-16):")
do {
scanf_s("%d", &b)
} while (B <2 &&B >16)
printf("%d进制数%s转换为%d进制数的结果为:",B,a,b)
Numchange(m, b) //将十进制数转换为所需进制数
printf("\n")
system("pause")
return 0
}