《编程解决问题之程序设计语言c语言》.docx
- 文档编号:25769013
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:50
- 大小:167.54KB
《编程解决问题之程序设计语言c语言》.docx
《《编程解决问题之程序设计语言c语言》.docx》由会员分享,可在线阅读,更多相关《《编程解决问题之程序设计语言c语言》.docx(50页珍藏版)》请在冰豆网上搜索。
《编程解决问题之程序设计语言c语言》
《编程解决问题之程序设计语言(c语言)》
张海峰孙然
课程内容介绍:
本课程主要是介绍如何利用c程序设计语言,编写程序,解决实际问题。
目的是提高学生利用计算机快速、高效、智能地解决问题的能力,培养学生解决实际问题的综合素养。
该书既可以作为信息技术课程内容的补充,也可以作为编程爱好者的自学用书,还可以作为信息学奥赛的辅导用书。
本书内容共分十章和一个附录,前八章是学习的重点,后几章是对学有余力的同学的知识的扩充,教师授课时或者学生自学时,使用者可以酌情处理。
目录:
第一章初识编程
1.1、为什么要编程
在信息技术教材(上交、必修本)中,我们曾经了解到——计算机具有强大的功能,利用软件,计算机可以高效地解决各种问题。
不过,有的软件已经存在了,有的可能还没有,对于后者这种情况,我们就需要自己动手编写程序,制作软件。
这就是我们信息技术教材上所提到的“自己编制计算机程序,让计算机为自己服务”。
1.2、一个简单的c语言程序
要编程,我们先要学习一种程序设计语言,比如c语言、basic语言、pascal语言等,了解其语法规范、程序结构以及如何利用相应的编译软件生成程序这一系列的过程。
下面,我们先来看一个简单c程序语言的实例,了解程序的一般结构组成和c语言的简单的语法规范。
这段程序的功能是:
根据输入的半径r,计算圆的周长c和面积s。
C语言程序代码如下:
a)#include
b)#include
c)main(){
d)floatr,p,c,s;
e)p=3.14;
f)printf("intputR:
\n");
g)scanf("%f",&r);
h)c=2*p*r;
i)s=p*r*r;
j)printf("c=%f,s=%f\n",c,s);
k)system(“pause”);
l)}
程序解读:
按照语句的功能,程序可以解读如下:
1)语句a、b、c、k、l构成了程序的基本框架,为程序的顺利执行提供必要的功能准备。
⏹stdio.h和stdlib.h称为库文件,里边包含了程序所需的一些函数命令。
输出命令printf()、输入命令scanf()包含在stdio.h文件库中;屏幕停留命令system(“pause”)包含在stdlib.h文件库中,它使输出屏幕短暂停留,方便查看输出结果。
⏹main(){}是程序主体,每个程序只能有一个主函数。
问题求解过程就放在大括号内。
2)语句d、e、f、g、h、i、j是问题的处理过程。
用程序解决问题可以分为如下四个阶段:
⏹定义变量:
语句d定义四个变量,分别存储程序运行中的半径r、π、周长c和面积s四个变量数据。
程序中所用到的数据(包括临时数据),必须事先定义变量,且先定义后使用。
⏹数据输入:
语句f是提示用户输入,语句g是获得用户的输入数据。
⏹数据处理:
语句e是给π的变量p赋初识值,语句h、i利用公式计算周长和面积。
⏹数据输出:
语句j是将计算结果输出到屏幕上。
1.3、程序的编制
在对程序有了一个简单的认识后,我们再来了解一下如何通过编译软件将这段代码生成在我们计算机系统中可以直接运行的可执行程序。
在此,我们介绍实例程序在全国信息学奥赛中指定的c语言编译环境
(该软件可以直接从官方网站下载)中编制的过程。
步骤1:
打开devc软件,窗口组成如下:
常用工具栏
菜单栏
工程管理区
调试区
编辑区
编译按钮
运行按钮
编译运行按钮
步骤2:
在编辑区,书写程序代码,注意字符区分大小写,每条语句以英文“;”结尾。
步骤3:
点编译按钮调试程序。
如果在代码中出现错误,调试区会有出错提示,及时修正,再次编译调试,直至成功。
编译过程中会生成可执行程序。
步骤4:
点击运行按钮,运行可执行程序。
(调试和运行也可以一次点击编译运行按钮完成)
通过以上的过程,我们就制作了一个软件。
以上,是我们对编程过程的一个简单认识,随着我们对编程语言学习的深入,我们会对编程有一个更深入和更全面的了解,进而掌握这种解决问题的方法,提高我们解决问题的效率和能力。
上机实践
在devc软件中调试运行示例程序。
第二章顺序结构程序设计
程序从控制流程的角度来看,可以分为三种基本结构:
顺序结构、分支结构和循环结构,其它复杂程序都可以用这三种结构实现。
上一章,我们所接触的实例程序就是一个典型的顺序结构的程序。
对编程语言的学习,我们就先从顺序结构开始。
2.1、变量定义
在程序中,如果涉及到了数据处理,就需要事先定义变量,确定数据的类型和所需存储空间的大小。
在c语言中,有如下几种数据变量的定义形式,它们也被称为c语言的基本数据类型。
2.1.1、基本数据类型
基本数据类型
表示的数据范围
变量定义
标识符
变量定义示例
输入输出
格式标识符
变量的可能取值
整型
-32768—32767
int
inta,b,…
%d
-100,10000…
实数
-1038—1038
float
floata1
%f
1.2934….
双精度
-10308—10308
double
doubled2
%lf
10100….
字符型
单个字符
char
charch
%c
A,2,*…
其它数据类型:
shortint,longint,unsignedint,string……
2.1.2、运算符
C语言包括了“+(加)、—(减)、*(乘)、/(除)、%(取余)、自加1(++)、自减1(--)”等多种运算符,可以实现相关运算操作。
此处,需要注意,如果两个运算数a、b都是整数(int类型),/是指整除,%是指取余数。
示例:
inta,b,c;
a=6;b=4;
a++;//a的值自加1,变成7,
b--;//b的值自减1变为3;
c=a/b;//此处为整除,c的结果为2
c=a%b;//此处为取余数,c的结果为1
此示例,同学们可以加入输出语句,验证运算的结果。
2.2、赋值操作
赋值就是将数值赋值给相应的变量,操作由“=”完成。
charch1,ch2;
ch1=’a’;
ch2=’A’
inta,b;
a=8;
b=10000;
示例1:
示例2:
2.3、输出语句
C语言经常用到的一条输出语句是printf()语句,其又被称为格式化输出函数,即可以按照规定的格式输出内容。
具体语法如下:
printf(“格式控制字符串”,输出表列)
其中格式控制字符串中包含以%开头的格式字符,和以非%开头的原样输出字符两种。
以%开头的格式字符是输出列表中的各变量依次对应的格式字符,如%d、%c等。
示例1:
printf(“Hellocworld!
\n”);
功能:
在屏幕上直接输出“Hellocworld!
”,“\n”表示内容输出后,输出光标换到下一行。
示例2:
inta=48;
charb=’A’;
printf(“变量a的内容为%d,变量c的内容为%c!
”,a,b);
功能:
在屏幕上输出“变量a的内容为48,变量c的内容为A!
”,%d用变量a的内容48替换,%c用变量b的内容A替换。
此处,格式字符必须与输出列表的数据类型相对应,否则,输出内容可能不会是预期结果,甚至可能是错的。
示例3:
inta=50;
floatd=3.14;
printf("a=%f,d=%d\n",a,d);
输出的可能结果是:
“a=2680,d=1074339512”,也有可能是其它结果,不过都不正确。
另外,格式字符串中也可以加入加入相应的整数,来控制变量输出的位置。
示例4:
inta=50;
floatd=3.14;
printf("a=%8d,d=%6.3f\n",a,d);
输出结果为:
2.4、输入语句
C语言中的常用输出语句是scanf()语句,其被被称为格式输入函数,即可以按用户指定的格式从键盘上把输入数据读入到指定的变量中。
scanf函数的一般形式为:
scanf(“格式控制字符串”,地址表列);
其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。
地址表列中给出各变量的地址,即变量名前加取地址符“&”。
示例4:
inta,b,c;
printf("inputa,b,c\n");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
在scanf()语句中,如果变量是整型,或者是实型时,屏幕输入的数据间用空格隔开;如果是字符型,要注意,输入时空格和换行也被看作是一个字符。
这两条,初学者要注意。
2.5、应用实例
实例2.1:
“welcomtoCworld!
”
#include
#include
main(){
printf(“WelcomtoCworld!
\n”);
system(“pause”);
}
实例2.2、用给定的字符在屏幕上输出三角形
#include
#include
main(){
charch;
printf("intputachar:
\n");
scanf("%c",&ch);
printf("%20c\n",ch);
printf("%17c%6c\n",ch,ch);//
printf("%14c%12c\n",ch,ch);
printf("%11c%3c%3c%3c%3c%3c%3c\n",ch,ch,ch,ch,ch,ch,ch);
system(“pause”);
}
实例2.3、输入四个整数(-5000——5000)计算他们的和
#include"stdio.h"
#include
main(){
inta,b,c,d,s;
printf("pleaseinput4number:
\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
s=a+b+c+d;
printf("sum=a+b+c+d=%d\n",s);
system(“pause”);
}
实例2.4、已知圆的半径,编程求解圆的周长和面积。
#include
#include
main(){
floatr,c,s,p;
p=3.14;
printf("intputR:
\n");
scanf("%f",&r);//
c=2*p*r;
s=p*r*r;
printf("c=%f,s=%f\n",c,s);
system(“pause”);
}
知识扩展:
本章的相关内容,可以参考参考书目1中的第三、四章,在这些章节中关于各变量、运算有更深入的描述,另外还有其它的一些输入输出语句的介绍。
同学们,可以深入阅读,加深认识和理解。
上机实践
练习实例2.1-2.4。
第三章分支控制语句——if语句
在实际编程中,常会遇到一些需要先判断再求结果的问题,这时就要用到分支结构。
C语言常用的分支结构控制语句有if语句(二分支控制语句)和switch语句(多分支控制语句)。
本章,我们先来学习if语句。
3.1、关系运算符及其优先级
程序中做判断时,经常需要列出一些由关系运算符组成的关系表达式,C语言中常用的关系运算符有以下几种:
1)<小于
2)<=小于或等于
3)>大于
4)>=大于或等于
5)==等于
6)!
=不等于
关系运算符都是双目运算符(即需要两个操作数的运算符),优先级均低于算术运算符,高于赋值运算符。
在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!
=,==和!
=的优先级相同,
除了关系运算符外,C语言还提供了三种辅助判断的逻辑运算符:
1)&&与运算,即两个关系表达式同为真时,结果才为真,否则为假。
2)||或运算,即两个关系表达式有一个为真,结果就为真,否则为假。
3)!
非运算,即关系表示为真时,运算后结果为假;关系为假时,运算结果为真。
关系运算符可以构成各种关系表达式,逻辑运算符可以组合关系表达式为复合表达式,这样程序处理问题的能力就被大大的增强。
3.2、if语句的语法
if(表达式)语句1;
else语句2;
说明:
1、语意:
如果表达式的值为真,则执行语句1,否则执行语句2。
语句1、语句2都可以是多条合法的c语言语句,如果语句是多条时,用大括号扩起这些语句。
表达式可以是复合表达式,即多条表达式的组合。
2、有时不需要列出else所要表达的内容,else语句就可以直接省略。
3、如果语句1,或语句2又包含了if语句,则称为if语句的嵌套。
示例1:
if(a>b)printf("max=%d\n",a);
elseprintf("max=%d\n",b);
功能:
如果a>b,输出a的内容,否则输出b的内容,即输出a、b中较大的数。
示例2:
if(a==b)printf("A=B\n");
elseif(a>b)printf("A>B\n");
elseprintf("A
功能:
根据a与b的数值,输出他们之间的大小关系。
这里就用到了if语句的嵌套。
示例3:
charch;
scanf(“%c”,&c);
If((ch>’0’)&&(ch<’9’))printf("输入的字符是数字字符\n");
功能:
该语句根据输入字符的ASCII码值来判别输入符号的类型是不是数字字符。
3.3if语句应用实例
实例3.1:
输入一个整数a,判断是否为偶数。
(是输出"yes!
"否则输出"no!
")。
#include
#include
main(){
inta;
scanf("%d",&a);
if(a%2==0)printf("yes!
");
elseprintf("no!
");
system("pause");
}
实例3.2:
计算一元二次方程的根:
输入方程的三个系数a,b,c,根据delt=b*b-4*a*c计算方程的根。
#include
#include
#include
main(){
floata,b,c,delt;
floatx1,x2;
printf("Pleaseinputa,b,c:
");
scanf("%f%f%f",&a,&b,&c);
delt=b*b-4*a*c;
if(delt==0)
{x1=-b/(2*a);
printf("方程有两个相等实根x1=x2=%f.\n",x1);
}
elseif(delt>0)
{x1=(-b+sqrt(delt))/(2*a);
x2=(-b-sqrt(delt))/(2*a);
printf("方程有两个实根x1=%f,x2=%f.\n",x1,x2);
}
else{printf("方程没有实根!
\n");
}
system(“pause”);
}
实例3.3:
判断闰年,根据输入的年份判断它是否是闰年。
#include
#include
main(){
intf1,f2,f3,year;
printf("判断闰年:
");
printf("请输入年份:
");
scanf("%d",&year);
if(((year%4)==0&&(year%100)!
=0)||((year%400)==0))
printf("%d是闰年\n",year);
else
printf("%d不是闰年\n",year);
system(“pause”);
}
知识扩展:
本章的内容,可以参考参考书目1中的第五章,在这一章节中关于条件运算符(表达式1?
表达式2:
表达式3)在编程中也经常会被用到,感兴趣的同学可以阅读相关内容。
上机实践
练习实例3.1-3.3。
第四章分支控制语句——switch语句
C语言中的swtich()语句是一种多分支控制语句,它会根据判断结果允许有多种(2种以上)输出。
4.1、switch()语句语法
switch(表达式){
case常量表达式1:
语句1;
case常量表达式2:
语句2;
…
case常量表达式n:
语句n;
default:
语句n+1;
}
说明:
1、语义是:
计算表达式的值,并逐个与其后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。
如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
2、若某条case语句被执行后,其后的其它case语句不需要被执行,可以在该case语句对应的执行语句后,加入break语句。
Break语句在此表示跳出整个swtich()语句,继续执行swtich()语句后面的语句。
3、表达式的值必须是可数的数据类型,即是整数,或者是字符,而实数不允许。
示例1:
成绩查询,根据输入的考号,输出其相应的成绩。
intnum;
scanf("%d",&num);
switch(num){
case10001:
printf("%d号考生的成绩是75分\n",num);break;
case10002:
printf("%d号考生的成绩是85分\n",num);break;
case10003:
printf("%d号考生的成绩是95分\n",num);break;
case10004:
printf("%d号考生的成绩是65分\n",num);break;
case10005:
printf("%d号考生的成绩是55分\n",num);break;
case10006:
printf("%d号考生的成绩是100分\n",num);break;
default:
printf("%d号考生不存在\n",num);break;
}
4.2switch()应用实例
实例4.1、参照示例1.
#include
#include
main(){
intnum;
scanf("%d",&num);
switch(num){
case10001:
printf("%d号考生的成绩是75分\n",num);break;
case10002:
printf("%d号考生的成绩是85分\n",num);break;
case10003:
printf("%d号考生的成绩是95分\n",num);break;
case10004:
printf("%d号考生的成绩是65分\n",num);break;
case10005:
printf("%d号考生的成绩是55分\n",num);break;
case10006:
printf("%d号考生的成绩是100分\n",num);break;
default:
printf("%d号考生不存在\n",num);break;
}
system("pause");
}
实例4.2、计算表达式的值,输入表达式aFb,F为“+、-、*、/”之一,计算表达式的值。
#include
#include
main(){
floata,b;
charf;
printf("inputexpression:
a+(-,*,/)b\n");
scanf("%f%c%f",&a,&f,&b);
switch(f){
case'+':
printf("%f\n",a+b);break;
case'-':
printf("%f\n",a-b);break;
case'*':
printf("%f\n",a*b);break;
case'/':
printf("%f\n",a/b);break;
default:
printf("inputerror\n");
}
system("pause");
}
实例4.3、划分等级:
根据输入的成绩划分等级。
0——59为不及格,60——79为合格,80——89为良好,90——100为优秀。
#include
#include
main(){
ints,n;
scanf("%d",&s);
n=s/10;
switch(n){//此处,可以用n而不能用s,同学们,可以思考这是为什么?
case10:
case9:
printf("%d分等级为优秀\n",s);break;
case8:
printf("%d分等级为良好\n",s);break;
case7:
case6:
printf("%d分等级为合格\n",s);break;
default:
printf("%d分等级为不及格\n",s);break;
}
system(“pause”);
}
实例4.4、编程输出某年某月有几天。
#include
#include
main(){
intday,month,year;
printf("pleaseinputyearandmonth:
\n");
scanf("%d%d",&year,&month);
switch(month){
case1:
case3:
case5:
case7:
case8:
case10:
case12:
day=31;break;
case4:
case6:
case9:
case11:
day=30;break;
case2:
if((year%4==0)&&(year%100!
=0)||(year%400==0))day=29;
elseday=28;break;
default:
printf("inputerror!
");
}
printf("thereare%ddaysin%d,%d.\n",day,year,month);
system(“pause”);
}
知识扩展:
本章内容,同学们可以参考参考书目1的第五章。
关于break语句的用法,同学们可以在参考书目1的第六章找到,请同学们自行阅读,了解其完整的功能。
上机实践
练习实例4.1-4.4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程解决问题之程序设计语言c语言 编程 解决问题 程序设计语言 语言