NYISTC实验指导书T.docx

上传人:b****6 文档编号:5255718 上传时间:2022-12-14 格式:DOCX 页数:17 大小:47.80KB
下载 相关 举报
NYISTC实验指导书T.docx_第1页
第1页 / 共17页
NYISTC实验指导书T.docx_第2页
第2页 / 共17页
NYISTC实验指导书T.docx_第3页
第3页 / 共17页
NYISTC实验指导书T.docx_第4页
第4页 / 共17页
NYISTC实验指导书T.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

NYISTC实验指导书T.docx

《NYISTC实验指导书T.docx》由会员分享,可在线阅读,更多相关《NYISTC实验指导书T.docx(17页珍藏版)》请在冰豆网上搜索。

NYISTC实验指导书T.docx

NYISTC实验指导书T

 

南阳理工学院

C上机实验指导书

(2011版)

软件学院·软件工程教研室

2011.10

目录

实验1C程序的运行环境1

实验2:

数据类型、运算符与表达式2

实验3:

顺序程序设计4

实验4选择结构程序设计5

实验5循环结构程序设计

(一)6

实验6循环结构程序设计

(二)7

实验7数组

(一)9

实验8数组

(二)10

实验9函数

(一)11

实验10函数

(二)12

实验11指针

(一)13

实验12指针

(二)14

实验13结构体和共用体

(一)15

实验14结构体和共用体

(二)16

实验15文件操作18

实验16综合实验报告19

实验1C程序的运行环境

一、实验目的

1.熟悉开发环境,掌握程序设计的基本步骤;

2.编制简单C程序并运行,熟悉C的编辑、编译、连接和运行过程

3.熟悉C的基本元素、标识符等,掌握C程序的基本结构

二、实验内容及步骤

1.检查所用的计算机系统是否已安装了C编译系统并确定它所在的子目录。

2.进入所用的C编译集成环境。

3.熟悉集成环境的界面和有关菜单的使用方法。

4.输入并运行一个简单的、正确的程序。

①输入下面的程序

#include

intmain()

{

printf(“Thisisacprogram.\n”);

return0;

}

②仔细观察屏幕上的已输入的程序,检查有无错误,对程序进行编译,连接,运行,查看其结果。

5.输入并编辑一个C程序。

#include

intmain()

{

inta,b,sum;

a=123;b=456;

sum=a+b;

printf(“sumis%d\n”,sum);

retrun0;

}

6.编写程序,实现求整数10、20和35的平均值。

三、实验要求

1.实验中仔细观察、记录、比较实验结果,如果不一致应找出原因。

2.编写的程序必须保存在E:

\用户目录中。

注:

用户目录可以用学号或姓名拼音简写。

实验2:

数据类型、运算符与表达式

一、实验目的

1.掌握C语言算术、赋值、自增、自减运算符及相应表达式

2.掌握不同类型数据之间的赋值规律

3.了解强制数据类型转换以及运算符的优先级、结合性

4.学会根据表达式,编写相应程序,验证表达式结果的方法

二、实验内容及步骤

1.已知:

a=2,b=3,x=3.9,y=2.3,计算算术表达式(float)(a+b)/2+(int)x%(int)y的值。

试编程上机验证。

2.已知:

a=7,x=2.5,y=4.7,计算算术表达式x+a%3*(int)(x+y)%2/4的值。

试编程上机验证。

3.已知:

a=12,n=5,计算下面表达式运算后a的值。

试编程上机验证。

(1)a+=a

(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2)(6)a+=a-=a*=a

4.分析下面程序结果,并上机验证。

main()

{

inti,j,m,n;

i=8;j=10;

m=++i;

n=j++;

printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);

}

5.输入如下程序,运行该程序,观察运行结果,熟悉C语言中整型数据和字符数据互用的特点。

main()

{

charc1,c2;

intn1,n2;

c1=97;c2=’A’;

n1=c1+1;

n2=c2+1;

printf(“%c%c%c%c\n”,c1,c2,n1,n2);

printf(“%c%c%c%c\n”,c1,c2,n1,n2);

}

6.将k分别设置为127,-128,128,-129,分析下面程序结果,并上机验证。

main()

{

floata=3.7,b;

inti,j=5;

intk=127;/*用127,-128,128,-129测试*/

unsignedU;

longL;

charC;

i=a;printf(“%d\n”,i);/*浮点赋值给整型*/

b=j;printf(“%f\n”,b);/*整型赋值给浮点*/

U=k;printf(“%d,%u\n”,U,U);/*相同长度类型之间赋值*/

L=k;printf(“%ld\n”,L);/*整型赋值给长整型,短的类型赋值给长的类型*/

C=k;printf(“%d\n”,C);/*整型赋值给字符型,长的类型赋值给短的类型*/

}

你分析的表达式结果:

结果行

k=127

k=128

k=-128

k=-129

1

2

3

4

5

三、实验要求

1.1-3题要求实验前手工计算并编制好上机测试用源程序,以便上机实验。

2.4、5题要求实验前分析程序结果,以便上机时对比结果。

3.实验中仔细观察、记录、比较实验结果,如果不一致应找出原因。

4.编写的程序必须保存在E:

\用户目录中。

注:

用户目录可以用学号或姓名拼音简写。

实验3:

顺序程序设计

一、实验目的

1.掌握C语言中使用最多的一种语句------赋值语句的使用方法

2.掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符

3.进一步掌握编写程序和调试程序的方法

二、实验内容及步骤

1.输入x,y,编写程序求z=x+|y|的值。

(1)程序中用scanf函数输入x和y的值,请分析以下两个语句scanf(“%f%f”,x,y);

scanf(“%f%f”,&x,&y);

哪一个是正确的,分别运行之,分析程序运行结果。

如果scanf函数改为scanf(“%f,%f”,&x,&y);应该怎样输入数据。

2.输入一个双精度数,对小数点后第2位进行四舍五入,即保留一位小数,输出四舍五入的结果。

提示:

注意scanf函数和printf函数具有不同的格式字符;

注意数的真正精度与实际显示宽度是不同的。

分清数的精度与显示宽度。

四舍五入算法:

x=(x+0.05)*10;x=(int)x;x=x/10。

3.交换两数,变量a、b中各存有一个整数,交换两数后输出。

提示:

设a=10,b=20,若要交换两数,则需要借一中间变量,首先将a中的数值存入变量t中进行保存,然后将b中的数值存入a中,再将t中的数值存入b中。

(或用其他的方法)

三、实验要求

1.实验中仔细观察、记录、比较实验结果,如果不一致应找出原因。

2.讨论上机各个环节所出现的错误及解决的办法。

实验4选择结构程序设计

一、实验目的

1.了解C语言表示逻辑量的方法(以0表示“假”,以非0代表“真”)

2.学会正确使用逻辑运算符和逻辑表达式

3.熟悉选择结构程序设计

4.熟练使用if语句进行程序设计

5.使用switch语句实现多分枝选择结构

二、实验内容及步骤

1.用scanf函数输入一个年份year,计算这一年2月份的天数days,然后用输出函数printf输出days。

(1)有变量定义为整型。

(2)输入前要加提示语句。

(3)输出结果前要有必要的文字说明。

说明:

(1)闰年的条件是:

year能被4整除但不能被100整除,或者year能被400整除。

(2)如果year是闰年,则2月份的天数为29天,不是闰年则为28天。

2.编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。

奖金税率

a<5000.00

500≤a<10000.05

1000≤a<20000.08

2000≤a<50000.10

5000≤a0.15

(1)用if语句编程,自变量和函数值均为双精度类型

(2)用scanf函数输入奖金数a,输出结果采用以下形式:

a=具体值rate=税率值tax=应缴税款profit=实得奖金数

(3)分别输入a=280,512,1000,4250,5100,运行该程序

(4)用if-elseif语句和switch语句编程,其它同上。

3.百分制转等级制

输入一个成绩score,要求输出等级A、B、C、D、E,90分以上为A,80-90为B,60-69为D,其它为E。

循环从键盘接收一班学生的某门课的成绩score,并根据成绩所在分数区间给该生评定等级level并输出,直到输入999时结束,求出该班该门课的平均成绩。

实验5循环结构程序设计

(一)

一、实验目的

1.熟悉掌握while语句、do-while语句和for语句实现循环的方法

2.掌握在程序设计中用循环方法实现一些常用算法(如穷举、迭代、递推等)

3.掌握并会分析循环结构程序

二、实验内容及步骤

1.分别用while语句、do-while语句编写程序,计算e≈1+1/1!

+1/2!

+...+1/n!

(1)用单重循环编写程序

(2)使误差小于给定的ε,设ε=10-5

(3)除了输出e以外,同时还要输出总的项数n

2.奇偶对调,对N以内的整数进行奇偶对调,并输出结果

3.如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。

例如6的因子是1,2,3,且6=1+2+3,因此6是完数。

编写程序找出1000之内的所有完数及这些完数的和。

(1)要求使用for循环

(2)输出形式为:

完数1+完数2...=和值

三、实验要求

1.实验中仔细观察、记录、比较实验结果,如果不一致应找出原因。

2.讨论上机各个环节所出现的错误及解决的办法。

3.分析三种循环使用的区别。

实验6循环结构程序设计

(二)

一、实验目的

1.熟练掌握循环结构的嵌套

2.熟练掌握选择与循环结构的嵌套

3.掌握break和continue语句的使用

二、实验内容及步骤

1.下面程序统计字符数组c中0、1、2及其他字符出现的次数,分别存放在变量i0、i1、i2中,统计结束后输出它们的值。

要求:

分析出现结果的原因,如何修改使结果正确。

2.判断用户输入的正整数n是否为素数,直到用户输入1为止。

(1)用while循环读入正整数n

(2)对于每个正整数n,采用for循环判断是否为素数。

(3)打印输出判断结果

3.百钱百鸡,中国古代数学家张丘建在他的《算经》中提出了著名的“百钱

买百鸡问题”:

鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?

提示:

   设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,显然x的值在0~20之间;同理,y的取值范围在0~33之间,可得到下面的不定方程:

                 5x+3y+z/3=100

                 x+y+z=100

   所以此问题可归结为求这个不定方程的整数解。

实验7数组

(一)

一、实验目的

1.掌握一维数组和二维数组的定义、赋值和输入输出的方法

2.掌握字符数组和字符串函数的使用

3.掌握与数组相关的算法(排序算法)

二、实验内容及步骤

1.编写程序,对n个数从小到大排序。

任选一种排序方法进行编程。

2.编写一个程序,循环从键盘接收一批学生的某门课的成绩,并依次保存在数组score的相应元素中,直到输入的成绩为999时结束。

(1)对成绩按从高到低排序,并按排序后的顺序输出所有学生的成绩,

(2)再输入一个学生的成绩,并插入排序后的成绩表中并保持有序,最后再输出所有学生的成绩

(3)再输入一个成绩,并从数组中删除与该数相同的所有同学成绩,最后输出最终的成绩表

实验8数组

(二)

一、实验目的

1.掌握一维数组和二维数组的定义、赋值和输入输出的方法

2.掌握字符数组和字符串函数的使用

3.掌握与数组相关的算法(排序算法)

二、实验内容及步骤

1.找出一个二维数组中的鞍点,即该位置上的元素在所在行为最大,在所在列为最小。

如果没有这样的元素,请打印出相应的信息。

(1)画出此题的流程图。

(2)编写程序求矩阵中所有的鞍点并上机调试。

(3)输入的数据和输出的结果要详细记录。

2.统计一个班的学生成绩。

要求程序具有如下功能:

(1)每个学生的学号和四门功课的成绩从键盘读入。

(2)计算每个学生的总分和平均分。

(3)按平均成绩进行排序,输出排序后的成绩单(包括学号、四门功课的成绩和平均分),给出名次。

如果分数相同,则名次并列,其他学生名次不变。

提示:

调试程序时,可先输入少量学生的成绩作为实验数据。

如可输入3名学生4门课成绩:

学号成绩

970167,72,65,80

970275,82,94,95

970370,74,80,76

实验9函数

(一)

一、实验目的

1.理解和掌握多模块的程序设计与调试的方法

2.掌握函数的定义和声明函数的方法

3.熟悉调用函数时实参和形参的对应关系,以及“值传递”的方式

二、实验内容及步骤

1.用函数实现两个整数交换,设计一个函数swap,实现两个整数的交换。

要求:

在主函数中定义两个整型变量并初始化,然后调用swap函数对两变量的值进行真正交换,最后输出交换后的两变量的值(分析用值传递和地址传递两种方式的结果,体会引用的作用)。

2.在主函数中输入一个十进制数,调用转换函数把这个十进制数转换成二、八、十六进制数。

2.定义一个函数,判断三个整形边长能否构成三角形,如果是三角形,则判断它是否是直角三角形。

1)声明函数judge;

2)实现函数judge,根据输入的三个边长判断是否可以构成一个三角形;

3)在main中调用judge;

4)在main中根据judge的返回值判断是否是三角形,如果构成三角形则判断是否为直角三角形,并给出结论。

实验10函数

(二)

一、实验目的

1.进一步理解和掌握多模块的程序设计与调试的方法

2.熟悉函数的嵌套调用和递归调用的方法

3.练习并掌握数组作为函数参数的用法

二、实验内容及步骤

1.编写程序,对n个数从小到大排序。

(1)任选一种排序方法进行编程。

(2)用sort()函数进行排序。

(3)在主函数中输入数据,调用sort()函数,分别打印出排序前和排序后的结果。

2.两数组对应元素的交换,设计一函数swap,实现对应元素的交换。

要求:

在主函数中定义两个长度相同的整型数组A和B并初始化,然后调用swap函数把两数组的对应元素值进行交换,最后输出交换后的这两个数组的内容。

3.用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。

实验11指针

(一)

一、实验目的

1.理解指针和地址的概念,了解指针变量类型的含义

2.掌握指针变量的初始化、赋值、运算和移动操作,以及通过指针引用变量的方法

3.掌握取变量的地址、数组元素的地址以及字符串地址的方法

4.理解数组名与地址值的关第。

掌握通过指针或地址引用数组元素的方法

5.能正确使用字符串的指针和指向字符串的指针变量

二、实验内容及步骤

1.编写程序:

定义一个变量,一个指针,建立该变量的引用。

对变量进行初始化,并将指针指向该变量,分别通过指针和引用改变该变量的值,并输出结果进行比较分析。

2.编写程序:

任意输入10个整数放于数组中,利用指针访问数组,求出该数组中的最大数max以及最小数min。

3.编写程序:

定义字符串,删掉字符串中的数字字符。

 

实验12指针

(二)

一、实验目的

1.进一步掌握指针的应用

2.能正确使用数组的指针和指向数组的指针变量

3.能正确使用字符串的指针和指向字符串的指针变量

4.理解函数指针

二、实验内容及步骤

1.写一函数,求一个字符串的长度。

(1)本部分要求全部用指针完成;

(2)在main函数中输入字符串,并输出其长度;

(3)本题不能使用strlen()函数;

方法说明:

在主函数中定义一个指向字符串的指针变量pstr,并将输入的字符串的首地址赋值给pstr,然后调用求字符串长度的函数strlenth(char*p),得到字符串的长度。

在函数strlenth(char*p)中,判断*p是否为’\0’,如果不为’\0’,则进行len++的操作,直到遇到’\0’为止。

然后返回len值。

2.编写一个函数,将数组中n个数按反序存放。

(1)在主函数中输入10个数,并输出排好序的数。

(2)编写函数invert()将10个数按反序存放。

3.设一个函数,调用它时,每次实现不同的功能:

(1)求两个数之和;

(2)求两个数之差;(3)求两个数之积。

实验步骤与要求:

(1)在主函数中输入2个数a,b,并输出a,b的和、差和乘积。

(2)分别编写函数add()、sub()、mul()计算两个数的和、差、积。

(3)编写函数process(),分别调用函数add()、sub()、mul()。

实验13结构体和共用体

(一)

一、实验目的

1.掌握结构体类型和结构体变量的定义

2.掌握结构类型变量的定义和使用

3.掌握结构体数组的定义和初始化

4.结构体变量和数组的应用

二、实验内容及步骤

1.下面程序是定义一个结构体,并为其定义结构体变量,对其值输入、输出。

#include

structworker

{intnum;

charsex;

floatsalary;

}work1={100,’m’,1034.5};

main()

{charm,n,t;

structworkerwork2,work3;

work2=work1;

work3.num=300;

m=getchar();

work3.sex=m;

work3.salary=1256.4;

printf(“%f,%d,%s\n”,work1,salary,work2,num,work3.sex);

}

该程序的运行结果是:

2.有五个学生,每个学生的数据包括学号,姓名,三门课的成绩,从键盘输入五个学生的数据,要求打印出每个学生的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均分数)。

要求:

用一个函数输入五个学生的数据;用一个函数求总平均分;用函数找出最高分学生数据,总平均分和最高分的学生的数据都在主函数中输出。

实验14结构体和共用体

(二)

一、实验目的

1.掌握指向结构体类型的指针

2.掌握共用体的概念和使用

3.熟练掌握链表的简单操作

二、实验内容及步骤

1.运行下面程序,写出结果

#include

sructexam

{longnum;

charname[10];

charsex;

floatscore;

};

main()

{structexamstud1,*p=stud1;

charch;

stud1.num=200101;

strcpy(stud1.name,”wang”);

ch=getchar();

stud1.sex=ch;

(*p).score=543;

printf(“%ld,%c,%f,%s”,p->num,p->sex,p->score,p->name);

}

2.运行下面程序,写出结果。

#include

unionlist

{longw;

floatx;

chary;

};

main()

{unionlistdata;

data.w=1234;

scanf(“%f”,&data.x);

data.y=’M’;

printf(“%ld\t%f\t%c\n”,data.w,data.x,data.y);

}

将该程序中的共用体和结构体对比起来理解。

3.定义结点如下形式:

structmenu

{

charname;

intno;

structmenu*next;

};

进行如下操作:

(1)建立一个长度为10的,如上面形式的链表;

(2)在建立的链表中,插入一个新结点(位置自定);

内容如下:

{

name=cc1j

no=2211

next=选定的结点

}

(3)删除第三个结点;

实验15文件操作

一、实验目的

1.掌握文件建立的方法。

2.掌握包含文件操作的程序设计和调试方法。

二、实验内容及步骤

1.从键盘输入一个字符串,,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。

输入的字符串以“!

”结束。

2.建立一个磁盘文件“emploee”,内存放职工的数据。

每个职工的数据包括:

职工姓名、职工号、性别、年龄、住址、工资、文化程度。

要求将职工号、职工名、工资的信息单独抽出来另建一个职工工资文件。

(1)调试程序,输入数据并运行程序。

(2)用type命令显示新建立的文件内容。

三、问题讨论

1.缓冲文件系统和非缓冲文件系统的区别?

2.文件打开和关闭的含义?

为什么要打开和关闭文件

实验16综合实验报告

一、实验目的

能综合运用本课程所学内容进行结构化程序设计

二、实验内容及步骤

一个简单的学生通讯录(包含学号、姓名、电话)

1.运用数据类型(基本、指针、构造)完成程序的数据类型部分的设计;

2.运用基本结构语句(顺序、选择、循环)完成程序的结构部分的设计;

3.运用文件管理方法把数据存储到磁盘文件中。

要求:

学生数据包括:

学号、姓名、电话号码

程序包括的函数有:

主控函数、数据输入函数、数据输出函数、插入数据函数和删除数据函数。

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

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1