第三章顺序结构程序设计3.1 基本语句(1)空语句:即只有一个分号的语句。
;(2)表达式语句:表达式后加一个分号。
如:m=0;x+y-10%2+2*x,10/2;无具体意义(3)函数调用语句:函数调用加一个分号。
如:printf(“this is a example.\n”);(4)控制语句:是C语言中完成一定控制功能的语句,有如表3.1所示。
表3.1条件控制语句循环控制语句辅助控制语句if语句switch语句while语句do-while语句for语句break中断语句continue继续语句goto转向语句return返回语句(5)复合语句。
将一组语句用花括号{}括起来就形成了复合语句,又称其为分程序。
如:{m=10;printf(“m=%d\n”,m);}3.2 赋值语句赋值表达式后加上一个分号。
例:利用赋值语句交换两变量的值。
设有定义:int a=12,b=5,t;则可以用如下两种方式交换变量a和b的值:⑴t=a;a=b;b=t;⑵a=a+b; b=a-b; a=a-b;3.3 数据的输入输出C语言无I/O语句,I/O操作由函数实现#include <stdio.h>一、格式输出函数•格式:printf(“格式控制串”,输出表)•功能:按指定格式向显示器输出数据•返值:正常,返回输出字节数;printf(“格式控制串”,输出表)•输出表:要输出的数据(可以没有,多个时以“,”分隔)•格式控制串:包含两种信息✓格式说明:%[修饰符]格式字符,用于指定输出格式✓普通字符或转义序列:原样输出d,i x,X o u c s e,E f g %%格式字符:十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e 和f 中较短一种百分号本身int a=567;printf ( “%d”,a );int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a );char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%%”);567ff 101567A ABC 5.677890e+02567.789000567.789%说明格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式例main(){ unsigned int u=65535;printf(”u=%d \n",u);}输出结果:u=-1int a=3,b=4;printf(“%d %d\n ”,a,b); printf(“a=%d , b=%d\n ”,a,b);例int a=3,b=4;printf(“%d %d \n”,a,b); printf(“a=%d , b=%d \n”,a,b);输出结果: 3 4a=3, b=411 11 11 11 11 11 11 1165535附加格式说明符(修饰符).n 对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功能m输出数据域宽,数据长度<m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填0在八进制和十六进制数前显示前导0,0x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l例int a=1234;float f=123.456;static char c[]=“Hello,world!”;printf(“a=%8d,%-8d;\n”,a,a);printf(“f=%10.2f,%-10.1f;\n”,f,f);printf(“c=%10.5s,%-10.3s;\n”,c,c);运行结果:例-例int a=1234;float f=123.456;printf (“%08d \n”,a );printf (“%010.2f \n”,f ); printf (“%0+8d \n”,a );printf (“0+10.2f \n”,f ); 例0 、+例int a=123;printf(“%o,%#o,%X,%#X \n”,a,a,a,a);例#例long a=65536;printf(“%d,%8ld \n”,a, a);例l 00 00 00 00 00 00 00 0100 00 00 00 00 00 00 00//00001234//0000123.46//000+1234//000+123.56//173,0173,7B,0X7B//0, •65536例int a=1234;float f=123.456;char ch=…a‟;printf(“%8d,%2d \n”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2e \n”,f,f,f,f,f);printf(“%3c \n”,ch);运行•1234,1234结果:123.456000,123.456000, •123.5,123.46,1.23e+02•a 运行结果:Hello,world!•Hello,world!•H ello Hello例m.n 例static char a[]=“Hello,world!”printf(“%s \n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);二、格式输入函数格式: scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束返值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);输入:10 ↵则a=10例scanf(“%x”,&a);输入:11 ↵则a=17附加格式说明符(修饰符)l 修饰符功能h m *用于d,o,x 前,指定输入为short 型整数用于d,o,x 前,指定输入为long 型整数用于e,f 前,指定输入为double 型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入19991015 ↵则1999⇒yy, 10 ⇒mm, 15 ⇒dd例scanf(“%3c%2c”,&c1,&c2);输入abcde ↵则‘a‟⇒c1, …d‟ ⇒c2例scanf(“%3d%*4d%f”,&k,&f);输入12345678765.43↵则123⇒k, 8765.43⇒f例scanf(“%2d •%*3d•%2d”,&a,&b);输入12•345•67↵则12⇒a, 67⇒b输入分隔符的指定–一般以空格、TAB或回车键作为分隔符–其它字符做分隔符:格式串中两个格式符间字符例scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%d\n”,a,b,c);输入123 123 123↵输出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);输入12:30:45↵则12 ⇒h, 30 ⇒m, 45 ⇒s例scanf(“%d,%d”,&a,&b)输入3,4 ↵则3⇒a, 4 ⇒b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入a=12,b=24,c=36 ↵说明:–用“%c”格式符时,空格和转义字符作为有效字符输入如scanf (“%c%c%c”,&c1,&c2,&c3);若输入 a bc ↵则a ⇒c1, •⇒c2, b ⇒c3输入数据时,遇以下情况认为该数据结束:遇空格、TAB 、或回车遇宽度结束遇非法输入如scanf(“%d%c%f”,&a,&b,&c);若输入1234a123o .26 ↵则1234 ⇒a, …a‟ ⇒b, 123 ⇒c输入函数留下的“垃圾”:例int x;char ch;scanf(“%d”,&x);ch=getchar();printf(“x=%d,ch=%d \n”,x,ch);执行:123↵输出:x=123,ch=10例int x;char ch;scanf(“%d”,&x);scanf(“%c”,&ch);printf(“x=%d,ch=%d \n”,x,ch);执行:123↵输出:x=123,ch=10解决方法:(1)用getchar()清除(2)用函数fflush(stdin)清除全部剩余内容(3) 用格式串中空格或“%*c ”来“吃掉”例int x;char ch;scanf(“%d”,&x);scanf(“ %c”,&ch);或scanf(“%*c%c”,&ch );格式:getchar( )功能:从键盘读一字符三、字符输入函数例/*ch3_4.c*/#include <stdio.h>main(){ int c;printf("Enter a character:");c=getchar();printf("%c--->hex%x\n",c,c);}运行结果:Enter a character:A A--->hex41字符输出函数格式: putchar( c )参数: c 为字符常量、变量或表达式功能:把字符c 输出到显示器上/*ch3_1.c*/#include <stdio.h>main(){ int c;char a;c=65; a='B';putchar(c); putchar('\n'); putchar(a);}运行结果:A B 例注:使用getchar()和putchar()须编译预处理#include <stdio.h>。