第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都是可以缺省的。

说明: aa

通常按照数据本身的实际宽度输出,采用右对齐的形式。

长整型%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,求出它们的商和余数并进行输出。