C语言关于输入、输出、位运算
一、printf()和scanf()
输出函数printf()
语法:printf(“”[, ]);
说明:格式字符串包含两个信息: 一、正常字符,?? 按原样输出。二、格式声明, 由“%”和格式字符组成,用来指定输出数据的格式。
注意:
(1)输出表列可以是常量、变量和表达式,其值按照格式字符指定的格式输出。
(2)输出表列的项目个数必须与格式字符串中的格式声明符的个数一致,且顺序一一对应。
printf(“aBC12F ”); //正常字符,原样输出。
单独输出字符串不需要格式声明符。
格式声明符的格式:
???? %[+][-]0m[.n][输出精度]格式声明符与输出表列配合使用
1.格式字符种类
c单个字符??d十进制有符号整数 e,E以“科学记数法”的形式输出十进制的浮点数 如:2.451e+02f?输出十进制浮点数,默认保留6位小数g,G选用e或f格式中较短的一个输出十进制浮点数,不输出无效零o输出无符号八进制整数s输出字符串u?输出无符号十进制整数 x, X输出无符号十六进制整数
int a=100;float b=123.255;printf("a=%d ",a); // a=100
printf(“b=%f ”,b); // b=123.255***, *任意数字
2.m[.n]指定输出长度:
(1)没有指定输出长度,按实际长度输出
(2)m小于实际数据的长度,按照实际数据位数输出
(3)m大于实际数据的长度,则右对齐,左边补空格
当输出为实数时,m表示输出总长度(整数位数+小数点+小数位数),n表示小数位数。
float c=12.345
printf(“%7.3f\n”,c); //□12.345
□表示空格
3.+和-
默认为结果右对齐,不足的在左边补空格
-:结果左对齐,右边补空格
+:输出符号(正号或负号)
4.L
如果格式字符为e、f、g,则指定L为double,否则为float
如果格式字符为d、x、o、u,则指定L为long,否则为int
5.0(零)
指定左边空位填充0
int a=123;
printf("%09d\n",a);//000000123
历届试题
【2007-4】(19)有以下程序,其中%u表示按无符号整数输出(B )main(){unsigned int x=0xFFFF;???????? ?printf(“%u\n” , x);}程序运行后的输出结果是A)-1????? B)65535???? C)32767?? D)0xFFFF
【2008-4】(16)有以下程序段 (D)
char? ch;?? int? k; ch='a';?????? k=12; printf("%c,%d,",ch,ch,k);? printf("k=%d\n",k); 已知字符 a 的 ASCll 十进制代码为 97,则执行上述程序段后输出结果是 A) 因变量类型与格式描述符的类型不匹配输出无定值 B) 输出项与格式描述符个数不符,输出为零值或不定值 C) a,97,12k=12
D) a,97,k=12
【2008-4】(8)若有定义:int k;,以下程序段的输出结果是【8】 for(k=2;k<6;k++,k++)? printf(“##%d”,k);
【2008-9】 7、 若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=9请完成输出语句〞printf(〞___________________〞,a,b);
【2008-9】 20、有以下程序段(B)int a,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c,c=a;printf(〞a=%d b=%d c=%d\n〞,a,b,c);程序的输出结果是A) a=10 b=50 c=10 B) a=10 b=50 c=30C)a=10 b=30 c=10 D)a=50 b=30 c=50
【2009-3】 (15)程序段:int x=12;? double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是(A)A)123.141593?? B)12?? 3.141593??
C)12,3.141593??? D)123.141593
【2009-9】(13)阅读以下程序(A) #include main() { int case; float p