03简单的C程序设计.docx
- 文档编号:8608923
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:32.63KB
03简单的C程序设计.docx
《03简单的C程序设计.docx》由会员分享,可在线阅读,更多相关《03简单的C程序设计.docx(20页珍藏版)》请在冰豆网上搜索。
03简单的C程序设计
第三讲 第四章简单的C程序设计
内容:
§4.1 C语句
§4.2 程序的三种基本结构
§4.3 赋值语句
§4.4 数据的输出
§4.5 数据的输入
§4.6 简单的C程序举例
§4.1C语句
一、C语句的概念
C语句就是由关键字、函数、操作对象(常量和变量)、其它特殊符号等组成的字符序列。
C语言的语句用来向计算机发出各种操作命令,使计算机完成各种功能,每个语句经过编译后都产生若干条机器指令。
二、C语句的种类
TC的语句一共有五大类:
1.控制语句:
能完成一定的控制功能,如循环、分支、转向等。
格式:
各种不同的控制语句都有不同的格式,以后详细讨论。
2.函数调用语句:
可以调用各种标准函数和用户函数来完成一定的功能。
格式:
函数名(参数表);
3.表达式语句:
能完成各种运算、操作等,是TC程序的主要构成部分。
格式:
表达式;
4.空语句:
表示什么操作都不做。
格式:
;
5.复合语句:
用{}将一些简单语句括起来,构成复合语句。
要注意写在一行上的不一
定是一个语句,反之亦然。
如:
a=3;b=4;c=5;是写同一行中的三个语句;
而:
{t=a;
a=b;
b=t;}是写在不同行中的一个复合语句;
§4.2程序的三种基本结构
C语言是结构化的程序设计语言,任何一个C语言的源程序都是由若干个基本结构
组成的。
每一个基本结构包含一个或多个语句,有一个入口和一个出口。
和其它结构化程
序设计语言一样,C语言也有三种基本结构:
顺序结构、选择结构、循环结构。
一、顺序结构
由两个或两个以上的语句组成,先执行A操作,然后再执行B操作.
入口:
A的入口 出口:
B的出口
二、选择结构
先判断条件P,若条件成立,跳过B执行A操作;若条件不成立,跳过A执行B操作.
入口:
判断框 出口:
A或B的出口之一
三、循环结构
1.当型循环结构
先判断条件,若条件成立,执行循环体A后再判断条件;若条件不成立,跳过循环体A向下执行。
入口:
判断框 出口:
判断框
2.直到型循环结构
先执行循环体,然后判断条件P,若条件不成立,执行循体A后再判断条件;若条件成立,跳出循环体A向下执行。
入口:
循环体A 出口:
判断框
四、说明
以上几种结构中,A、B可以是一个简单语句,也可以是多个简单语句,同样也可以又是一个基本结构,这样,不管多么复杂的问题都可以用三种基本结构所构成的程来解决。
§4.3赋值语句
一、格式:
赋值表达式;(变量=表达式;或变量复合赋植运算符表达式;)
二、功能:
计算表达式的值,然将计算结果赋给左边的变量。
如:
a=32*4计算32*4的值,将计算结果赋给左边的变量a;
b*=24-9计算b*(24-9)的值,将计算结果赋给左边的变量b,其中“*=”为复合赋值运算符。
1.整型常量:
正整数、负整数、0均为整型常量。
2.整型常量的表示方法:
十进制:
如:
123,0,-125等;
八进制:
以数字0开头,如:
034(28),-0123(-83)等;
十六进制:
以数字0和字母x开头,如:
0xa2(162),-0x31(-49)等。
3.整型常量的类型:
基本型:
数值在-32768~32767之间,且无其它符号;
长整型:
数值超过-32768~32767,但在-2147483648~-2147483647之间;或者数值后面带有字母l或L的整数。
§4.4数据的输出
C语言的标准函数库提供有输出函数printf()函数和putchar()函数,这两个函数都以终端(屏幕或打印机)为输出对象。
一、putchar()函数(字符输出函数)
1.格式:
putchar(ch)
2.功能:
将字符ch输出到终端(系统隐含指定的输出设备)上。
3.返回函数值:
字符型,其值就是所输出的字符。
如:
若c为整型变量,则可以设计如下语句:
putchar('A'); /*在屏幕上输出大写字母A*/
c=putchar('A');
/*在屏幕上输出字符常量'A'并将返回的函数值赋给整型变量c,即将字符'A'的ASCII码值赋给变量c*/
printf("%c",putchar('A'));
/*在屏幕上输出大写字母A并将返回的函数值%c格式输出到屏幕上,即输出两个字符'A'*/
4.说明:
(1)ch可以是字符常量、字符变量及数值表达式。
若数值表达式的值为实数,则截去小数;大于255,则取该数与256相除的余数;若小于0,则取该数与-256相除的余数。
(2)若要调用该函数,应在程序前使用预处理编译命令:
#include"stdio.h"。
如:
#include"stdio.h" #include"stdio.h"
main() main()
{inta; {charb;
a=123; b='a';
putchar(a); putchar(b);
} }
a的值 输出 b的值 输出
123 { 'a' a
10+40 2 '\210' ^
-2 ■ 'abcd' 出错
"M" 出错
二、printf函数(格式输出函数)
1.调用格式:
printf(格式控制,输出表列)或printf(参数1,参数2,.......参数n))
2.功能:
将输出列表中的各个输出项依次按规定的格式输出到终端(系统隐含的输出设备)上。
3.返回函数值:
整型,数值就是所输出的字符的数量。
4.说明:
(1)格式控制(参数1)是用双引号括起来的字符串,由格式说明和普通字符组成。
(2)格式说明由%和规定的格式字符组成,见教材P40表3.1和表3.2,这些字符具有确定的含义。
(3)普通字符(格式说明中的其它非格式字符)照原样输出。
(4)输出表列(参数2~参数n)为输出项,依次按格式说明(参数1)规定的格式输出其值。
(5)输出表列(参数2~参数n)对应格式说明(参数1)中的每一个格式,若格式字符少于输出项,多余的输出项不予输出;格式字符多于输出项时,将按规定的格式输出随机值。
(6)输出表列(参数2~参数n)可以是常量、变量、表达式,但要注意与格式说明中格式字符所规定的类型相匹配,否则不能得到正确结果。
5.格式字符使用说明
(1)d格式字符:
以十进制整数的形式输出整数
%d格式:
以十进制整数的形式输出(-32768~32767)范围内的整数;
%ld格式:
以十进制整数的形式输出(-2147483648~2147483647)范围内的长整型数;
%md格式:
其中m为整数,输出(-32768~32767)之间的整数时,最小的字段宽度是m,数据不足m位时,左端补空格;超过m位时,突破m位限制;
%mld格式:
其中m为整数,输出(-2147483648~2147483647)之间的长整型数据时,最小的字段宽度是m,数据不足m位时,左端补空格;超过m位时,突破m位限制。
请看如下的程序:
main()
{inta=32,b=-910;
longd=637,e=1234567;
printf("%3d,%3d\n",a,b);
printf("%8d,%8d\n",a,b);
printf("%3ld,%3ld\n",d,e);
printf("%8ld,%8ld\n",d,e);
}
程序运行结果如下:
a=32,b=-910 /*以%3d格式输出,32不够3位,前边留一位空格*/
a=32,b= -910 /*以%8d格式输出时,32前边留6个空格,-910前边留4个空格*/
d=637,e=1234567 /*以%3ld格式输出时,数据超过3位时突破3位的限制,1234567占7位宽度*/
d= 637,e=1234567 /*以%8ld格式输出时,637和1234567前各留5位和1位空格*/
(2)o格式字符:
以八进制形式输出,但输出的数值不带符号,而是将符号位也作为八进制数的一部分,附加格式字符m,l的意义与d格式字符相同。
请看如下程序:
main()
{inta=-4,b=123;
longd=76543,e=-253;
printf("a=%o,b=%o\n",a,b);
printf("a=%8o,b=%8o\n",a,b);
printf("d=%lo,e=%lo\n",d,e);
printf("d=%8lo,e=%lo\n",d,e);
}
a=177774,b=173/*以%o格式输出-4时,符号位被作为数值的一部分*/
a= 177774,b= 173
d=225377,e=37777777403/*以%lo格式输出-253时,符号位被作为数值的一部分*/
d= 225377,e=37777777403
原因如下:
-4原码 1000000000000100
反码 1111111111111011
补码 1111111111111100
无符号八进制数1 7 7 7 7 4
123原码 0000000001111011
无符号八进制数0 0 0 1 7 3
76543L原码 00000000000000010010101011111111
无符号八进制数0 0 0 0 0 2 2 5 3 7 7
-253L原码 10000000000000000000000011111101
反码 11111111111111111111111100000010
补码 11111111111111111111111100000011
无符号八进制数3 7 7 7 7 7 7 7 4 0 3
(3)x格式字符:
以无符号十六进制数形式输出(同o格式)。
请看如下程序:
main()
{inta=-4,b=123;
longd=65538,e=-253;
printf("a=%x,b=%x\n",a,b);
printf("a=%8x,b=%8x\n",a,b);
printf("d=%lx,e=%lx\n",d,e);
printf("d=%8lx,e=%lx\n",d,e);
}
a=fffc,b=7b/*以%x格式输出-4时,符号位被作为数值的一部分*/
a= fffc,b= 7b
d=10002,e=ffffff03/*以%lx格式输出-253时,符号位被作为数值的一部分*/
d= 10002,e=ffffff03
原因如下:
-4原码 1000000000000100
反码 1111111111111011
补码 1111111111111100
无符号十六进制数f f f c
123原码 0000000001111011
无符号十六进制数0 0 7 b
65538原码 00000000000000010000000000000010
无符号十六进制数0 0 0 1 0 0 0 2
-253L原码 10000000000000000000000011111101
反码 11111111111111111111111100000010
补码 11111111111111111111111100000011
无符号十六进制数 f f f f f f 0 3
(4)u格式字符:
%u格式以十进制无符号数形式输出(0~65535)范围内的正整数。
%lu格式以十进制无符号数形式输出(0~4294967295)范围内的正整数。
请看如下程序:
main()
{inta=-4,b=123;
longd=65538,e=-253;
printf("a=%u,b=%u\n",a,b);
printf("a=%8u,b=%8u\n",a,b);
printf("d=%lu,e=%lu\n",d,e);
printf("d=%8lu,e=%lu\n",d,e);
}
a=65532,b=123/*以%x格式输出-4时,符号位被作为数值的一部分*/
a= 65532,b= 123
d=65538,e=4294967043/*以%lx格式输出-253时,符号位被作为数值的一部分*/
d= 65538,e=4294967043
原因如下:
-4原码 1000000000000100
反码 1111111111111011
补码 1111111111111100
无符号十进制数 65535-2-1=65532
123原码 0000000001111011
无符号十六进制数1+2+8+16+31+64=123
65538原码 00000000000000010000000000000010
无符号十进制数 65536+2=65538
-253L原码 10000000000000000000000011111101
反码 11111111111111111111111100000010
补码 11111111111111111111111100000011
无符号十进制数 4294967295-4-8-16-32-64-128=4294967043
(5)c格式字符:
按照输出数据低8位无符号数对应的ASCII码,以字符的形式输出,而且只输出一个字符。
请看如下程序:
main()
{chara='a',b=48;
intc=49,d=-10;
longe=102448;
floatf=97.4;
printf("a=%d,a=%c\n",a,a);
printf("b=%d,b=%c\n",b,b);
printf("c=%d,c=%c\n",c,c);
printf("d=%d,d=%o,d=%c\n",d,d,d);
printf("%ld%c\n",e,e);
}
程序运行结果如下:
a=97,a=a/*字符型变量a和b可分别按数值(即该字符的ASCII码值)和字符输出*/
b=48,b=0
c=49,c=1/*数值型变量c可分别按数值和字符(该数值所对应的ASCII码字符)输出*/
d=-10,d=65526,d=÷
/*数值型变量d可分别按有符号数、无符号数和字符(取低位字节所对应的ASCII码字符)*/
e=102448e=0
/*长整型变量e可分别按数值和字符(取最低位的一个字节所对应的ASCII)输出*/
(6)s格式字符:
输出一个字符串。
%s格式:
按字符串的实际长度输出字符串;
%ms格式:
其中m为整数,输出字符串时最小宽度为m,若输出项中的字符串长度大于m时,长度突破m;长度不足m时,左端以空格补齐;
%-ms格式:
其中m为整数,输出字符串时以左对齐方式且最小宽度为m,若输出项中的字符串长度大于m时,其长度突破m的限制;
%m.n格式:
其中m、n为整数,只取字符串中左边的n个字符输出,输出数据至少占m列。
请看如下的程序:
main()
{printf("\n%s%s\n","bcde","abcde");
printf("%8s%8s\n","bcde","abcde");
printf("%8s%8s\n","bcde","abcdefghijkl");
printf("%-5s%-5s\n","bcde","abcde");
printf("%-8s%-8s\n","bcde","abcdefgijkl");
printf("%5.3s%5.3s\n","bcde","abcde");
printf("%8.3s%8.3s\n","bcde","abcdefg");
}
程序运行结果为:
bcdeabcde/*%s格式:
按实际长度输出*/
bcde abcde/*%8s格式:
长度不足8时,左边留空格*/
bcdeabcdefghijkl/*%8s格式:
长度超过8时,突破8的限制*/
bcdeabcde/*%-5s格式:
左对齐,长度不足5时,右边留空格*/
bcde abcdefghijkl/*%-8s格式:
左对齐,长度超过8时,突破8的限制*/
bcd abc/*5.3格式:
长度不足5时,左边留空格,只取左边3个字符*/
bcd abc/*8.3格式:
长度不足8时,左边留空格,只取左边3个字符*/
(7)f格式字符:
以小数形式输出实数(TurboC中单精度数提供7位有效数字,双精度数提供15~16位有效数字)。
%f格式:
以小数形式输出实数,输出时整数照原样输出,保留6位小数;
%mf格式:
其中m为一整数,以小数形式输出实数,输出的最小宽度为m位,当数据实际宽度超过m位时,突破m位限制;
%m.nf格式:
其中m、n均为整数,以小数形式输出实数,输出的最小宽度为m位,结果保留n位小数,当数据实际宽度超过m位时,突破m位的限制。
请看如下程序:
main()
{floata=-23.42;
floatb=12345.6789;
doublec=-123456789.0123456;
printf("%f\n",a);
printf("%f\n",b);
printf("%f\n",c);
printf("%f,%10f,%10.3f\n",a,a,a);
}
程序运行结果如下:
-23.420000/*%f格式,保留6位小数,按实际宽度输出*/
12345.67871/*单精度数提供7位有效数字,即只能保证前7位有效数字是准确的*/
-123456789.012346/*保留6位小数,从第7位开始四舍五入*/
-23.420000,-23.420000,-23.420/*分别保留6、6、3位小数,最小宽度10*/
(8)e格式字符:
以指数形式输出实数,不能输出整型数。
%e格式:
以指数形式输出实数,其中尾数部分(即小数部分)为一位非零整数的小数,保留6位有效数字,共占7~8位;指数部分(包括e)为1~3位整数共占4~5位;
%me格式:
其中m为整数,以指数形式输出实数,数据最小宽度为m,尾数部分保留6位有效数字,如果输出数据不足m位,左端留空格;超过m位,突破m位限制;
%m.ne格式:
其中m、n为整数,以指数形式输出实数,数据最小宽度为m,尾数部分保留n位有效数字,如果输出数据不足m位,左端留空格;超过m位,突破m位限制;
%-m.ne格式:
按照左对齐方式,以指数形式输出实数,数据最小宽度为m,尾数部分保留n位有效数字,输出数据超过m位时,突破m位限制。
请看如下程序:
main()
{floatc=-12,d=1234567;
doublee=1234567;
printf("%e,%e,%e\n",c,d,e);
printf("%15e,%15e,%15e\n",c,d,e);
printf("%10.2,e%10.2e,%10.2e\n",c,d,e);
printf("%-10.2e,%-10.2e,%-10.2e\n",c,d,e);
}
程序运行结果如下:
-1.20000e+01,1.23457e+06,1.23457e+06
/*%e格式,尾数部分为一位非零整数的小数,保留5位小数(即6位有效数字)*/
-1.20000e+01, 1.23457e+06, 1.23457e+06
/*%15f格式,尾数为一位非零整数的小数,六位有效数字,不足15位左端补空格*/
-1.2e+01, 1.2e+06, 1.2e+06
/*%10.2e格式,尾数为一位非零小数,2位有效数字,不足10位左端补空格*/
-1.2e+01 ,1.2e+01 ,1.2e+06
/*%-10.2e格式,尾数为一位非零小数,2位有效数字,不足10位右端补空格*/
(9)g格式字符:
按%e和%f中输出宽度较短的一种输出,不输出无意义的0。
请看如下程序
main()
{doublea=12345678.1234567;
doubleb=-12.2,c=-1234567;
printf("%e,%f,%g\n",a,a,a);
printf("%17.6e,%f,%g\n",a,a,a);
printf("%e,%f,%g\n",b,b,b);
printf("%e,%f,%g\n",c,c,c);
}
程序运行结果如下:
1.23457e+07,12345678.123457,1.23457e+07
/*%g格式,按%f和%e中较短者即%e格式输出*/
1.23457e+07 ,12345678.123457 ,1.23457e+07
/*%g格式是按数据的实际长度而不是按数据所占的宽度,仍按e格式输出*/
-1.22000e+01,-12.200000,-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03 简单 程序设计