C语言程序设计实验指导书.docx

上传人:b****8 文档编号:9097392 上传时间:2023-02-03 格式:DOCX 页数:20 大小:24.92KB
下载 相关 举报
C语言程序设计实验指导书.docx_第1页
第1页 / 共20页
C语言程序设计实验指导书.docx_第2页
第2页 / 共20页
C语言程序设计实验指导书.docx_第3页
第3页 / 共20页
C语言程序设计实验指导书.docx_第4页
第4页 / 共20页
C语言程序设计实验指导书.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言程序设计实验指导书.docx

《C语言程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验指导书.docx(20页珍藏版)》请在冰豆网上搜索。

C语言程序设计实验指导书.docx

C语言程序设计实验指导书

实验一C程序环境认识

――掌握在集成环境中编辑、编译、连接和运行C语言程序的方法

(蓝色笔体内容可以不写在实验报告里,理解并掌握即可。

一,实验目的:

1,掌握TC的使用.

2,理解C程序的结构.

3,掌握C程序设计,调试,运行的步骤,方法.

4,理解最简单的C程序设计方法.

二,实验准备:

1,计算机基本操作练习.

2,TC软件使用预习.

3,设计出习题1.5、习题1.6的程序.

三,实验内容:

1.VC6.0或TC程序运行环境;

2.程序调试的全部过程;

3.菜单的用法;

4.常用功能键的用法。

四,实验要求:

1.认真阅读和掌握和本实验相关的教材内容;

2.认真阅读和掌握本章相关内容的程序,例1.1、例1.2、例1.3;

3.上机运行程序;

4.保存和打印出程序的运行结果,并结合程序进行分析;

5.按照你对运行环境的操作需要,编写一简单C程序并运行,打印出文件清单和运行结果。

五,实验步骤:

1,开机,启动TC.

(1)开机.

(2)进入TC目录.

(3)启动TC.

命令格式:

TC[文件名[.扩展名]]

说明:

若缺省文件名,则直接启动.进入TC界面,并显示版本信息.此时按ESC键进入编辑状态.

若给定文件名,(缺省扩展名则默认为.C)则打开该文件(若不存在则新建该文件)进行编辑.

2,TC的使用

(1)启动TC后,进入TC的界面.该界面分为四部分:

菜单区,编辑区,信息区,提示行.

A,菜单区:

TC界面的最上面一行,是TC的主菜单.包括8项:

File文件操作

Edit编辑操作

Run运行

Compile编译

Project工程(项目)

Option选项

Debug调试

Break/Watch中断/监视

每个菜单项下都包含有各项具体功能,用户可以通过选择,执行相应的功能.

B,编辑区.TC界面的主要部分,由标题Edit,状态行和文本编辑区域组成.状态行中指示光标所在行,列.现在是否处于插入状态(若有Insert标志表示处于插入状态,没有则处于改写状态)以及正在编辑的文件名.

C,信息区.由标题message和信息显示区域组成,用来显示编译文件后的错误.单步执行时要监测变量的值等信息.

D,提示行.TC界面的最下面一行,用于提示用户一些最常用的操作:

F1――帮助,F5――窗口的缩放,F6――窗口的切换,F8――单步执行程序,F9――编译连接,F10――激活主菜单.

(2)菜单的操作

A,激活菜单F10或Alt

B,移动光条方向键

C,选择某项回车

D,放弃选择ESC

E,主菜单项的直接选中Alt―高亮度的字符

如:

要选中File按Alt―F

F,子菜单的直接选中选中主菜单项后,直接按高亮度的字母

如:

选中File后,要选中Save按"s"Ⅶ.部分快捷键(直接按该键就会击活菜单项具体的功能)

除前面提示行中列出的以外,常用的还有:

F2――保存

F3――装入文件

F4――从坐标所在位置单步执行

F7――单步跟踪

Alt-F1:

查看最近一次的帮助信息

Alt-F3:

选择文件装入

Alt-F5:

查看运行结果

Alt-X:

退出TC

Ctrl-F1:

查看与光标所在位置内容相关的帮助信息

Ctrl-F2:

取消单步执行

Ctrl-F8:

设置断点

Ctrl-F9:

编译,连接并运行

(3)文件操作

A,新建文件可采用以下方法:

(a)在启动TC时不带文件名,则系统默认为NONAME.C,存盘时再输入文件名.

(b)启动TC时带新文件名.

(c)在TC环境下选择File下的New.

B,打开文件可采用以下方法:

(a)启动TC时带文件名.

(b)在TC环境下选择File下的Load,再输入文件名.

(c)以通过Load打开过的文件再次打开,可选择File下的Pick,进行选择.

C,保存文件可采用以下方法:

(a)选择File下的Save,存盘.若原文件名是NONAME.C,则存盘时还要输入文件名.

(b)选择File下的Writeto,输入文件名,则将文件换名存盘.

(4)编辑操作

TC采用的是全屏幕编辑器,即凡输入过内容的地方都可将光标移到该处直接修改.

A,移动光标:

左移一个字符→

右移一个字符←

上移一行↑

下移一行↓

移动到行首Home

移动到行末End

向下翻页PageDown

向上翻页PageUp

移动到窗口左上角Ctrl-Home

移动到窗口右上角Ctrl-End

移动到文件头Ctrl-PageUp

移动到文件尾Ctrl-PageDown

B,删除内容:

删除光标前的字符Backspace(退格)

删除光标位置上的字符Delete(del)

删除一行Ctrl-Y

C,块操作:

定义块首Ctrl-KB定义块尾Ctrl-KK

块复制Ctrl-KC块移动Ctrl-KV

块删除Ctrl-KY块取消Ctrl-KH

(5)C程序的调试,运行

A,输入程序

B,编译,运行形成可执行文件

选择Compile下的

CompiletoOBJ编译生成目标文件

Compile/linkEXEfile将目标文件连接成可执行文件

Compile/makeEXEfile编译直接生成可执行文件

(程序输入后,用快捷键F9即表示makeexefile,完成编译和连接).

C,执行

选择Run下的Run(Ctrl-F9).

D,查看结果

运行按Alt-F5,查看后按任意键返回.

(6)退出TC

选择File下的Quit或直接按Alt-X.

3.简单的C程序设计,调试,运行.

六,实验报告:

1,源程序.

2,调试过程中出现的错误及修改情况.

3,实验结果.

4,实验的感受及体会.

实验三选择结构程序设计

(蓝色笔体内容可以不写在实验报告里,理解并掌握即可。

一,实验目的:

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

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

3,熟练掌握if语句和switch语句.

二,实验准备:

1,复习关系,逻辑,条件运算符和表达式.

2,复习if语句的三种形式.

3,复习if语句的嵌套并能够正确分析.

4,复习多分支选择switch语句.

5,源程序.

三,实验步骤及内容:

1,运行程序并回答问题

main()

{inta,b,max,min;

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

if(a>b)

{max=a;min=b;}

else

{min=a;max=b;}

printf("max=%d,min=%d\n",max,min);

}

问题:

a,此程序的功能是什么

b,请用条件表达式语句(?

:

)修改程序使之完成相同的功能.

2,输入一个不大于4位的正整数,判断它是几位数,然后输出各位之积.

main()

{intx,a,b,c,d,n;

printf("请输入个不大于4位的正整数X:

");

scanf("%d",&x);

if(x>______________)

n=4;

elseif(x>______________)

n=3;

elseif(x>______________)

n=2;

else

n=1;

a=x/1000;/*x的个,十,百,千位分别用d,c,b,a表示*/

b=______________________;

c=______________________;

d=______________________;

swith(___)

{

case4:

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

_____________________________;

case3:

_____________________________;

_____________________________;

case2:

_____________________________;

_____________________________;

case1:

_____________________________;

_____________________________;

}

}

3,编程

(1)

解答P111习题5.4

(2)

解答P111习题5.5

(3)

解答P111习题5.6

(4)

解答P112习题5.7

(5)

解答P112习题5.8

(6)

解答P112习题5.9

(7)

解答P112习题5.10

四,实验报告:

1,源程序.

2,调试过程中出现的错误及修改情况.

3,实验结果.

4,实验的感受及体会.

实验四循环控制

(蓝色笔体内容可以不写在实验报告里,理解并掌握即可。

(实验课后的下一周的周三,请班长分别收好预习报告和实验报告,交电气学院403室。

一,实验目的:

1.熟悉用while语句,do―while语句和for语句实现循环的方法.

2.掌握在程序设计中用循环的方法实现各种算法(如穷举,迭代,递推等).

二,实验准备:

1,复习while语句,do―while语句和for语句的特点和适用条件.

2,复习continue语句和break语句的区别.

3,源程序.

三,实验步骤及内容:

1,以下程序是用来计算S=1+2+3+…+10,请更正下列程序的错误,并上机调试.

(1)main()

{inti=1;

while(i<10)

sum+=i;

++i;

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

}

(2)main()

{inti=sum=0;

do{sum+=i;

++i;

}while(i<10)

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

}

(3)main()

{inti,sum=0;

for(i=1;i<10;++i)

{sum=sum+i;

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

}

}

2,完善程序并回答问题

下列程序用来计算S=1+1/1!

+1/2!

+1/3!

+…+1/N!

main()

{intt,n,i;

floats;

s=__________;t=___________;

scanf("%d",&n);

for(i=1;i<=___________;++i)

{

t=______________;

s=s+_________________;}

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

}

问题:

1)此程序用双循环怎么实现请写出程序上机调试(提示:

内循环计算阶乘,外循环实现累加).

(2)若要计算S=1/2!

+1/4!

+1/6!

+…+1/10!

用哪种算法比较合适请编程上机调试.

3,编写下列问题的源程序并上机调试.

(1)输入两个正整数,求其中最大公约数和最小公倍数.(习题6.1)

(2)输入一行字符,分别统计出其中的英文字母,空格,数字和其它字符的个数.(习题6.2)

(3)用牛顿迭代法求方程2x^3-4x^2+3x-6=0在1.5附近的根.(习题6.12)

(4)猴子吃桃问题.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前天剩下的一半零一个.到第10天早上想再吃时,见只剩下一个桃子了.求第一天共摘了多少桃子.(习题6.10)

三,实验报告:

1,源程序.

2,错误原因及其修改记录.

3,实验结果记录.

4,实验体会.

实验五数组

一,实验目的:

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

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

3,掌握与数组有关的算法(特别是排序算法).

二,实验准备:

1,复习数组的基本知识.

2,复习字符串数组的特点和常用的字符串处理函数.

3,源程序.

三,实验步骤及内容:

1,编程求两个3*3二维数组的和:

2,编程计算3*3矩阵两条对角线元素之和:

3,编写下列问题的源程序并上机调试运行.

(1)用选择法对10个整数排序(10个整数用scanf函数输入).(习题7.2)

(2)找出一个二维数组的"鞍点",即该位置上的元素在该行上最大,在该列上最小.也可能没有鞍点.(习题7.8)

此二维数组可以设定如下:

98020540

90-60961

210-310189

数组元素的值用赋初值方法在程序中指定.

(3)将两个字符串连接起来,不要用strcat函数.(习题7.13)

四,实验报告:

1,源程序.

2,错误原因及其修改记录.

3,实验结果记录.

4,实验体会.

实验六函数

一,实验目的:

1,掌握定义函数的方法.

2,掌握函数实参与形参的对应关系,以及"值传递"的方式.

3,掌握函数的嵌套调用和递归调用的方法.

4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.

二,实验准备:

1,复习函数调用的基本理论知识.

2,复习函数的嵌套调用和递归调用的方法.

3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用.

4,源程序.

三,实验步骤及内容:

1,运行程序并回答问题

(1)程序

main()

{play(3);

}

voidprint_star()

{printf("**********\n")

}

voidprint_message()

{printf("GoodFriend!

\n");

}

voidplay(n)

intn;

{inti;

for(i=1;i<=n;++i)

{print_star();

print_message();

}

}

问题:

运行后出现什么错误为什么应如何修改请上机调试.

(2)以下程序用于计算1+2+3+4+5.

main()

{inti,sum;

for(i=1;i<=5;++i)

sum=add(i);

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

}

add(a)

inta;

{ints=0;

s=s+a;

return(s);

}

问题:

此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.

(3)程序

intx=567;

main()

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

}

inty=890

问题:

运行程序后出现什么错误为什么如何修改

2,程序填空

本程序的作用是在三位正整数中寻找符合下列条件的整数,它既是完全平方数,又有两位数字相同,例如144,676等,下列程序要找出所有满足上述条件的三位数并输出.

main()

{intn,k,a,b,c;

for(k=10;;k++)

{

___________;

if(n>999)

__________;

a=n/100;

b=___________;

c=n%10;

if(flag(a,b,c))

printf("N=%d=%d*%d\n",n,k,k);

}

}

flag(x,y,z)

____________;

{return!

((x-y)*(____)*(y-z));

}

3,编写下列问题的源程序并上机调试运行.

(1)用一个函数来实现将一行字符串中最长的单词输出.此行字符串从主函数传递给该函数.(习题8.10)

(2)写一个函数,输入一个十六进制数,输出相应的十进制数.(习题8.16)

四,实验报告:

1,源程序.

2,错误原因及其修改记录.

3,实验结果记录.

4,实验体会.

实验七编译预处理

一,实验目的要求:

1,掌握宏定义的方法.

2,掌握文件包含处理方法;.

3,掌握条件编译的方法.

二,实验准备:

1,复习宏定义,文件包含,条件编译的概念.

2,复习宏定义,文件包含,条件编译的使用方法.

3,源程序.

三,实验步骤及内容:

程序填空:

(1)#include__________

main()

{printf("%d\n",2);

}

(2)#include_________

#include_________

main()

{inta=4;

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

}

(3)#include______

#include______

main()

{charstr[12]={'s','t','r','i','n','g'};

printf("%d\n",strlen(str));

}

2,编写下列问题的源程序并上机调试运行.

(1)定义一个带参数的宏,使两个参数的值互换.在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值.

说明:

在程序主函数使用宏时只能用两个实参,如SWAP(A,B),不能用三个实参.

(2)设计输出实数的格式,包括:

1>一行输出一个实数;

2>一行内输出两个实数;

3>一行内输出三个实数.实数用"%6.2f"格式输出.

用一个文件"print-format.h"包含以上用#define命令定义的格式.在自己的文件(自己命名)中用#define命令将"print-format.h"文件包含进来.在程序中用scanf函数读入三个实数给f1,f2,f3.然后用上面定义的三种格式分别输出

(1)f1;

(2)f1,f2;

(3)f1,f2,f3.

(3)用条件编译方法实现以下功能:

输入一行电报文字,可以任选两中输出,一为原文输出;一为将字母变成其下一字母(如'a'变成'b',...,'z'变成'a'.其它字符不变).用#define命令来控制是否要译成密码.例如:

#defineCHANGE1

则输出密码.若

#defineCHANGE0

则不译成密码,按原码输出.

用条件编译方法来处理.

四,实验报告:

1,源程序.

2,错误原因及其修改记录.

3,实验结果记录.

4,实验体会.

实验八指针

一,实验目的:

1,掌握指针的概念,会定义和使用指针变量.

2,学会使用数组的指针和指向数组的指针变量.

3,学会使用字符串的指针和指向字符串的指针变量.

4,学会使用指向函数的指针变量.

5,了解指向指针的指针的概念及其使用方法.

二,实验准备:

1,复习变量,变量的地址,指针变量的概念并且明确的区分这三个不同概念.

2,复习指针和数组的结合运用.

3,复习指针的其他理论知识.

4,源程序.

三,实验步骤及内容:

程序填空

(1)以下程序调用findmax函数求数组中最大元素在数组中的下标.

#include

findmax(int*s,intt,int*k)

{intp;

for(p=0,*k=p;ps[*k])__________;

}

main()

{inta[10],i,k;

for(i=0;i<10;i++)scanf("%d",&a[i]);

findmax(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

(2)以下程序统计从终端输入的字符中每个大写字母的个数.用#作为输入结束标志.

#include__________

#include__________

main()

{intnum[26],i;

charc;

for(i=0;i<26;i++)num[i]=0;

while(_________!

='#')/*统计从终端输入的大写字母个数*/

if(isupper(c))num[c-65]+=1;

for(i=0;i<26;i++)/*输出大写字母和该字母的个数*/

if(num[i])printf("%c:

%d\n",______,num[i]);

}

(3)下面程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据.

#include_________

getone(s)

int**s;

{*s=(int*)malloc(sizeof(int));}

assone(a)

int*a;

{scanf("%d",__________);}

outone(b)

int*b;

{printf("%d\n",________);}

main()

{int*p;

getone(&p);

assone(p);

outone(p);

}

2,编写下列问题的源程序并上机调试运行(要求用指针处理问题).

(1)输入三个整数,按由小到大的顺序输出,然后将程序改为:

输入三个字符串,按由小到大顺序输出.(习题10.1)

(2)将一个3*3的矩阵转置(将矩阵的行和列转换),用一函数实现.在主函数中用scanf函数输入以下矩阵元素:

135

7911

131519

将数组名作为函数实参.函数调用后在主函数中输出已转置的矩阵.(习题10.9)

(3)用一个函数实现两个字符串的比较,即自己写一个strcmp函数:

strcmp(s1,s2).

如果s1=s2,则函数返回值为0;如果s1≠s2,返回他们二者第一个不同字符的ASCII码差值(如"BOY"与"BAD",第二个字母不同,"O"与"A"之差为79-65=14);如果s1>s2,则输出正值;如果s1

两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数输出.(习题10.17)

四,实验报告:

1,回答变量,变量的地址,指针变量的区别.

2,源程序.

3,错误原因及其修改记录.

4,实验结果记录.

5,实验体会.

实验九结构体和共用体

一,实验目的:

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

2,掌握结构体类型数组的概念和应用.

3,掌握共用体的概念和使用.

4,了解链表的概念,初步学会对链表进行操作.

二,实验准备:

1,复习结构体的概念和定义方法.

2,复习共用体的概念和定义方法.

3,源程序.

三,实验步骤及内容:

程序改错

typedefunion{longx[2];

inty[4];

charz[8];

}MYTYPE;

typedefunionthem;

main()

{printf("%d",sizeof(them));

}

程序填空

以下程序建立了一个带有头结点的单向链表,结点中的数据可由键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data与不放数据,表空的条件是ph―>next==NULL).

#include_______

structlist{intdata;structlist*next;};

_______crea

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

当前位置:首页 > 考试认证 > 从业资格考试

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

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