1 程序设计入门
1.1 C程序的结构与书写格式
【例1.1】在屏幕上显示出“This is a C program!”。
要完成这样的一个程序,需要进入程序开发环境编写与调试程序,输入以下代码: #include
程序从main()开始执行,printf(“This is a C program!\\n”);语句输出结果。运行结果如图1.1所示。
图1.1 运行结果
例1.1尽管是一个简单的C程序,但是基本体现了C程序的结构。该程序包括三部分:预处理命令部分、函数定义部分和注释部分。
(1)以#开始的语句是预处理命令。#include
(2)C程序必须且只能包含一个主函数main(),花括号{}括起来的部分是函数体。 (3)符号//后的内容是注释部分,用于说明程序或语句的功能,目的是便于阅读程序。 每条语句以分号“;”结束。C语言中区分大小写字母,如main、printf等只能小写。C程序的源文件的名字由用户选定,但扩展名为C ,C++源文件的扩展名为CPP。
1.2 C程序上机引导
C-Free是一款基于Windows的C/C++集成开发软件,利用本软件,可以方便地编辑、调试、运行程序。
【例1.2】编写程序求两个整数之和,并输出结果。 #include
启动C-Free,单击工具栏上的“新建文件”按钮,在编辑区输入、编辑程序后如图1.2所示。
1
图1.2 C-Free开发环境
单击工具栏上的“运行”按钮,或按功能键F5,或者选择“构建|构建并运行”菜单命令,系统对源程序进行语法检查并翻译成机器代码,连接、装配成可执行文件。如果程序有错,则信息栏将显示错误信息,双击错误信息,编辑区将高亮显示错误的位置,直到全部错误修改完毕。构建并运行过程如图1.3所示。
图1.3运行过程
C-Free下的“运行”命令其执行过程由编译源程序、连接目标程序及库文件、运行程序等步骤组成。编译程序完成语法检查并产生目标代码;连接程序将相关的目标代码连接起来产生可执行文件,其过程如图1.4所示。
2
开始 编辑 源程序 否 编译成功 目标程序 连接 可执行程序 否 运行成功 是 运行成功
图1.4 C程序运行过程图
1.3 格式化输入输出
1.3.1 数据的输入输出
【例1.3】阅读并运行程序,分析结果了解输入输出格式的使用。 #include
{ int a,b,sum; // 定义变量 scanf(\ // 通过scanf输入函数给变量赋值 sum=a+b; // 两个数的加法 printf(\ // 把加法的结果输出到屏幕上 }
程序功能是从键盘输入两个整数,输出两数之和。scanf(\语句完成输入,参数“\%d\&a, &b”表示以十进制形式从键盘输入两个数存放在变量a、b内;printf(\语句输出计算结果,参数“\”表示在显示在显示屏上输出字符“a+b=”,再跟上sum中的内容。
1.3.2 格式化输出函数printf()
printf()函数的功能是按照给定的格式输出数据,一般形式为:
printf(\输出格式字符串\输出项);
其中:输出格式字符串决定了数据的输出格式,“%”与后面的格式符,规定了对应输
3
出项的输出格式,其他符号按原样输出。
例如:若a=34,b=12,sum是a与b的和,则语句printf(\a+b=%d\ sum);的输出结果为a+b=46。
其中“%d”是输出格式,对应输出项sum,字符串“a+b=”是非格式符,按原样输出。 printf()函数常用格式符如表1-1所示。
表1-1 printf常用格式符
格式符 d c s f
说 明 以带符号的十进制形式输出整数 以字符形式输出,只输出一个字符 输出字符串 范 例 printf(\printf(\printf (\显 示 -46,56(+不输出) AA Hello! 46.000000 以小数形式输出单、双精度数,默认6位小数 printf(“%f”,46); (1)%d按整型数据的实际位数输出。若要控制输出数据的宽度,可以在d前加一个数字,如printf(“], ]”, a, b);,若a=123,b=121345,则输出结果为□□123,121345。数据a不足5位,左边用空格补足5位;数据b多于5位,按实际位数输出。
(2)%c输出一个字符。若以字符形式输出一个整数,则输出的是该整数对应的字符。如printf(\输出结果为A, A, B。'A'+1表示A的下一个字母。
(3)%s输出一个字符串。如printf(“%s”,“HELLO”);输出结果为HELLO。 (4)%f以实数形式输出(带小数点)。如a=12.34,则printf(\输出结果为12.340000, 12.340。其中%.3f表示保留3位小数。
注意:
printf()函数中输出格式符与输出项的个数相同,类型一致,如下所示: printf(“…%d …%f …%c …”, .a, . b, . c);
【例1.4】阅读并运行程序,分析结果理解%d格式符的使用。 #include
{. int a=12,b=18; float x=3.14159;
printf(\ printf(\
printf(\}
第一个printf()函数按整型数据输出,符号“\\n”表示换行;第二个printf()函数按实数形式输出,前一个x采用默认格式输出6位小数,后一个x按5.2f格式输出2位小数;第三个printf()函数输出字符串,运行结果如图1-5所示。
图1-5 例1.4运行结果
4
1.3.3 格式化输入函数scanf()
scanf()函数的功能是从键盘输入数据,一般形式为: scanf(“输入格式”,输入项);
其中输入格式中一般只使用格式符,格式符与printf()函数中格式类似。输入项用于接收数据,如scanf(“%d%d”,&x,&y);表示将输入的两个整型数送到变量x和y,输入的两个数据用空格分隔。
scanf()函数格式说明也以%开头,后跟格式符,常用的输入格式符如表1-2所示。
表1-2 scanf常用格式符
格式符 d c s f 以带符号的十进制形式输入整数 以字符形式输入,只允许输入一个字符 输入字符串,将字符串送到一个字符数组中,在输入时以非空格字符开始。以第一个空格字符结束。字符串以串结束标志?\\0?作为其最后一个字符 以小数形式输入单、双精度数 说 明
【例1.5】阅读并运行程序,分析结果理解scanf函数的使用。 #include
printf(\输入3个整数,用逗号分隔:\ // 输出提示说明 scanf(\ // 输入到变量x,y,z printf(\ printf(\输入2个实数,用逗号分隔:\ scanf(\
printf(\}
运行结果如图1.6所示。
图1.6 例1.5运行结果
scanf函数中输入项变量前需要加符号“&”。 若scanf函数中多个输入格式符要用逗号分隔,则输入的数据也必须用逗号分隔;若输入格式符是连续的,则输入的数据用空格分隔。
图1.6中f2输入的数据是34.55,而输出为34.549999是由于进制间转换的误差所造成的。
5