本文共 4101 字,大约阅读时间需要 13 分钟。
4.1 C语言概述
C程序的结构:
C语句可分为以下五类:
1) 表达式语句
2) 函数调用语句
3) 控制语句
4) 复合语句
5) 空语句
1、表达式语句:表达式语句由表达式加上分号“;”组成。
例如:x = y + z;赋值语句;
y + z;加法运算语句,但计算结果不能保留,无实际意义;
i ++;自增1语句,i 值增1。
2、函数调用语句:由函数名、实际参数加上分号“;”组成。
例如: printf("C Program");调用库函数,输出字符串。
3、控制语句:控制语句用于控制程序的流程, 以实现程序的各种结构方式。
它们由特定的语句定义符组成。C语言有九种控制语句。
可分成以下三类:
1) 条件判断语句:if语句、switch语句;
2) 循环执行语句:do while语句、while语句、for语句;
3) 转向语句:break语句、goto语句、continue语句、return语句。
4、复合语句:把多个语句用括号{}括起来组成的一个语句称复合语句。
例如:
{ x=y+z; a=b+c; printf(“%d%d”,x,a); }
复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。
5、空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。
在程序中空语句可用来作空循环体。
例如:while(getchar()!='\n')
本语句的功能是,只要从键盘输入的字符不是回车则重新输入。
4.2 赋值语句
赋值语句是由赋值表达式再加上分号构成的表达式语句。
1、由于在赋值符“=”右边的表达式也可以又是一个赋值表达式,
因此,下述形式是成立的,从而形成嵌套的情形。
变量 = (变量 = 表达式);
例如: a=b=c=d=e=5;
2、注意在变量说明中给变量赋初值和赋值语句的区别。
3、在变量说明中,不允许连续给多个变量赋初值。如:int a=b=c=5是错误的,
而赋值语句允许连续赋值。如a = b = c =5;
4、注意赋值表达式和赋值语句的区别。
#include/* 输出单个字符 */int main(void){ char a = 'B',b = 'o',c = 'k'; putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t'); putchar(a);putchar(b); putchar('\n'); putchar(b);putchar(c);}
#include/* 输入单个字符 */int main(void){ char c; printf("input a character\n"); c = getchar(); putchar(c); putchar('\n');}
例4.3:
#include/* printf函数,格式输出函数 */int main(void){ int a = 88,b = 89; printf("%d %d\n",a,b); printf("%c,%c\n",a,b); printf("a = %d,b = %d\n",a,b);}
2、格式字符串
格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型 (其中[]括号内为可选项)
1) 、类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:
2) 、标志:标志字符为-、+、#、空格四种,其意义下表所示:
3) 、输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输
出,若实际位数少于定义的宽度则补以空格或0。
4) 、精度:精度格式符以“.”开头,后跟十进制整数。
本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;
若实际位数大于所定义的精度数,则截去超过的部分。
5)、长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
例4.4:
#include输出结果:/* 格式控制输出 */int main(void){ int a = 15 ; float b = 123.1234567; double c = 12345678.1234567; char d = 'p'; printf("a = %d,%5d,%o,%x\n",a,a,a,a); printf("b = %f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c = %lf,%f,%8.4lf\n",c,c,c); printf("d = %c,%8c\n",d,d);}
第1个printf 以四种格式输出整型变量a的值,
其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。
%o表示按照8进制整型格式,%x表示按照16进制整型格式,都是输出a
结果为: 15, 15,17,f
第2个printf 以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。
“%5.4lf ”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。
4.5.2 scanf函数(格式输入函数)
格式控制字符串:与printf的一样
地址列表:可以是变量的地址,或者字符串的首地址。
例4.9
#include/* 用scanf函数输入数据 */int main(void){ int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d,%d,%d\n",a,b,c);}
&是地址运算符,&a是指a在内存中的地址
2、格式说明
大多与printf函数中相同,一般我是不会用他复杂的格式输出输入的,所以这里先不介绍了,
如果后期遇到复杂的输入输出应用的时候再来补充。
3、使用scanf函数时应该注意的问题
1)、scanf函数中的“格式控制”后面应该是变量的地址,而不是变量名。
2)、如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在
对应的位置也应该输入与这些字符相同的字符。
4.6 顺序结构程序设计举例
例4.10 输入三角形的三边长,求三角形面积
设面积为S,边长分别为a,b,c,根据海伦公式有
#include#include /* 输入三角形的三边长,求三角形面积 */int main(void){ float a,b,c,s,area; scanf("%f\n%f\n%f",&a,&b,&c); s = 1.0/2 * (a + b + c); area = sqrt(s * (s - a)*(s - b)*(s - c)); printf("a = %7.2f, b = %7.2f c = %7.2f s = %7.2f\n",a,b,c,s); printf("area = %7.2f\n",area);}
结果为:输入3 回车4回车5,得到面积为6
因为本题目中运用到了开平方函数sqrt,所以我们需要包含头文件math.h
例4.11 从键盘输入一个大写字母,要求改用小写字母输出
#include/* 从键盘输入一个大写字母,要求改用小写字母输出 */int main(void){ char c1,c2; c1 = getchar(); printf("%c,%d\n",c1,c1); c2 = c1 + 32; printf("%c,%d\n",c2,c2);}
结果为:输入A回车, A,65 a,97