C语言实验.docx
- 文档编号:7560099
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:37
- 大小:227.90KB
C语言实验.docx
《C语言实验.docx》由会员分享,可在线阅读,更多相关《C语言实验.docx(37页珍藏版)》请在冰豆网上搜索。
C语言实验
C程序设计实验报告
大学实验报告
学生姓名:
学号:
专业班级:
实验1C语言的编程环境
一.实验目的
1.初步了解C程序的编译、连接和运行的过程。
2.掌握和理解C程序的结构。
二.实验内容
1.使用TC
2.运行一个简单的C程序
三.实验环境
PC微机;
DOS操作系统或Windows操作系统;
TurboC程序集成环境。
四.实验步骤
1.启动TurboC
如果用户计算机系统已经安装了TurboC编译系统,则在DOS命令状态下键入命令tc。
进入TurboC集成环境后,首先在屏幕上显示TurboC主菜单窗口。
在该窗口,有8个菜单条目。
每一个菜单的意义如下:
File处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS。
Edit建立、编辑源文件。
Run控制运行程序。
如果程序已经编译连接好,且Debug/SourceDebugging以及Option/Compiler/Codegeneration/OBJDebugInformation开关置为On,则可以用此菜单初始化调试阶段。
Compile编译并生成目标程序与可执行文件。
Project允许说明程序中包含哪些文件的管理条目。
Options可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录IncludeOutput及Library文件目录,保存编译任选项和从配置文件加载任选。
Debug检查、改变变量的值,查找函数,程序运行时查看调用栈。
选择程序编译时是否在执行行代码中插入调试信息。
Break/Watch增加、删除、编辑监视表达式,及设置、清除、执行至断点。
特别要指出的是,除了Edit项外,每一个菜单又有对应的子菜单。
而选择Edit项目后,只是进入编辑器。
为了从主菜单中选择所需要的功能,可以用以下两种方式之一:
(1)按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键(←与→)选择需要的菜单,然后按回车(Enter)键。
(2)直接按Alt+主菜单条目中的首字母(分别为F,E,R,C,P,O,D,B),此时就会出现相应的子菜单。
例如,按Alt+F表示选择文件子菜单(File)。
当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(↑与↓)来移动该高亮度线,从而选择所需要的功能。
在菜单调用时,按Esc键后将直接返回到活动窗口。
2.输入程序
输入以下程序
#include
voidmain()
{
printf("HelloWorld!
\n");
}
操作结果:
3.运行程序
按Ctrl+F9运行程序,如果没有报错,可以按Alt+F5查看运行结果,再按空格键回到编辑窗口。
4.保存文件
按F2键,弹出一个对话框,在对话框中输入文件名,如:
exam1.c。
5.退出TC程序
按Alt+X键,弹出对话框,提示是否真的要退出TC,如果输入Y就会退出TC。
6.打开已经存在的文件
(1)首选启动TC。
(2)按F3,弹出对话框。
(3)在该对话框中,输入文件名即可。
五.思考题
总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。
六.实验小结
通过本实验大概的了解VC的最基本操作,但还不是很熟练,要多练习。
大学实验报告
学生姓名:
学号:
专业班级:
实验2数据类型、运算符和表达式
一.实验目的
1.了解C语言中数据类型的意义;
2.掌握不同数据类型之间的赋值的规律;
3.学会有关C语言的有关运算符,以及包含这些运算符的表达式,特别是是++和—运算符的使用。
4.进一步熟悉C程序的编辑环境。
二.实验内容
1.用printf函数来输入表达式运行结果
2.观察实验步骤中表达式的结果
三.实验环境
PC微机
DOS操作系统或Windows操作系统
TurboC程序集成环境
四.实验步骤
#include
voidmain()
{
charc1='a',c2='b',c3='c',c4='\101',c5='\116';
printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c%c\n",c4,c5);
}
操作结果:
五.思考题
1.“=”和“==”有什么区别?
2.“&”和“&&”、“|”和“||”有什么区别?
六.实验小结
书上许多细节还没掌握,导致错误有时找好久,需要加强。
大学实验报告
学生姓名:
学号:
专业班级:
实验3控制语句
一.实验目的
1.熟练掌握if、if…else、if…elseif语句和switch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。
2.熟练掌握while语句、do...while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。
3.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。
进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
二.实验内容
1.选择结构程序设计;
2.if语句的使用;
3.使用switch语句实现多分支选择结构;
4.三种循环语句的应用;
5.循环结构的嵌套;
6.break和continue语句的使用。
三.实验环境
PC微机
DOS操作系统或Windows操作系统
TurboC程序集成环境
四.实验步骤
1.编程实现:
输入一个整数,将其数值按照①小于10,②10~99,③100~999,④1000以上四个类别分类并显示。
要求:
(1)将变量定义为整型。
(2)输入整数前,利用puts()/printf()给出提示信息。
(3)输出结果时要有必要的说明,例如:
输入358时,显示358is100to999。
(4)该程序利用if语句实现。
运行程序,分别输入9,21,321,4321数据检查输出信息的正确性。
编写的程序:
#include
voidmain()
{
intx;
printf("Pleaseinputanumber:
\n");
scanf("%d",&x);
if(1000 printf("%disbigthanorequal1000\n",x); elseif(99 printf("%dis100to999\n",x); elseif(9 printf("%dis10to99\n",x); else printf("%dislessthan10\n",x); } 操作结果: 2.编写程序: 根据公式 ,输出π的值。 要求: (1)变量π为单精度类型,n为整型; (2)计算当n的取值分别为20,50,100,200时的π值,说明什么问题? 编写的程序: #include voidmain() { ints; floati,n,a,pi; n=1;i=1;pi=0;a=1; printf("Pleaseinputn: \n"); scanf("%d",&s); while(n<=s) { pi=pi+a; i=-i; n=n+2; a=i/n; } pi=pi*4; printf("%f\n",pi); } (3)修改程序,不给出n值,而改为求π值,直到最后一项的数值小于10-4为止。 (4)对修改后的程序,输出π值以及总的项数n。 输出格式为: π=值;n=值。 修改之后的程序: #include #include voidmain() { ints,j; floati,n,a,pi; n=1;i=1;pi=0;a=1; while(fabs(a)>1e-4) { pi=pi+a; i=-i; n=n+2; a=i/n; j++; } pi=pi*4; printf("pi=%f\n",pi); printf("n=%d",j); } 操作结果: 3.从键盘输入一个0~1000之间的任意整数,输出该整数的所有因子(例如: 输入12,其因子为1,2,3,4,6,12)。 要求: (1)采用while循环语句实现。 (2)输出格式为: Input: 12 Output: 1,2,3,4,6,12 #include voidmain() { inti,s; i=1; printf("Input: "); scanf("%d",&s); printf("\n"); printf("Output: "); while(i<=s) { if(s%i==0) printf("%d,",i); i++; } printf("\n"); } 4.编程实现: 由用户从键盘输入一串字符(以回车键结束),统计其中数字、大、小写字母、空格、其它字符的个数。 要求: (1)通过键盘输入字符。 (2)给出相应的输入/输出信息提示。 并按照数字、大写字母、小写字母、空格、其它字符数的顺序输出结果。 #include voidmain() { inta,b,t,d,e; charc;charstr[1000]; a=0;b=0;t=0;d=0;e=0; printf("Pleaseenterastringofcharacters: \n"); while((c=getchar())! ='\n') { if(c>='0'&&c<='9') a++; elseif(c>='A'&&c<='Z') b++; elseif(c>='a'&&c<='z') t++; elseif(c=='') d++; else e++; } printf("number=%d\ncapitalletter=%d\nsmallletter=%d\nblackspace=%d\nother=%d \n",a,b,t,d,e); } 5.计算并输出1000以内最大的10个素数以及它们的和。 要求: (1)在程序内部加必要的注释。 (2)由于偶数不是素数,可以不考虑对偶数的处理。 (3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 (4)输出形式为: 素数1+素数2+素数+…+素数10=总和值。 #include #include voidmain() { intn,k,i,j,sum; sum=0;j=0; for(n=999;n>0;n=n-2) { k=sqrt(n); for(i=3;i<=k;i++) { if(n%i==0)break; } if(i>=k+1) { sum=sum+n; j++; if(j<10) printf("%d+",n); elseif(j==10) printf("%d=",n); } } printf("%d\n",sum); if(j<10) printf("Smallerthan1000numberhavenotenough10\n"); } 五.思考题 1.对于多分支选择结构何时使用if语句的嵌套,何时使用switch语句? 2.小结三种形式的循环使用的区别。 六.实验小结 比较复杂的实验我觉得,编程不是件轻松的事 大学实验报告 学生姓名: 学号: 专业班级: 实验4函数 一、实验目的 1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。 掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法; 2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法; 3.在编程过程中加深理解函数调用的程序设计思想。 二.实验内容 1.多模块的程序设计与调试的方法; 2.函数的定义和调用的方法; 3.用递归方法进行程序设计。 三.实验环境 PC微机 DOS操作系统或Windows操作系统 TurboC程序集成环境 四.实验步骤 1.编写一个函数primeNum(intnum),它的功能是判别一个数是否为素数。 如果num是素数,返回该数;否则返回0值。 要求: (1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。 输出格式为: numisprime或numisnotprime。 (2)分别输入以下数据: 0,1,2,5,9,13,59,121,运行程序并检查结果是否正确。 #include voidmain() { intnum,s; intprimeNum(intnum); printf("Pl“aseiuputanumber: ");”scanf("%d“,&”um); s=primeNum(num); if(s==0||num<2) printf("%d“isnotprime\n",n”m); else printf("%d“isprime\n",n”m); } intprimeNum(intnum) { inti,j; for(i=2;i { if(num%i==0) j=0;break; } if(i>=num) j=num; return(j); } 2.编写函数computNum(intnum),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如: 输入数据是123,返回值为6)。 要求: num由主函数输入,调用该函数后,在主函数内输出结果。 #include voidmain() { intcomputNum(intnum); inta; printf("Pl“aseinputnumbera: ");”scanf("%d“,&”); printf("%d“n",c”mputNum(a)); } intcomputNum(intnum) { intsum; sum=0; for(;num>0;) { sum=sum+num%10; num=num/10; } return(sum); } 3.编写函数,mulNum(inta,intb),它的功能是用来确定a和b是否是整数倍的关系。 如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: (1)在主函数中输入一对数据a和b,调用该函数后,输出结果并加以相应的说明。 例如: 在主函数中输入: 10,5,则输出: 10ismultipleof5. (2)分别输入下面几组数据进行函数的正确性测试: 1与5、5与5、6与2、6与4、20与4、37与9等,并对测试信息加以说明。 #include voidmain() { intmulNum(inta,intb); intx,y; printf("Pl“aseinputnumberx,y\n");”scanf("%d“d",&”,&y); if(mulNum(x,y)==1) printf("%d“ismultiple%d\n",x”y); else printf("%d“isn't’ultiple%d\n",x”y); } intmulNum(inta,intb) { ints; if(a>=b&&a%b==0) s=1; else s=0; return(s); } 4.编写一个计算组合数的函数combinNum(intm,intn)。 计算结果由函数返回。 计算组合数的公式是: c(m,n)=m! /(n! *(m-n)! ) 要求: (1)从主函数输入m和n的值。 对m>n、m (2)对m>n、m (3)修改程序,把两个函数分别放在两个程序文件中,作为两个文件进行编译、链接和运行。 #include voidmain() { intcominNum(intm,intn); intn,m; printf("Pl“aseinputnumberm,n\n");”scanf("%d“d",&”,&n); if(n printf("%d“n",c”minNum(m,n)); elseif(n==m) printf("1"“;”else printf("It“isnomeaning\n");”} intcominNum(intm,intn) { inti,j,k,s,t,v,z; s=1;t=1;v=1; for(i=1;i<=m;i++) s=s*i; for(j=1;j<=n;j++) t++; for(k=1;k<=m-n;k++) v++; z=s/(t*v); return(z); } 5.整数a,b的最大公约数是指既能被a整除又能被b整除的最大整数。 整数a,b的最小公倍数是指既是a的倍数又是b的倍数的最小整数。 编写两个函数,一个函数gcd()的功能是求两个整数的最大公约数,另一个函数mul()的功能是求两个整数的最小公倍数。 要求: (1)两个整数在主函数中输入,并在主函数中输出求得的最大公约数和最小公倍数。 (2)首先将两个整数a和b作为实参传递给函数gcd(),求出的最大公约数后,由函数gcd()带值返回主函数,然后将最大公约数与两个整数a、b一起作为实参传递给函数mul(),以此求出最小公倍数,再由函数mul()带值返回主函数。 #include voidmain() { inta,b,c; intgcd(inta,intb); intmul(inta,intb,intc); printf("Pl“aseinputnumberaandb\n");”scanf("%d“d",&”,&b); c=gcd(a,b); printf("ma“an=%d\n",c”; printf("mi“m=%d\n",m”l(a,b,c)); } intgcd(inta,intb) { inti; if(a>b) i=b; else i=a; for(;i>=1;i--) { if(a%i==0&&b%i==0) break; } return(i); } intmul(inta,intb,intc) { ints,t; t=a/c; s=t*b; return(s); } (3)修改函数gcd(),函数gcd()采用递归调用的编写方法,两个整数a和b的最大公约数的递归公式是: 如果b=0,那么gcd(a,b)=x,否则gcd(a,b)=gcd(b,a%b)。 然后将最大公约数与两个整数a、b一起传递给函数mul(),求出最小公倍数,再由函数mul()将最小公倍数返回主函数。 (4)修改程序,采用全局变量的处理方法,将最大公约数和最小公倍数都设为全局变量,分别用函数gcd()和函数mul()求最大公约数和最小公倍数,但其值不是由函数返回,而是通过全局变量在函数之间传递的特性将结果反映在主函数中。 #include intmaxan=1,minm=1; voidmain() { inta,b; voidgcd(inta,intb); voidmul(inta,intb,intmaxan); printf("Pl“aseinputnumberaandb\n");”scanf("%d“d",&”,&b); gcd(a,b); mul(a,b,maxan); printf("ma“an=%d\n",m”xan); printf("mi“m=%d\n",m”nm); } voidgcd(inta,intb) { if(a>b) maxan=b; else maxan=a; for(;maxan>=1;maxan--) { if(a%maxan==0&&b%maxan==0) break; } } voidmul(inta,intb,intmaxan) { minm=a/maxan*b; } 五.思考题 1.小结函数的定义及调用方法; 2.小结函数中形参和实参的结合规则; 3.编写和调试包含多模块的程序时,容易出现什么样的错误? 根据自己的实践总结一下。 六.实验小结 对递归还不是很熟悉,要多加练习 大学实验报告 学生姓名: 学号: 专业班级: 实验5数组 一.实验目的 1.掌握数组的基本概念,包括: 数组的定义、数组的类型、数组的初始化、数组的赋值、数组元素下标的范围、数组元素的正确以及引用数组元素的输入/输出。 2.掌握字符数组与字符串的使用方法。 理解字符数组与其它数组的区别、理解字符串及其特点。 掌握常用的字符串处理库函数的用法并清楚对字符串的简单处理。 3.掌握与数组相关的算法,包括排序算法和查找算法等。 二.实验内容 有关数组的程序设计 三.实验环境 PC微机 DOS操作系统或Windows操作系统 TurboC程序集成环境 四.实验步骤 1.编程实现: 对任意一个一维数组,从中找出数组元素的最大值和最小值。 要求: (1)数组为整型数组(10个元素)。 (2)使用scanf函数实现数组元素的输入。 在输入前给出必要的提示。 (3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。 inti,j,k,max,min,a[10]; printf("Pleaseinputarraya[10]\n"); for(i=0;i<10;i++) scan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验