C语言程序设计课程实践指导31.docx

上传人:b****1 文档编号:588320 上传时间:2023-04-29 格式:DOCX 页数:126 大小:129.38KB
下载 相关 举报
C语言程序设计课程实践指导31.docx_第1页
第1页 / 共126页
C语言程序设计课程实践指导31.docx_第2页
第2页 / 共126页
C语言程序设计课程实践指导31.docx_第3页
第3页 / 共126页
C语言程序设计课程实践指导31.docx_第4页
第4页 / 共126页
C语言程序设计课程实践指导31.docx_第5页
第5页 / 共126页
C语言程序设计课程实践指导31.docx_第6页
第6页 / 共126页
C语言程序设计课程实践指导31.docx_第7页
第7页 / 共126页
C语言程序设计课程实践指导31.docx_第8页
第8页 / 共126页
C语言程序设计课程实践指导31.docx_第9页
第9页 / 共126页
C语言程序设计课程实践指导31.docx_第10页
第10页 / 共126页
C语言程序设计课程实践指导31.docx_第11页
第11页 / 共126页
C语言程序设计课程实践指导31.docx_第12页
第12页 / 共126页
C语言程序设计课程实践指导31.docx_第13页
第13页 / 共126页
C语言程序设计课程实践指导31.docx_第14页
第14页 / 共126页
C语言程序设计课程实践指导31.docx_第15页
第15页 / 共126页
C语言程序设计课程实践指导31.docx_第16页
第16页 / 共126页
C语言程序设计课程实践指导31.docx_第17页
第17页 / 共126页
C语言程序设计课程实践指导31.docx_第18页
第18页 / 共126页
C语言程序设计课程实践指导31.docx_第19页
第19页 / 共126页
C语言程序设计课程实践指导31.docx_第20页
第20页 / 共126页
亲,该文档总共126页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计课程实践指导31.docx

《C语言程序设计课程实践指导31.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程实践指导31.docx(126页珍藏版)》请在冰点文库上搜索。

C语言程序设计课程实践指导31.docx

C语言程序设计课程实践指导31

第一章绪论

上机实习:

WiN-TC系统的基本操作方法

一、目的要求

1、掌握C程序的基本结构。

2、熟悉WiN-TC系统的操作界面。

3、能熟练地启动WiN-TC和退出WiN-TC。

4、掌握在WiN-TC中建立、运行、修改、保存和装入程序的方法。

5、掌握插删字符和插删行等基本的编辑操作。

二、上机内容

下面是三个从最简单到稍复杂的C程序,仔细阅读程序并领会各程序的运行结果,以熟悉C程序的基本结构和WiN-TC的基本操作流程。

1、main()

{

printf("HelloChina!

");

}

(1)调试该程序。

(2)在函数体中插入一行语句,使上面的程序变成:

main()

{

clrscr();/*清屏*/

printf("HelloChina!

");

}

再次运行程序并仔细观察运行结果,这次是先清屏,再从屏幕的左上角开始显示“HelloChina!

”。

说明:

清屏函数clrscr(),先清屏再显示出运行结果

2、main()

{

inta,b,sum;

a=1;

b=2;

sum=a+b;

clrscr();

printf("sum=%d",sum);

}

(1)运行该程序,对比自己的判断与屏幕上的结果是否一致。

(2)删除函数体第一行中的变量定义语句“inta,b,sum;”,或将该语句注释起来。

再运行程序,看看会有什么结果。

3、main()

{

inta,b;

a=2;

b=pf(a);

printf("a=%d,b=%d",a,b);

}

pf(num)

intnum;

{

intt;

t=num*num;

return(t);

}

(1)运行程序后分析该程序执行的功能。

(2)将程序中的main()函数改写如下:

main()

{

inta,b;

clrscr();

scanf("%d",&a);

b=pf(a);

printf("a=%d,b=%d",a,b);

}

再运行程序,当从键盘输入2时,输出:

a=2,b=4

从键盘输入5时,输出:

a=5,b=25

如果是第二种情况会有什么好处?

使用scanf函数的好处是,可以在程序的运行过程中灵活地输入我们想求平方的一个数,并根据该数输出其平方值。

第二章基本数据类型和简单程序设计

第一节  学习指导

一、学习目标

本章重点介绍了C语言的三种基本数据类型,即整型、浮点型和字符型,以及这三种数据类型的简单程序设计。

每个程序都有自己特定的数据处理对象,例如,求1+2+3+……+100之和的程序,它的数据对象是整数;求一元二次方程的根的程序,它的数据对象是小数。

可以说,任何程序设计都会涉及到对数据的处理,因此,如何在程序中表示数据是一个最基本的问题。

学习本章的目的,就是要了解各种基本数据类型的特点,知道如何在程序中使用这些类型的数据,在定义变量时如何根据实际需要随机应变。

本章学习目标如下:

1、了解三种基本数据类型的特点。

2、掌握三种基本数据类型常量的表示方法。

3、熟练掌握三种基本数据类型变量的定义方法。

4、了解混合运算中的类型转换。

二、几个需要注意的问题

1、常量与变量。

要记住常量和变量的定义很容易,前者是在程序运行过程中其值不能改变的量,后者是在程序运行过程中其值允许改变的量。

但是,对第一次学习程序设计的初学者来说,往往弄不明白编程时什么时候使用常量,什么时候使用变量。

举一个简单的例子,如果你仅仅是想求13与25之和,那么可以在程序中写出下面的语句:

printf("%d",13+25);

这里,13和25就是常量,这个语句中没有出现任何一个变量。

但是,如果你是想求两个数之和,而这两个数又是根据不同的需要而改变的,那么就可以在程序中利用定义变量的方法解决,如下面的语句:

printf("%d",a+b);

或:

sum=a+b;

printf("%d",sum);

这里,a、b、sum就是变量,在执行a+b之前,可以通过输入语句给它们赋值,也可以通过赋值语句,把常量或表达式的值分别赋给它们。

总之,a和b的值是可变的。

2、变量名的命名规则。

程序中的每个变量都有一个名字,变量名在定义该变量时就确定了。

并非任何一个字符序列都可以作为一个变量名,只有符合一定规则的名字才是有效的。

(1)变量名只能由字母(A~Z,a~z)、数字(0~9)和下划线(_)三种符号组成,第一个字符必须是字母或下划线。

下面是合法的变量名:

Y,student2,student_name,_page10

下面是不合法的变量名:

2student,sum$3,dr.a,#num

(2)大写字母与小写字母代表含义不同的字符,即两者不等价。

如,sum、Sum和SUM代表三个完全不同的变量。

(3)TurboC规定,变量名的前32个字符在程序中是有效的。

尽管语法允许给变量取一个如此长的名字,但根据一般的编程经验,变量名的长度通常在8个字符以内就行了,没有必要取太长的名字自找麻烦。

(4)不允许使用关键字作变量名。

关键字是C语言的编译程序定义的有固定用法的名字,如,关键字int的作用是定义一个整型变量,因此,用户就不能再用int来作为某个变量的名字。

除了变量名必须遵守上述命名规则,在后面章节中介绍的数组名、函数名和数据类型名等也必须遵守这些命名规则。

另外,为了提高程序的可读性,给变量命名时最好能做到“见名知意”。

3、变量的定义。

C语言规定,程序中的变量必须是“先定义,后使用”。

初学者往往容易忽略在使用变量之前先定义变量,这一点一定要注意。

(1)一个变量就是一个存储区域,它能存储相同类型的不同数据,使用变量名就是使用变量存储区域中存储的数据。

(2)把某个变量定义为哪一种基本类型,关键是看打算用该变量存储什么数据。

例如,想用一个变量存放单个字符,则可把该变量定义为char型;若想存放1~100之间的整数,则可把该变量定义为int型;若想存放小数,则可把该变量定义为float型。

定义变量时还应考虑数据的大小范围。

试分析下面的程序:

main()

{

inta,b,c;

a=20000;

b=30000;

c=a+b;

printf("c=%d",c);

}

不要以为这个程序的运行结果会是c=50000,事实上,它的运行结果是c=-15536。

因为变量c的类型是int型,它所能存放的最大整数是32767,而a与b之和50000超出了这个范围,运行结果自然就出错了。

要想得出正确的运行结果,上面的程序应改为:

main()

{

inta,b;

unsignedc;

a=20000;

b=30000;

c=a+b;

printf("c=%u",c);/*%u表示以unsigned型整数的形式输出变量的值*/

}

(3)定义一个变量时应尽可能地考虑节省存储空间。

例如,某个程序中的变量a用来存放100以内的自然数,那么,变量a可以定义为int类型,也可以定义为long类型。

选哪一种呢?

当然是int型!

因为,一个int型变量只占2个字节,而long型变量却要占4个字节。

三、易出现的语法错误及出错信息

上机操作时,有语法错误的程序不能顺利通过编译过程,这时,出错信息会出现在Massage窗口中,每条出错信息前有一个用来报告错误所在行的行号,可以按这个行号查找程序中出错的地方,修改之后再重新对程序进行编译。

下面列出了在定义变量时易出现的语法错误及相应出错信息。

1、变量没有定义。

出错信息:

Undefinedsymbol‘XXXX’

分析:

C语言规定,变量使用之前必须先定义。

这条出错信息产生的原因是使用了一个没有定义过的变量。

程序示例:

main()

{

a=2;

b=3;

printf("%d",a+b);

}

这个程序在编译时,Massage窗口中将显示出第3行的变量a和第4行的变量b没有定义的出错信息。

又如:

main()

{

inta;b;

a=2;

b=3;

printf("%d",a+b);

}

这个程序好象没有什么错误,但编译时Massage窗口中将显示出:

Undefinedsymbol‘b’infunctionmain

为什么呢?

仔细观察,你会发现程序的第三行定义变量a和b时,a与b之间是分号而不是逗号。

分号代表一个语句的结束,因此,分号后面的b就没有定义了。

这好象是一个很好笑的错误,但是,对粗心的初学者来说,上机时往往会因忽略细节而导致程序的失败。

2、定义变量时的语法错误。

出错信息:

Declarationsyntaxerror

分析:

通常这条信息的出错之处在变量定义或函数定义中,而定义中具体的语法错误又可能是多种多样的,所以,这是一条较难查找的错误。

下面的程序示例给出了两种导致这条信息的变量定义错误。

程序示例:

main()

{

intab;

a=2;

b=3;

printf("%d",a+b);

}

这个程序的错误之处是,第3行定义变量时,变量a和b之间用的是空格间隔,而不是用逗号间隔。

又如:

main()

{

float2s;

2s=26.8;

printf("%f",2s);

}

这个程序中使用了一个名字不合法的变量,即2s。

注意,变量名必须以字母或下划线开头。

第二节  上机实习:

基本数据类型的简单程序设计

一、目的要求

1、进一步熟悉TurboC集成环境下程序的建立、修改和运行。

2、熟悉定义各种基本数据类型变量的方法。

3、初步了解printf函数的使用方法。

4、熟悉有关变量定义的语法错误,并能够根据出错信息修改、调试程序。

二、上机内容

1、语法错误的检查与修改。

下面的程序均含有语法错误,在TurboC集成环境中建立源程序并使用Run命令后,仔细观察Massage窗口中的出错信息,并分析出错原因,找出程序中的错误所在之处。

改正错误之后再重新运行程序。

注意,出错信息显示在Massage窗口中时,可以按F6键在Massage窗口与Edit窗口之间切换。

(1)main()

{

intx1,x2;

x1=5;

x2=10;

y=x1*x2;

printf("y=%d",y);

}

(2)main()

{

FLOATa;

a=2.6;

printf("%f",a*3);

}

(3)main()

{

intnum#1;

num#1=50;

printf("%d",num#1/2);

}

(4)main()

{

charch;

ch=A;

printf("%c",ch);

}

2、分析程序的运行结果。

上机之前先写出下面程序的运行结果,上机时再比较实际运行结果与自己分析的结果是否一致。

(1)main()

{

intnum1,num2,num3;

clrscr();

num1=4;

num2=2;

num3=num1/num2;

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

num1=12;

num2=3;

num3=(num1+num2)*2;

printf("num3=%d",num3);

}

(2)main()

{

intr;

floats;

clrscr();

r=2;

s=3.14159*r*r;

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

printf("s=%f",s);

}

(3)main()

{

charc1,c2;

clrscr();

c1='a';

c2='b';

printf("字母a的ASCII码为:

%d\n字母b的ASCII码为:

%d",c1,c2);

}

(4)main()

{

charch;

clrscr();

ch='\02';

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

ch='\03';

printf("%c",ch);

}

提示:

这个程序中,'\02'和'\03'分别表示ASCII码为2和3的字符,前者是一个笑面符号,后者是一个心形符号。

通过这种形式,可以输出不能用键盘符号表示的字符。

上机操作时,你不妨将'\02'和'\03'分别改为'\04'和'\05',看看会有什么运行结果。

3、编写一个简单的程序。

已知三个整数分别为100、82、93,编一程序求这三个数的平均值。

要求使用变量。

第三章表达式与运算符

第一节  学习指导

三、学习目标

本章重点介绍了几类常用的运算符,以及由这些运算符构成的表达式。

在实际编程中,算术运算符和赋值运算符几乎是每个C程序都要用到的,这也是本章应重点掌握的内容。

对于关系表达式和逻辑表达式,可能你觉得一时还用不上它们,但在后面的选择结构和循环结构的程序设计中,条件判断均是以关系表达式或逻辑表达式的形式表示,因此,理解并掌握关系运算符和逻辑运算符及其相关表达式,是学好选择结构和循环结构的基础。

本章学习目标如下:

1、熟悉各种基本的算术运算符,能够把一个普通的数学公式改写成符合C程序语法规则的算术表达式。

2、理解各种关系运算符和逻辑运算符的意义,能准确判断关系表达式和逻辑表达式的值。

3、熟练掌握赋值运算符和各种复合赋值运算符的用法。

4、熟悉各类常用运算符的优先级。

四、需要注意的几个问题

1、关于除法运算符。

除法运算符“/”与一般的算术运算规则不同,当整型数据除以整型数据时,其商也是整数。

除法运算符“/”的这一特点有时会影响运算结果的精确性,看下面求两个数的平均值的程序:

main()

{

intnum1,num2,sum,n;

floataverage;

num1=13;

num2=28;

n=2;

sum=num1+num2;

average=sum/n;

printf("%.2f",average);/*%.2f表示输出的浮点数只保留两位小数*/

}

这个程序的运行结果是20.00,而不是20.50,因为变量sum和n都是是整型变量,相除的结果就是一个舍去了小数部分的整型数。

如果想得到精确的运算结果,则可将程序中的语句:

average=sum/n;

改为:

average=(float)sum/n;

2、关系表达式和逻辑表达式。

关系表达式和逻辑表达式的值只有两种:

1和0,即表达式为真时,其值为1,表达式为假时,其值为0。

而在判断真与假时,则是0为假,非0为真。

需要注意的是,数学上很常见的一种比较大小关系的写法,在C语言中却变成了另外的含义。

如,要表示x的值在3和10之间,数学上可以写为:

3

而在C语言中,上面的式子等效于:

(3

当x的值不在3和10之间时,这个关系表达式依然为真。

这里,我们假设x的值为100,关系表达式3

因此,在C语言中要表示x的值在3和10之间,就应该写成下面的逻辑表达式:

3

3、赋值运算符与赋值表达式。

(1)赋值运算符“=”不同于数学中的等号。

在数学上,算式i=i+2显然不成立。

但在C语言中,表达式i=i+2的作用是把变量i的值加上2,并把得到的和赋值到变量i中。

(2)特别要注意的是,赋值运算符的左边只能是一个变量名,而不能是一个常量或其它的表达式。

下面都是错误的赋值表达式:

13=a

a+b=5

num*2=100

如果程序中出现了错误的赋值表达式,则编译时Massage窗口中会显示下面的出错信息:

Lvaluerequired

(3)给变量赋值时是“新来旧去”,即,把一个新的值赋给变量后,该变量中原来的值就被覆盖掉了。

4、运算符的优先级。

C语言对每一种运算符都规定了优先级,有时候,在同一表达式中需要同时使用多种运算符,这时就要考虑各个运算符的优先级问题。

第二节  上机实习一:

算术运算符及算术表达式

一、目的要求

1、熟悉各种算术运算符的使用规则。

2、能够编写程序,求简单的数学算式的值。

二、上机内容

1、运行下列程序,注意观察运行结果。

(1)main()

{

inta=11,b=3;

clrscr();

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

printf("(float)a/b=%f\n",(float)a/b);

printf("a%%b=%d",a%b);/*“%%”的作用是打印出字符“%”*/

}

(2)main()

{

floatx=3.8;

clrscr();

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

printf("(int)x=%d",(int)x);

}

(3)main()

{

inta=7,b=4;

floatx=2.5,y;

clrscr();

y=x+a%3*(int)(x+b)%2/4;

printf("y=%f",y);

}

2、编写程序。

已知:

其中,a=-10,b=30。

编一程序求y的值。

3、完善程序。

已知一元二次方程:

ax2+bx+c=0

其中,a=1,b=4,c=2。

下面的程序是求方程的两个实数根,请在横线处填写正确的语句或表达式,使程序完整。

程序的后面给出了该程序正确的运行结果,上机调试完善后的程序,看看你的程序运行结果是否与书中的结果一致。

#include

main()

{

int;/*定义变量a、b、c,并给变量赋初值*/

floatd,x1,x2;

clrscr();

d=sqrt();/*求b2-4ac的平方根*/

;/*求x1的值*/

;/*求x2的值*/

printf("x1=%.2f\n",x1);

printf("x2=%.2f",x2);

}

运行结果为:

x1=-0.59

x2=-3.41

提示:

求根公式为:

C语言中计算平方根的函数是sqrt()函数,例如,sqrt(a+b)即是求a+b的平方根。

第三节  上机实习二:

关系表达式和逻辑表达式

一、目的要求

1、掌握各种关系运算符和逻辑运算符的功能。

2、能正确理解“真”、“假”的概念,及其在C语言中的表示形式。

3、能够把一个命题写成符合C语言语法规则的关系表达式或逻辑表达式。

二、上机内容

1、运行下列程序,分析并观察运行结果。

(1)main()

{

inta,b,c;

a=1;

b=2;

c=3;

clrscr();

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

printf("a

%d\n",a

printf("a<=b的值为:

%d\n",a<=b);

printf("a==c的值为:

%d\n",a==c);

printf("a!

=c的值为:

%d\n",a!

=c);

printf("c>b的值为:

%d\n",c>b);

}

(2)main()

{

intx=3,y=4,z=5;

intb;

clrscr();

printf("x=%d,y=%d,z=%d\n",x,y,z);

b=x

printf("x

%d\n",b);

b=xz;

printf("xz的值为:

%d\n",b);

b=xz;

printf("xz的值为:

%d\n",b);

b=!

x;

printf("!

x的值为:

%d\n",b);

b=!

(x>y);

printf("!

(x>y)的值为:

%d\n",b);

b=(x>y||x>z)&&y

printf("(x>y||x>z)&&y

%d\n",b);

}

(3)main()

{

intx=20,y;

clrscr();

y=2

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

printf("2

%d\n",y);

y=2

printf("2

%d",y);

}

2、完善程序。

已知,闰年符合下面两个条件之一:

(1)能被4整除,但不能被100整除;

(2)能被400整除。

下面的程序验证2000年为闰年,请在横线处填写正确的运算符或表达式,使程序完整。

程序的后面给出了该程序正确的运行结果,上机调试完善后的程序,看看你的程序运行结果是否与书中的结果一致。

提示:

可以通过求余运算判断能否整除。

若a%b的值为0,则表明a能被b整除。

main()

{

intyear=2000,b;

b=(year%4==0year%1000)();

clrscr();

printf("%d",b);

}

运行结果:

1

第四节  上机实习三:

赋值运算

一、目的要求

1、理解赋值运算符的意义,了解赋值运算符与数学中的等号的区别。

2、熟悉常用的复合赋值运算符以及自增和自减运算符。

二、上机内容

1、下面的程序均有语法错误,上机调试程序,注意观察Message窗口中的出错信息,并根据出错信息改正程序中的错误之处。

(1)main()

{

inta;

0=a;

printf("a=%d",a)

}

(2)main()

{

inta;

b=1,c=2;

b+c=a;

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

}

2、运行下列程序,分析并观察运行结果。

(1)main()

{

intx,y;

clrscr();

x=y=25;

printf("x=%d,y=%d",x,y);

}

(2)main()

{

intx=3,y=2;

clrscr();

x*=y+8;

printf("1:

x=%d\n",x);

x-=y;

printf("2:

x=%d\n",x);

}

(3)main()

{

inta=10,b;

clrscr();

b=a++;

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

b=++a;

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

}

3、完善程序。

下面程序的功能是交换变量a和b的值,请在横线处填写正确的表达式或语句,使程序完整。

程序的后面给出了该程序正确的运行结果,上机调试完善后的程序,看看你的程序运行结果是否与书中的结果一致。

提示:

交换两个变量的值,需要一个中间变量来暂时存放其中一个变量的值。

下面的程序段是错误的:

a=b;

b=a;

若变量a的初值为1,b的初值为2,那么执行了第一个语句之后,变量a的值就变成了2,而不再是原来的值1。

因此整

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2