C语言中输入输出常用的格式化字符

avatar
作者
筋斗云
阅读量:0

目录

1、输出格式化

2、输入格式化

 3、常用转义字符

4、练习代码:


1、输出格式化

printf:将数据(字符串)输出(打印)到终端

用法: #include <stdio.h> printf("字符串");//字符串多个字符的序列,printf就会输出 字符串  由于使用printf可能会输出各种数据的值,而直接写入printf的输出 "字符串" 就会当作字符 原样输出, 所以在printf的 "字符串" 中 可以包含一种叫做格式化字符,表示其中要输出的类型值,之后再添加具体的值 格式化字符: %d: int类型 %hd:short类型 %ld:long类型 %u:unsigned int类型 %hu:unsigned short类型 %lu:unsigned long类型 %nd:n代表宽度。以n的宽度输出。不足补空格,大于n按实际长度输出。且右对齐 	    %3d		以宽度为3的十进制格式输出,如果数据长度<3,在左边补空格,否则按实际长度输出。 %c:char类型 %f:float类型 %lf:double类型 %.mf 		保留m位小数,遵循四舍五入 %n.mf 		数据宽度为n,右对齐,且保留m位小数,遵循四舍五入 %o:以八进制格式 %x:以十六进行格式 %s:字符串格式 %e:浮点数的指数表示  printf("字符串+格式化字符",格式化字符的值1,格式化字符的值2,格式化字符的值3,格式化字符的值4,.....)  注意:格式化字符和值要对应起来

2、输入格式化

 scanf:从终端由用户输入数据(从终端获取数据)

格式: #include <stdio.h> scanf("字符串+格式化字符",&变量1,&变量2,&变量3,....)  终端输入时,必须按照scanf "字符串"格式进行输入,通过格式化字符来确定输入的数据类型  注意:格式化字符与变量类型匹配

注意:

1、scanf中,%d、%f、%s 在输入时是不会获取'\n'、'\t'、空格

2、scanf中的%c 会获取'\n'、'\t'、空格 

 3、常用转义字符

\n 		换行,使光标跳转到当前行的下一行的开头, \r		回车,使光标跳转到当前行的开头位置; \b 		回退,使光标回退一格; \t 		水平制表符; \v              垂直制表符 \\ 		打印\; \" 		打印“ %% 		打印% \ddd    三个八进制数 '\72'代表:八进制数072 \xdd    两个16进制数 '\xab'代表: 十六进制0xab

4、练习代码:

//计算90的十六进制,打印结果 #include<stdio.h> int main(int argc, const char *argv[]) { 	int a=90,c,d; 	char b; 	b=90%16+55; 	c=90/16; 	//d=c/16; 	printf("90=0x%d%c\n",c,b); 	printf("\x5A\n");     printf("b=%#x\n",90);//十六进制打印90,添加#打印十六进制的标示符0x 	printf("\x35\n");//打印十六进制35的字符 	printf("\x41\n");//打印十六进制41的字符  	return 0; } 

输出结果:

90=0x5A Z b=0x5a 5 A 
//计算c=0xc0,打印十进制整数 #include<stdio.h> int main(int argc, const char *argv[]) { 	char c=0xc0; 	int b; 	b=16*12; 	printf("b=%d\n",b); 	printf("%d\n",c); 	//无符号字符型取值范围-128-127, 	//192超过取值范围,应该转换为二进制补码取反+1得到-64 	return 0; } 

输出

b=192 -64 
//实现两个数的交换 #include<stdio.h> int main(int argc, const char *argv[]) { 	int a,b,c; 	printf("请输入两个数:"); 	scanf("%d %d",&a,&b); 	c=a; 	a=b; 	b=c; 	printf("a=%d,b=%d\n",a,b); 	return 0; } 

输出

请输入两个数:34 45 a=45,b=34 
//看类型是不是转换为无符号类型 #include<stdio.h> int main(int argc, const char *argv[]) { 	unsigned int a=10; 	int b=-100; 	printf("%d",a+b); 	char c=192; 	printf("%d",b+c);//c超过char类型取值范围,值为-64, 	return 0; } 

输出

-90 -164
//设置a和b都是double类型的数据,且a=5.5,b=2.5,表达式(int)a+b/b的结果是多少 #include<stdio.h> int main(int argc, const char *argv[]) { 	double a,b; 	a=5.5; 	b=2.5; 	printf("%lf\n",(int)a+b/b);  	return 0; } 

输出

6.000000
//终端输入一个整形数据,判断是偶数还是奇数 #include<stdio.h> int main(int argc, const char *argv[]) { 	int a,b; 	printf("请输入一个数字:");     scanf("%d",&a); 	if (a%2==0 && a!=0) 		printf("%d是一个偶数\n",a); 	else if(a==0)  		printf("%d不是偶数也不是奇数\n",a); 	else 		printf("%d是奇数\n",a); 	return 0; } 
//设x=2.7,a=8,y=4.9,表达式x+a%3*(int)x+(int)(y/5)%3的结果 #include<stdio.h> int main(int argc, const char *argv[]) { 	float x=2.7,y=4.9; 	int a=8; 	printf("%f",x+a%3*(int)x+(int)(y/5)%3); 	return 0;
//a是整型变量,则执行表达式a=25/3%3的值是多少 #include<stdio.h> int main(int argc, const char *argv[]) { 	int a; 	a=25/3%3; 	printf("%d\n",a); 	return 0; } 
//输入一个数,看这个数是不是水仙花数 #include<stdio.h> int main(int argc, const char *argv[]) { 	int a,b,c,d; 	printf("请输入三个数:"); 	scanf("%d%d%d",&a,&b,&c); 	if ( a*a*a+b*b*b+c*c*c == a*100+b*10+c) 	{	 		printf("能构成水仙花数\n"); 		d=a*100+b*10+c; 		printf("%d",d);  	} 	else 		printf("不能构成水仙花数\n"); 	return 0; } 
//赋值运算 #include<stdio.h> int main(int argc, const char *argv[]) { 	int a=12; 	a*=2+3/2; 	printf("%d\n",a); 	return 0; }

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!