1、第四章第四章 最简单的最简单的C C程序设计程序设计 C C 程序最基本的成分是语句程序最基本的成分是语句 目前我们已掌握的语句:目前我们已掌握的语句: 变量说明语句变量说明语句: : intint a,b,c; a,b,c; 表达式语句:表达式语句: x+y;x+y; 特别地:特别地: a=5;a=5; 赋值语句赋值语句 可以编写简单程序如:可以编写简单程序如: main()main() int int x,y; x,y; x=5; x=5; y=2 y=2* *x x* *x+3x+3* *x-1;x-1; 该程序语法上完整,但还缺少输出。该程序语法上完整,但还缺少输出。 数据的输出数据的
2、输出 用输出函数实现用输出函数实现, ,其中的两种输出函数:其中的两种输出函数: 1.putchar 1.putchar 函数函数 (字符输出函数)(字符输出函数) 用于输出一个字符。用于输出一个字符。 如如: : putchar (a); putchar (100); char c=b; putchar (c); 例例:输出单词:输出单词BoyBoy的完整程序:的完整程序: #include “stdio.h” 注意该语句的作用注意该语句的作用 main() char a, b, c; a=B; b=o; c=y; putchar (a); putchar (b); putchar (c);
3、 2. printf2. printf函数函数(格式输出函数)(格式输出函数) 任意类型、任意格式、任意个数。任意类型、任意格式、任意个数。 例如:例如: intint a=100,b=56; a=100,b=56; printfprintf( (“a“a=%d,b=%d”=%d,b=%d”, ,a,ba,b);); 普通字符普通字符 格式说明格式说明 格式控制格式控制 输出表列输出表列 输出结果:输出结果:a=100,b=56a=100,b=56“%” “%” 后的字符称格式字符,不同格式字符对应不同的数据类型。后的字符称格式字符,不同格式字符对应不同的数据类型。 d d格式符:格式符:按整
4、数格式输出按整数格式输出 几种用法:几种用法: %d%d 不指定宽度,按实际宽度输出不指定宽度,按实际宽度输出 %md%md 按指定宽度输出,按指定宽度输出,m m为宽度为宽度 %ld%ld 用于输出长整型数用于输出长整型数 例:例: int int a=125,b=453;a=125,b=453; long c=65535; long c=65535; printf printf(“a=%d,b=%5d,c=%ld”,a,b,c);(“a=%d,b=%5d,c=%ld”,a,b,c); 输出结果:输出结果: a=125,b= 453,c=65535a=125,b= 453,c=65535 %
5、ld%ld也可以按指定宽度输出:也可以按指定宽度输出: printfprintf(“c=%8ld”,c);(“c=%8ld”,c); 输出结果:输出结果:c = 65535c = 65535注意:格式字符的类型要与对应的输出对象注意:格式字符的类型要与对应的输出对象的类型一致。的类型一致。 c c格式符:格式符:用于输出字符用于输出字符 char c=A;char c=A; printf printf(“c=%c,%c”,c,B);(“c=%c,%c”,c,B); 输出结果输出结果:c=A,Bc=A,B 输出对象既可以是字符变量、字符常量,还输出对象既可以是字符变量、字符常量,还可以是整型表达
6、式。可以是整型表达式。 如:如: int int a=100;a=100; char b=A; char b=A; printf printf(“n%d,%c”,a,a);(“n%d,%c”,a,a); printf printf(“n%c,%d”,b,b);(“n%c,%d”,b,b); 输出结果:输出结果: 100,100,d d A,65 A,65 s s格式符:格式符:用于输出字符串用于输出字符串 % %s s 不指定宽度不指定宽度 % %-ms-ms 指定宽度,左靠齐指定宽度,左靠齐 %ms%ms 指定宽度,右靠齐指定宽度,右靠齐 % %m.nsm.ns 指定宽度指定宽度m m,只取
7、左端,只取左端n n个字符,个字符, 右靠齐右靠齐 % %-m.ns-m.ns 指定宽度指定宽度m m,只取左端,只取左端n n个字符,个字符, 左靠齐左靠齐例:例: printf(“1:%s”,”abcdprintf(“1:%s”,”abcd”);”); printf(“2:%8s”,”abcdprintf(“2:%8s”,”abcd”);”); printf(“3:%-8s”,”abcd printf(“3:%-8s”,”abcd”);”); printf(“4:%8.3s”,”abcdprintf(“4:%8.3s”,”abcd”);”); printf(“5:%-8.3s”,”abcd
8、 printf(“5:%-8.3s”,”abcd”);”);1:abcd2: abcd3:abcd 4: abc5:abc 1:abcd2: abcd3:abcd 4: abc5:abc f f格式符:格式符:按小数形式输出实数按小数形式输出实数 %f %f 由系统指定宽度(由系统指定宽度(6 6位小数)位小数) % %m.nf m.nf 指定宽度指定宽度m m,小数位数,小数位数n n,右靠齐,右靠齐 %-%-m.nf m.nf 指定宽度指定宽度m m,小数位数,小数位数n n,左靠齐,左靠齐 注意:宽度包括符号和小数点注意:宽度包括符号和小数点。 例:例: float a=3.141592
9、654,b=14.326795,float a=3.141592654,b=14.326795, c=-125.2468; c=-125.2468; p r i n t f ( “ n ap r i n t f ( “ n a = % f , b = % 8 . 3 f , c = % -= % f , b = % 8 . 3 f , c = % -10.2f”,a,b,c);10.2f”,a,b,c); 输出结果:输出结果: a=3.141592,b= 14.326,c=-125.24a=3.141592,b= 14.326,c=-125.24 程序设计例:程序设计例: 编写程序计算如图中的
10、电流编写程序计算如图中的电流I I. 假设假设 U=220,R1=30,R2=60,R3=45U=220,R1=30,R2=60,R3=45UIR1R2R3算法设计算法设计: I=U/R1+U/R2+U/R3I=U/R1+U/R2+U/R3程序设计:程序设计: main()main() I=U/R1+U/R2+U/R3;I=U/R1+U/R2+U/R3;int int U=220,R1=30,R2=60,R3=45;U=220,R1=30,R2=60,R3=45;float I;float I;printfprintf(“n (“n I=%f”,I);I=%f”,I); 正确的程序:正确的程序
11、: main()main() int int U=220,R1=30,R2=60,R3=45; U=220,R1=30,R2=60,R3=45; float I; float I; I= I=(float)(float)U/R1+U/R1+(float)(float)U/R2+U/R2+(float)(float)U/R3;U/R3; printf(“n printf(“n I=%f”,I); I=%f”,I); 考虑通用考虑通用: main()main() int int U,R1,R2,R3; U,R1,R2,R3; float I; float I; 输入输入 U,R1,R2,R3U,R
12、1,R2,R3 I=(float)U/R1+(float)U/R2+(float)U/R3; I=(float)U/R1+(float)U/R2+(float)U/R3; printf(“n printf(“n I=%f”,I); I=%f”,I); 数据的输入数据的输入 getchargetchar函数(函数(字符输入字符输入) #include “stdio.h#include “stdio.h” main() main() char c; char c; c=getchar c=getchar(); (); 等待键盘输入等待键盘输入 putchar(cputchar(c);); scan
13、fscanf 函数函数(格式输入) 与与printfprintf函数相反。函数相反。 用于输入若干任意类型的数据。用于输入若干任意类型的数据。 scanfscanf( (“%d%d%d”“%d%d%d”, ,&a,&b,&c&a,&b,&c);); 格式控制格式控制 地址列表地址列表 scanfscanf( (“%d%d%d”“%d%d%d”, ,&a,&b,&c&a,&b,&c);); 执行此函数时,等待从键盘输入三个整执行此函数时,等待从键盘输入三个整数给数给a,b,ca,b,c 若从键盘输入若从键盘输入 3 5 83 5 8 则系统即从键盘缓冲区取出这三个数分则系统即从键盘缓冲区取出这三
14、个数分别赋给别赋给a,b,ca,b,c 注意与注意与printfprintf的区别,注意格式的匹配的区别,注意格式的匹配如:如: scanf(“%3d%2d%4d”,&a,&b,&c);scanf(“%3d%2d%4d”,&a,&b,&c); 若从键盘输入若从键盘输入123456789123456789 a=123,b=45,c=6789 a=123,b=45,c=6789 若想使若想使a=12,b=5,c=100a=12,b=5,c=100 则键盘输入应为:则键盘输入应为: 12 5 10012 5 100 方便的输入格式一般不方便的输入格式一般不 指定宽度,指定宽度, 如:如: scanf
15、(“%d%d%d”,&a,&b,&cscanf(“%d%d%d”,&a,&b,&c);); 在键盘输入时,用分隔符把每个数据隔开,在键盘输入时,用分隔符把每个数据隔开,标准的分隔符是空格。标准的分隔符是空格。 如:如:123 150 23123 150 23 若想用逗号作分隔符,则:若想用逗号作分隔符,则: scanf(“%dscanf(“%d,%d%d,%d”,&a,&b,&c);%d”,&a,&b,&c); 不要随便使用普通字符,如使用:不要随便使用普通字符,如使用: scanf(“ascanf(“a=%d=%d,b=%d c=%d”,&a,&b,&c)b=%d c=%d”,&a,&b,&
16、c) 对应数据输入:对应数据输入: a=123,b=150,c=23a=123,b=150,c=23 前面的欧姆定律: main() main() int int U,R1,R2,R3; U,R1,R2,R3; float I; float I; scanf(“%d%d%d%d”,&U,&R1,&R2,&R3);scanf(“%d%d%d%d”,&U,&R1,&R2,&R3); I=(float)U/R1+(float)U/R2+(float)U/R3; I=(float)U/R1+(float)U/R2+(float)U/R3; printf(“n printf(“n I=%f”,I); I=%f”,I);