C语言程序设计谭浩强版 六

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、复合语句:把多个语句用括号{}括起来组成的一个语句称复合语句。

      例如:

<span style="font-size:18px;">{ 
    x=y+z; 
    a=b+c; 
    printf(“%d%d”,x,a); 
}</span>

      复合语句内的各条语句都必须以分号“;”结尾,在括号“}”外不能加分号。

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、注意赋值表达式和赋值语句的区别。



4.3  数据输入输出的概念及在C语言中的实现


在C语言中,所有的数据输入/输出都是由库函数完成的。 因此都是函数语句。

在使用C语言库函数时,要用预编译命令#include< stdio.h >,将有关“头文件”包括到源文件中。


4.4  字符数据的输入输出


阿斯蒂芬我们先介绍C标准I/O函数库中最简单的,也是最容易理解的字符

输入输出函数putchar()和getchar(),再介绍格式输入输出函数printf()和scanf()函数


4.4.1、putchar函数(字符输出函数)

putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。

其一般形式为: putchar(字符变量)

例如: putchar('A'); (输出大写字母A)

            putchar(x); (输出字符变量x的值) 

                 putchar(‘\101’); (也是输出字符A)

            putchar('\n'); (换行) 注意:对控制字符则执行控制功能,不在屏幕上显示。


下面我们来举一个例子:

例4.1  输出单个字符

#include<stdio.h>
/* 输出单个字符 */
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);
}

运行结果为:Book   Bo
            
                      ok


4.4.2 getchar函数(键盘输入函数)

getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar();

通常把输入的字符赋予一个字符变量,构成赋值语句,

如:char c; c=getchar();

例4.2  输入单个字符。

#include<stdio.h>
/* 输入单个字符 */
int main(void)
{
	char c;
	printf("input a character\n");
	c = getchar();
	putchar(c);
	putchar('\n');
}

使用getchar函数还应注意几个问题:

1)、 getchar函数只能接受单个字符,输入数字也按字符处理。

        输入多于一个字符时,只接收第一个字符。

2) 、使用本函数前必须包含文件“stdio.h”。


4.5  格式化输入与输出


4.5.1  printf函数(格式输出函数)

作用是向终端输出若干个任意类型的数据

1、printf函数调用的一般形式为:printf(“格式控制字符串”,输出表列)


例4.3:

#include<stdio.h>
/* 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<stdio.h>
/* 格式控制输出 */
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函数(格式输入函数)


1、scanf函数的一般形式:scanf(“格式控制字符串”,地址表列);


格式控制字符串:与printf的一样

地址列表:可以是变量的地址,或者字符串的首地址。

例4.9

#include<stdio.h>
/* 用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<stdio.h>
#include<math.h>
/* 输入三角形的三边长,求三角形面积 */
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<stdio.h>
/* 从键盘输入一个大写字母,要求改用小写字母输出 */
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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值