C语言程序设计实验指导书Word文档下载推荐.docx
- 文档编号:22233502
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:20
- 大小:24.92KB
C语言程序设计实验指导书Word文档下载推荐.docx
《C语言程序设计实验指导书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验指导书Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
(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位的正整数,判断它是几位数,然后输出各位之积.
{intx,a,b,c,d,n;
请输入个不大于4位的正整数X:
"
);
%d"
x);
if(x>
______________)
n=4;
elseif(x>
n=3;
n=2;
n=1;
a=x/1000;
/*x的个,十,百,千位分别用d,c,b,a表示*/
b=______________________;
c=______________________;
d=______________________;
swith(___)
{
case4:
%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
四,实验报告:
实验四循环控制
(实验课后的下一周的周三,请班长分别收好预习报告和实验报告,交电气学院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;
sum=%d\n"
sum);
(2)main()
{inti=sum=0;
do{sum+=i;
}while(i<
(3)main()
{inti,sum=0;
for(i=1;
i<
10;
++i)
{sum=sum+i;
2,完善程序并回答问题
下列程序用来计算S=1+1/1!
+1/2!
+1/3!
+…+1/N!
{intt,n,i;
floats;
s=__________;
t=___________;
n);
=___________;
t=______________;
s=s+_________________;
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)
三,实验报告:
2,错误原因及其修改记录.
3,实验结果记录.
4,实验体会.
实验五数组
1,掌握一维数组和二维数组的定义,赋值和输入输出的方法.
2,掌握字符数组和字符串函数的使用.
3,掌握与数组有关的算法(特别是排序算法).
1,复习数组的基本知识.
2,复习字符串数组的特点和常用的字符串处理函数.
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)程序
main()
{play(3);
voidprint_star()
{printf("
**********\n"
voidprint_message()
GoodFriend!
\n"
voidplay(n)
intn;
{inti;
=n;
{print_star();
print_message();
运行后出现什么错误为什么应如何修改请上机调试.
(2)以下程序用于计算1+2+3+4+5.
{inti,sum;
=5;
sum=add(i);
add(a)
inta;
{ints=0;
s=s+a;
return(s);
此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.
(3)程序
intx=567;
x=%d,y=%d\n"
x,y);
inty=890
运行程序后出现什么错误为什么如何修改
2,程序填空
本程序的作用是在三位正整数中寻找符合下列条件的整数,它既是完全平方数,又有两位数字相同,例如144,676等,下列程序要找出所有满足上述条件的三位数并输出.
{intn,k,a,b,c;
for(k=10;
;
k++)
___________;
if(n>
999)
__________;
a=n/100;
b=___________;
c=n%10;
if(flag(a,b,c))
N=%d=%d*%d\n"
n,k,k);
flag(x,y,z)
____________;
{return!
((x-y)*(____)*(y-z));
(1)用一个函数来实现将一行字符串中最长的单词输出.此行字符串从主函数传递给该函数.(习题8.10)
(2)写一个函数,输入一个十六进制数,输出相应的十进制数.(习题8.16)
实验七编译预处理
一,实验目的要求:
1,掌握宏定义的方法.
2,掌握文件包含处理方法;
.
3,掌握条件编译的方法.
1,复习宏定义,文件包含,条件编译的概念.
2,复习宏定义,文件包含,条件编译的使用方法.
程序填空:
(1)#include__________
%d\n"
2);
(2)#include_________
#include_________
{inta=4;
sqrt(a));
(3)#include______
#include______
main()
{charstr[12]={'
s'
'
t'
r'
i'
n'
g'
};
strlen(str));
2,编写下列问题的源程序并上机调试运行.
(1)定义一个带参数的宏,使两个参数的值互换.在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值.
在程序主函数使用宏时只能用两个实参,如SWAP(A,B),不能用三个实参.
(2)设计输出实数的格式,包括:
1>
一行输出一个实数;
2>
一行内输出两个实数;
3>
一行内输出三个实数.实数用"
%6.2f"
格式输出.
用一个文件"
print-format.h"
包含以上用#define命令定义的格式.在自己的文件(自己命名)中用#define命令将"
文件包含进来.在程序中用scanf函数读入三个实数给f1,f2,f3.然后用上面定义的三种格式分别输出
(1)f1;
(2)f1,f2;
(3)f1,f2,f3.
(3)用条件编译方法实现以下功能:
输入一行电报文字,可以任选两中输出,一为原文输出;
一为将字母变成其下一字母(如'
a'
变成'
b'
...,'
z'
.其它字符不变).用#define命令来控制是否要译成密码.例如:
#defineCHANGE1
则输出密码.若
#defineCHANGE0
则不译成密码,按原码输出.
用条件编译方法来处理.
实验八指针
1,掌握指针的概念,会定义和使用指针变量.
2,学会使用数组的指针和指向数组的指针变量.
3,学会使用字符串的指针和指向字符串的指针变量.
4,学会使用指向函数的指针变量.
5,了解指向指针的指针的概念及其使用方法.
1,复习变量,变量的地址,指针变量的概念并且明确的区分这三个不同概念.
2,复习指针和数组的结合运用.
3,复习指针的其他理论知识.
程序填空
(1)以下程序调用findmax函数求数组中最大元素在数组中的下标.
#include<
stdio.h>
findmax(int*s,intt,int*k)
{intp;
for(p=0,*k=p;
p<
t;
p++)if(s[p]>
s[*k])__________;
{inta[10],i,k;
for(i=0;
i++)scanf("
a[i]);
findmax(a,10,&
k);
%d,%d\n"
k,a[k]);
(2)以下程序统计从终端输入的字符中每个大写字母的个数.用#作为输入结束标志.
#include__________
{intnum[26],i;
charc;
for(i=0;
26;
i++)num[i]=0;
while(_________!
='
#'
)/*统计从终端输入的大写字母个数*/
if(isupper(c))num[c-65]+=1;
i++)/*输出大写字母和该字母的个数*/
if(num[i])printf("
%c:
______,num[i]);
(3)下面程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据.
#include_________
getone(s)
int**s;
{*s=(int*)malloc(sizeof(int));
assone(a)
int*a;
{scanf("
__________);
outone(b)
int*b;
{printf("
________);
{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<
S2则输出负值.
两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数输出.(习题10.17)
1,回答变量,变量的地址,指针变量的区别.
2,源程序.
3,错误原因及其修改记录.
4,实验结果记录.
5,实验体会.
实验九结构体和共用体
1,掌握结构体类型变量的定义和使用.
2,掌握结构体类型数组的概念和应用.
3,掌握共用体的概念和使用.
4,了解链表的概念,初步学会对链表进行操作.
1,复习结构体的概念和定义方法.
2,复习共用体的概念和定义方法.
程序改错
typedefunion{longx[2];
inty[4];
charz[8];
}MYTYPE;
typedefunionthem;
sizeof(them));
以下程序建立了一个带有头结点的单向链表,结点中的数据可由键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data与不放数据,表空的条件是ph―>
next==NULL).
#include_______
structlist{intdata;
structlist*next;
_______crea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实验 指导书