- 全国计算机等级考试《二级C语言程序设计》【教材精讲+真题解析】讲义与视频课程【45小时高清视频】
- 圣才电子书
- 1433字
- 2021-06-08 15:34:21
第3章 顺序结构[视频讲解]
在程序中按语句出现的顺序逐条执行的程序结构。
3.1 格式输出函数printf
视频二维码(扫码观看)
(1)格式:printf(格式控制, 参数1, 参数2, ……);
格式控制:用双引号括起来的字符串。
包括两种信息:
①格式说明:由“%”和转换字符组成。
②普通字符:即按照原样输出的字符。
printf("a=%d,b=%d", a,b);
printf("ok!");
(2)格式字符及其含义:
d:将参数以十进制数形式输出。
o:将参数以无正负号的八进制数形式输出。
x:将参数以无正负号的十六进制数形式输出。
u:将参数以无正负号的十进制数形式输出。
c:将参数以单个字符形式输出。
s:将参数以字符串形式输出,直到串结束符('\0')或者达到精度说明的长度。
e:将参数以浮点数指数形式输出,缺省值为5。
f:将参数以浮点数小数形式输出,缺省值为6。
g:使用%e或%f,哪个输出宽度稍短就使用哪个,不输出小数位后面无意义的0。
(3)格式说明归纳如图:
其中-、0、m、n、1都是可以缺省的。
通常按照数据本身的实际宽度输出,采用右对齐的形式。
①长整型%ld,短整型%hd。
②指定整数输入的宽度:%nd。
③指定实数输入的宽度:%n1.n2f。
④若想数据左对齐,“%”之后加“-”。
【例】整型数据的输出。
#include <stdio.h>
main()
{
int a=12;
long b=2269978;
printf("a=%d, a=%6d, a=%-6d, a=%06d\n", a, a, a, a);
printf("b=%8ld\n",b);
printf("%d, %o, %x, %u\n", a, a, a, a);
printf("\n");
}
输出结果为:
a=12, a= 12, a=12 , a=000012
b= 2269978
12, 14, c, 12
【例】字符的输出。
#include <stdio.h>
main()
{
char c='W';
int i=87;
printf("%c,%d\n",c,c);
printf("%d,%c\n",i,i);
printf("%-5c,%5c\n",c,c);
}
输出结果为:
W,87
87,W
W , W
【注意】
①printf的输出格式为自由格式,是否在两个数之间留逗号、空格或回车,完全取决于格式控制。
②在格式控制中,除了前面要求的输出格式,还可以包含任意的合法字符(包括汉字和转义符),这些字符输出时将“原样照印”。此外,还可利用\n(回车)、\r(回行但不回车)、\t(制表)、\a(响铃)等控制输出格式。如果要输出%符号,可以在格式控制中用%%表示,将输出一个%符号。
③尽量不要在输出语句中改变输出变量,会造成结果的不确定性。
int k=8;
printf("%d,%d\n",k,++k);
④输出数据时的宽度可以用参数来表示。
printf("%*d",m,i);
printf("%*.*f",m,n,f);
3.2 格式输入scanf函数
视频二维码(扫码观看)
格式:scanf(控制字符串,参数1,参数2,……);
控制字符串:可包含空格、制表符或换行。
包括两种信息:
①普通字符:输入与这些字符相同的字符。
②格式说明:由字符%开始,到转换字符结束。
scanf("%d%f%lf", &k, &a, &y);
scanf("k=%d\n", &k);
输入语句实例:
#include <stdio.h>
main()
{
int i,j;
float f1,f2;
char c1,c2;
short h;
long l;
scanf("%c%c",&c1,&c2);
scanf("%d%d",&i,&j);
scanf("%f%e",&f1,&f2)
scanf("%hd%ld",&h,&l);
}
【例1】终端输入两个整数给变量x和Y;然后输出x和y;在交换x和y中的值后,再输出x和y。验证两个变量中的数是否正确地进行了交换。
#include<stdio.h>
int main()
{
int x,y,t;
printf("Enter x&y:\n");
scanf("%d%d",&x,&y);
printf("x=%d y=%d\n",x,y);
t=x;
x=y;
y=t;
printf("x=%d y=%d\n",x,y);
}
输出结果:
Enter x&y:(由第5行的printf输出)
123 456<CR>(从键盘输入两个整数,<CR>代表按Enter键)
x=123 y=456(由第7行的printf输出)
x=456 y=123(由第11行的printf输出)
【例2】输入一个double类型的数,使该数保留小数点后两位,对第三位小数进行四舍五入处理,然后输出此数,以便验证处理是否正确。
#include <stdio.h>
void main()
{
double x;
printf("Enter x:\n");
scanf("%lf",&x);
printf("(1)x=%f\n",x);
x=x*100;
x=x+0.5;
x=(int)x;
x=x/100.0;
printf("(2)x=%f\n",x);
}
输出结果:
Enter x:(printf输出提示信息)
123.4567(从键盘输入123.4567,<CR>代表按Enter键)
(1)x=123.456700(输出原始数据)
(2)x=123.460000(输出对第三位小数进行四舍五入后的数据)
3.3 习题解析
1若a、b、c、d都是int型变量且初值为0,以下选项中不正确的赋值语句是( )
A.a=b=c=100;
B.d++;
C.c+b;
D.d=(c=22)-(b++);
2变量i、j、k已定义为int型并均有初值0,用以下语句进行输入时:
scanf("%d",&i);
scanf("%d",&j);
scanf("%d",&k);
从键盘输入:
12.3<CR>(<CR>代表Enter键)
则变量i、j、k的值分别是______、______、______。
3编写程序,输入两个整数:l500和350,求出它们的商和余数并进行输出。