C语言程序设计_第1页
C语言程序设计_第2页
C语言程序设计_第3页
C语言程序设计_第4页
C语言程序设计_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章概述C语言教学网站:

http://c.ytu.edu.cn1.1程序设计与高级语言1.1.1程序与程序设计程序是使用计算机语言解决某个问题的方法和步骤的描述。而程序设计是在某一程序语言环境下,编写出能够使计算机理解并执行的程序代码。因此,可以说计算机语言是人与计算机进行交流的工具。

程序的特点例如:求两个整数和的方法和步骤如下:第一步获取两个整数a和b;

第二步计算c=a+b;

第三步输出c;

第四步结束。【例1.1】求两数和。#include<stdio.h>

main(){

inta,b,c;

scanf("%d,%d",&a,&b);

c=a+b;

printf("sum=%d\n",c);}1.1.2高级语言

最早期是用二进制代码编写程序,称为“机器语言”,机器语言难以记忆。

汇编语言,汇编语言用符号来代表二进制代码,所以又称为“符号语言”。机器语言和汇编语言都是“面向机器的语言”,又称为“低级语言”。程序设计的关键是将问题解决的算法过程描述出来,同时脱离了对机型要求、并且能够面向问题设计计算机程序,高级语言的特点是更加接近自然语言和数学语言,非常容易掌握和普及。高级语言编写的程序称为“源程序”。计算机只能接受0和1组成的二进制程序。翻译程序有两种执行方式:一种是翻译一句执行一句,称为“解释执行”方式,完成翻译工作的程序为“解释程序”;另一种是将源程序全部翻译成二进制程序后再执行,此种执行方式称为“编译执行”方式,完成翻译工作的程序称为“编译程序”。C语言源程序C语言编译程序二进制机器指令执行源程序过程源程序的编辑

源文件名用户自定,文件的扩展名为“.c”或“.cpp”。

2.编译系统会自动生成二进制程序(.obj),称为“目标文件”。3.连接

用户必须用连接编辑器将它和其他目标文件以及系统所提供的库函数进行连接,生成可执行文件(.exe)才能执行。

4.执行执行文件生成后,可直接执行它了。

p21.2算法

学习计算机程序设计语言的目的,是要用语言作为工具,设计出计算机能够运行的程序。设计一个程序首先需要作两方面的工作:一是选定合理的数据结构;二是设计解决问题的算法。程序算法+数据结构1.2.1算法的特性

算法是指为了解决某个特定问题而采用的确定且有效的步骤。p2计算机算法可分为两大类别:数值运算和非数值运算。

数值运算的目的是求数值解,例如,求方程的根、求圆的面积、求n的阶乘等,都属于数值运算。

非数值运算包括的面十分广泛,主要用于事务管理,例如,人事管理、图书管理、学籍管理等。

算法五个特性1.有穷性2.确定性3.可行性4.有零个或多个输入5.有一个或多个输出p31.2.2用流程图表示算法

算法可以用各种描述方法来进行描述,常用的是用伪代码、传统流程图和N-S图,将算法勾画出来,然后,根据流程图编写程序代码。流程图又称框图。1.伪代码【例1.2】用伪代码描述输出x的绝对值。p3IFxispositiveTHENprintxELSEprint–x也可以中英混用,将上例改写成:若x为正打印x否则打印-x2.传统流程图p3

开始/结束框处理框输入/输出框判断框流程线连接点【例1.3】求两个整数和的算法的流程图p4(a)传统流程图计算c=a+b开始输入a,b输出c值结束(b)N-S流程图输出a,b计算c=a+b输出c值3.N-S流程图语句1语句21.3.1C语言的发展史C语言的前身是ALGOL语言。在ALGOL语言基础上增添了处理硬件的能力,推出了CPL语言。对CPL语言进行了简化,推出了BCPL语言。既简单又接近硬件系统的B语言。1972年美国贝尔实验室(BellLaboratories)的Dennis.M.Ritchie在B语言的基础上设计出C语言。美国标准化协会(ANSI)于1983年制定了一套ANSIC标准,此后又相继推出87ANSI、C99标准。1.3C语言的发展史与特点

模块化结构----是程序设计的方法由许多个模块组成了一个结构化程序。用这种方法设计的程序结构称为“模块化结构”。在设计程序结构时,通常采用“自顶向下,逐步细化”的方法,由若干个模块组成的程序靠主程序调动起来分头执行各个模块,来共同完成复杂任务。这个主程序又称“主控模块”。这种处理问题的过程可称为:“自顶向下;逐步细化;模块化设计;结构化编码”。p51.3.2模块化结构

C语言的特点

1.结构化语言

2.简洁、紧凑、灵活3.运算符丰富4.中级语言5.移植性好6.功能强大7.编译语言8.语法限制不严格,程序设计自由度大1.4C语言程序结构及书写规则

1.4.1C程序的基本结构

C程序是由一个主函数和若干个(或0个)用户函数组成的,主函数和用户函数的位置是任意的。但它们的调用关系是一定的。即主函数可以调用任何用户函数,用户函数间可以互相调用,但不能调用主函数。用户函数甚至可以调用自己,这种调用称为递归调用(第5章)。p6

1.4.2程序的书写规则

一个函数由两部分组成一个函数包括----函数说明部分和函数体两个部分1.函数说明部分(又称函数头)2.函数体C程序书写格式随意,除了保留字外,任何地方都可以插入空格、回车换行符。p7

C程序的执行顺序C程序总是从main()函数开始执行,而不论main()函数在整个程序中的位置如何。从主函数的第一条语句开始执行,直到主函数的最后一条语句结束。非主函数的执行必须通过“函数调用”。

1.5C语言的基本词法

1.5.1字符集1.大小写英文字母

A,B,C,……,Z,a,b,c,……,z2.数字0,1,2,3,4,5,6,7,8,93.键盘符号p74.转义字符p81.5.2保留字1.数据类型符p8保留字中文含义保留字中文含义char字符型double双精度型int整型struct结构型short短整型union共用型long长整型typedef类型定义型signedint带符号整型enum枚举型unsignedint无符号整型void空类型float浮点型const常量2.

存储类型符

p8保留字中文含义保留字中文含义auto自动static静态register寄存器extern外部3.其它保留字

p8保留字中文含义保留字中文含义break中止goto转向case情况if如果continue继续return返回default缺省sizeof计算字节数do做switch开关else否则volatile可变的for对于while当1.5.3预定义标识符p9保留字中文含义保留字中文含义define宏定义include包含undef撤消定义ifdef如果定义ifndef如果未定义endif编译结束line行

1.5.4标识符

标识符是指用户定义的一种字符序列,通常用来表示程序中的变量、符号常量、函数、数组、类型等对象的名字。C语言规定:1.标识符是由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。程序中使用的用户标识符除要遵循命名规则外,还应注意“见名知义”。2.用户选取的标识符不能是C语言预留的保留字。3.C语言是区分大小写字母的。因此,sum和Sum及SUM是不同的标识符。

p9例如:合法的标识符:sumaveragedaya2_abovex_1_2_3BASICyesHstudent_1而下面是一些不合法的标识符:a?c.gA$123

#33123H

a–0printf\n4.C语言中标识符的长度(字符个数)无统一规定,随系统不同而异。1.5.5C语言的词类1.常量2.变量3.运算符4.函数调用5.表达式6.保留字1.6C语言的基本语句

C语句是C程序的基本单位。C语句由表达式加上语句结束符构成。格式为:表达式;1.数据定义语句

intx,y,sum;2.赋值语句

x=3;3.函数调用语句格式为:函数名(实参表);printf("%d,%d\n",x,y);4.表达式语句

a+3;5.流程控制语句6.复合语句7.空语句8.其它语句p101.7标准输入/输出函数

TurboC标准库“stdio.h”提供了若干个输入/输出函数,这些函数的作用是完成程序中需要数据的读(输入操作)和写(输出操作)。p253数学库函数:math.hp2521.7.1格式化输入/输出函数1.printf()函数功能:printf()函数是格式化输出函数。调用格式为:

printf("<格式控制字符串>",<输出列表>)printf("%d",a);printf函数的参数包括两部分:格式控制字符串和输出项列表格式字符说明如下:①

普通字符普通字符即需要原样输出的字符【例1.4】输出一串字符:

“ThisisaCprogram.”#include<stdio.h>main(){printf("ThisisaCprogram.");}p12②格式字符

由前导字符“%”开头,后面加上格式字符,表示输出内容的指定格式。

%d %ld %u%lu%o %x %X %c%s%f%lf%Lf %e%E【例1.5】当a=3,b=-3.14时,输出a和b的值。#include<stdio.h>main(){inta=3;floatb=-3.14;

printf("a=%d,b=%f\n",a,b);}a=3,b=-3.140000p12③附加格式字符(m,n,+,–)【例1.6】printf()函数输出宽度的定义举例。#include<stdio.h>1main()2{3inta=3,b=12345;4charx[]={"1234567890"};5chary[]={"abcdefghijklmn"};6printf("%10d,%8d\n",a,b);7printf("%13s,%8s\n",x,y);8printf("%–3d,%–3d\n",a,b);9}p13■■■■■■■■■3,■■■12345■■■1234567890,abcdefghijklmn

3■■,12345(■为空字符)【例1.7】按格式定义宽度输出实型数据。#include<stdio.h>main(){floata=12345.6,b=123.789,c=12.34567;printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);}p13输出指定宽度字符串,使用%m.ns格式符

例如:%6.9s若多于6个字符,宽度位6无效,但多于9个字符,第9个字符后的字符不输出。%9.6s最多输出6个字符,由于定义9个字符位,左边要补空格。【例1.8】按格式定义宽度输出字符串#include<stdio.h>main(){

printf("%3s,%7.2s,%.4s,%-5.3s\n","CHINA","CHINA","CHINA","CHINA");}p14运行结果为:CHINA,CH,CHIN,CHI【例1.9】按格式定义宽度输出各种类型的数据。#include<stdio.h>main(){charc=’1′;inta=1234,b;floatf=3.141592653589;doublex=0.12345678987654321;

printf("a=%d\n",a);

printf("a=%6d\n",a);

printf("a=%06d\n",a);

printf("a=%2d\n",a);

printf("f=%f\n",f);

printf("f=%6.4f\n",f);

printf("x=%f\n",x);

printf("x=%18.6lf\n",x);

printf("c=%c\n",c);

printf("c=%c\n",c);}p14a=1234a=■■1234a=001234a=1234f=3.141593f=3.1416x=0.123457x=■■■■■■■■■■0.123457c=1转义字符

p15\n\t\v\b\r\f【例1.10】转义字符′\201′输出的字符ü(在扩展ASCII中)。#include<stdio.h>main(){charch;ch=’\101’;

/*\101是3八进制整数*/

printf("%c\n",ch);}A2.scanf()函数

功能:scanf()函数是格式化输入函数,该函数的功能是程序执行时从标准读入设备(键盘)读取程序中所需要的信息,通常称其为标准输入函数。该函数在程序通过编译后,程序运行时完成变量取值操作。

scanf("<格式字符串>",地址表);(1)地址表地址表是由若干个地址组成的列表,可以是变量的地址或字符串的首地址等。变量的地址用字符"&"加上变量名表示,其中"&"为取地址运算符,地址表中各个变量之间用“,”分开。(2)格式字符串格式字符串中包括格式控制符和格式定义符,格式控制符与printf()函数基本相同。【例1.11】给整数a、b赋值5和8,并指定以“a=5,b=8”

格式输出。#include<stdio.h>main(){inta,b;

scanf("%d%d",&a,&b);

printf("a=%d,b=%d\n",a,b);}p1658↙a=5,b=858↙(Enter)或5

8↙或分成两行输入5↙8↙(1)格式分隔符

分隔数据

空格

TAB

回车

(2)格式字符

d %u %o %x,%X%c%s %f %E,%G(3)附加字符格式符Lhw(域宽)*p16【例1.12】输入“123456”,观察变量a,b变量取值方式。#include<stdio.h>main(){inta,b;scanf("%3d%3d",&a,&b);printf("a=%d,b=%d\n",a,b);}p17【例1.13】空格作为字符数据读入。

#include<stdio.h>main(){chara,b,c;scanf("%c%c%c",&a,&b,&c);/*3个变量的数据连续读入*/

printf("%c%c%c\n",a,b,c);}XYZ↙XY

【例1.14】“v”字符的输入结束了变量a的取值。

#include<stdio.h>main(){inta;charb;floatc;scanf("%d%c%f",&a,&b,&c);printf("a=%d,b=%c,c=%f\n",a,b,c);}12v345.678↙a=12,b=v,c=345.678009p18【例1.15】在一个程序中出现几次scanf函数的调用,可按规定格式顺序在一行内完成输入(或几行)。

#include<stdio.h>main(){inta,b,c,d,e,f;scanf("%d%d",&a,&b);scanf("%d%d",&c,&d);scanf("%d",&e);scanf("%d",&f);printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d\n",a,b,c,d,e,f);}程序运行时输入:1↙2↙3↙4↙5↙6↙12↙34↙5↙6↙注意:(1)输入数据时可加入提示信息,以便帮助完成正确的一一对应操作,在scanf()函数格式字符中加入必要的提示信息。例如:将scanf("%d,%d,%d",&a,&b,&c);语句改写成:

scanf("a=%d,b=%d,c=%d",&a,&b,&c);程序运行时应输入:a=12,b=345,c=678↙(2)输入数据时,遇到以下情况时系统认为读数据结束。遇到空格,或按下<Enter>键或<Tab>键。

指定宽度读完,如"%3d",只取3位整数。遇到非法输入。【例1.16】scanf()函数调用语句前加上输入信息提示语句,以方便数据输入,调用printf函数完成此功能。#include<stdio.h>main(){charc1,c2;inti1,i2;printf("inputcharc1,c2:\n");inputcharc1,c2:*/scanf("%c,%c",&c1,&c2);printf("inputinti1,i2:\n");scanf("%d,%d",&i1,&i2);printf("%c,%c\n",c1,c2);printf("%d,%d\n",i1,i2);}p19程序运行时用户窗口出现此内容:inputcharc1,c2:后,用户输入数据:a,b↙用户窗口再次出现:inputinti1,i2:用户输入数据:3,5↙该程序两次出现提示信息,分别由:printf("inputcharc1,c2:\n")语句和printf("inputinti1,i2:\n")语句实现。1.7.2非格式化字符输入/输出函数

1.putchar()函数功能:用来向标准输出设备输出一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论