C语言上机试题及答案_第1页
C语言上机试题及答案_第2页
C语言上机试题及答案_第3页
C语言上机试题及答案_第4页
C语言上机试题及答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 Visual C+6.0 的使用及顺序结构程序设计一、实验目的1、掌握启动和退出VC6 的方法。2、熟悉 VC6 开发环境。3、初步掌握简单程序的上机操作基本步骤,熟悉 C 单文件程序的输入、 编译、链接和运行过程。4、初步掌握程序的编辑修改和调试。5、熟练使用赋值运算、算术运算等表达式。6、熟练使用标准输入、输出函数及各种数据类型的格式说明符。二、实验内容1、下面 C 语言程序,其功能是显示字符串“欢迎同学们来到华北水院计算中心! ”。 请同学们按照下面的实验指导学习VisualC+6 0的使用。1启动 VisualC+6 0 开发环境(1)单击“开始”按钮,选择“程序” “ Mic

2、rosoft Visual Studio 60 菜单项,单击 “ MicrosoftVisualC+6 0”,屏幕出现标题为 “当时的提示 ”的窗口。(2) 单击“结束”按钮,关闭窗口,进入VC6.0 开发环境的主窗口。2使用 Visual C+6.0 对一个 C 程序进行编辑、编译、连接和运行。分析Visual C+6.0 中程序的开发过程与其它高级语言的开发过程相仿,都要经过编辑、编译、 连接和运行四个步骤。步骤 编辑图 1-1 New 对话框编辑是将 C 源程序输入计算机的过程。在 Visual C+6.0 主界面下,点击 File 菜单,选择 New 菜单项,即可出现 New 对话框,

3、如图 1-1 所示。在弹出窗口中的 Files 标签页下,选择 C + Source File 。在选项卡右面的 File 编辑框里输入文件名如 “ Exa.c ”, 在 Location 编辑框里输 入文件路径,如 “d:test 。”点击 OK 按钮。将出现编辑窗口,如图 1-2 所示。 在图 1-2 所示的 右端编辑窗口里输入以下 C 源程序并保存文件。include void main()printf( 欢迎同学们来到华北水院计算中心! ) 图 1-2 编辑窗口 编译编译是使用系统提供的编译器将文本文件 Exa.c 生成机器语言的过程,结果为 Exa.obj ,由 于没有得到系统分配的

4、绝对地址,还不能直接运行,如图 1-3 所示。选择 Build 菜单下的 Co mpile Exa.c ,计算机将完成对当前源程序的编译。按提示建立默认工程空间。编译无错时,将 源程序 Exa.c 编译为目标文件 Exa.obj 。 编译结果如图 1-4 所示。如果出现运行错误,应该分 析错误的原因,例如,是输入数据错误,还是代码错误;如果需要修改源程序文件,还需重 新编译、链接和执行。改正编译窗口下方指出的两个错误,直至编译成功,如图 1-5 所示。图 1-3 编译源程序图 1-4 编译结果图 1-5 编译成功 连接连接是将目标文件 Exa.obj 转换为可执行文件 菜单下的 Build E

5、xa.exe 。连接无错时,将目标文件Exa.exe 的过程。如图 1-6 所示选择BuildExa.obj 连接为 Exa.exe 。图 1-6 源程序 运行菜单下运行是执行可执行文件 Exa.exe ,屏幕输出运行结果。如图 1-7 所示选择 Build 的 Execute Exa.exe 。图 1-7 运行程序运行结果如图1-8 所示:图 1-8 运行结果3关闭系统工作区空间单击“文件关闭工作区”菜单命令,关闭系统工作区空间。此时读者可以开始输入调试 第 (2) 个 C 程序文件。4退出 VC6.0 开发环境单击主窗口右上角的“关闭”按钮,退出VC6.0 。2、验证程序,熟悉 VC6.0

6、 编程环境及调试程序的步骤。已知三角形三条边长a, b,c,计算三角形面积公式为s=0.5*(a+b+c)area s(s a)(s b)(s c)编写程序,要求从键盘输入a,b,c 的值,计算并输出三角形面积。其中源程序代码如下:#include#includevoid main()/ 输入三角形的三条边/求三角形的面积double a,b,c,s,area; printf(input a,b,c:); scanf(%lf,%lf,%lf,&a,&b,&c);s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c) prinf(area=%fn,area);具

7、体要求:( 1)在 VC6.0 环境中输入上述源程序。( 2 )对源程序进行编译连接,若有错误请调试修改。(3) 运行程序,并输入三条边长,观察程序运行结果。图 1-9 为程序运行时,当输入三条边长分别为3,4,5 时的运行结果,可作为参考。图 1 - 9 上述程序的运行结果三、问题讨论1、使用 printf 函数输出数据时如果想使数据左对齐该如何设置?2、使用 scanf 函数时,输入项为何必须是变量地址而不是变量名?四、实验总结1 总结本次实验完成情况、相关知识掌握情况2 总结本次实验编辑、编译、连接、运行所取得的经验3 分析本次实验出现的主要错误最直接原因实验二 选择结构程序设计一、实验

8、目的1、熟悉 VC6.0 编程环境。2、进 一步熟悉用 VC6.0 调试 C 语言源程序的过程。3、熟练使用关系表达式和逻辑表达式作为 if 语句的条件判断。4、熟练掌握 if 语句和 switch 语句的使用方法。二、实验内容1、身高预测 每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明, 影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后身高与其父母身 高和自身性别密切相关。设 faHeight 为其父身高, moHeight 为其母身高,身高预测公式为:男性成人时身高= (faHeight + moHeight) * 0.54(cm)女性成人

9、时身高= (faHeight * 0.923 + moHeight) / 2(cm)此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高 1.5% 。编程从键盘输入你的性别(用字符型变量sex 存储,输入字符 F 表示女性,输入字符 M 表示男性) 、父母身高(用实型变量存储, faHeight 为其父身高, moHeight 为其母身高) 、是否喜 爱体育锻炼(用字符型变量 sports 存储,输入字符 Y表示喜爱,输入字符 N 表示不喜爱) 、是 否有良好的饮食习惯等条件(用字符型变量 diet 存储,输入字符 Y 表示喜爱,输入字符 N表示 不喜爱) ,利

10、用给定公式和身高预测方法对你的身 高进行预测。程序代码: #include main()char sex; /* char sports; /* char diet;/*float myHeight; /* float faHeight; /* float moHeight; /* printf(孩子的性别 */ 是否喜欢体育运动 */ 是否有良好的饮食习惯 */孩子身高 */父亲身高 */母亲身高 */你是男孩 (M)还是女孩 (F):);scanf( %c, &sex); /*在前加一个空格,将存于缓冲区的回车符读入 */printf( 你爸多高 (cm):);scanf(%f, &faH

11、eight); printf( 你妈多高 (cm):);scanf(%f,&moHeight);printf( 你喜欢运动吗 (Y/N)?);scanf( %c, &sports); /*在前加一个空格,将存于缓冲区的回车符读入 */printf( 你有一个良好的生活习惯吗 (Y/N)?);scanf( %c, &diet); /*在前加一个空格,将存于缓冲区的回车符读入 */if (sex=M|sex=m)myHeight = (faHeight + moHeight) * 0.54; elsemyHeight = (faHeight * 0.923 + moHeight)/2.0; if

12、(sports =Y|sports=y)myHeight = myHeight * ( 1 + 0.02);if (diet =Y|diet=y) myHeight = myHeight * (1 + 0.015);printf( 你将来的身高是 %f(cm)n,myHeight); 设计多组测试数据对程序进行测试,并观察运行结果。将程序的运行情况写在下面。运行结果: 自己弄运行信息结果吧2、使用 switch 语句实现下面程序输入一个学生的两门课成绩(百分制),计算该学生的总分并要求输出成绩等级A、 B、 C、D、 E。总分在 180分以上为 A, 160179分为 B,140159分为 C

13、,120139分为 D, 120 分以下为 E。具体要求: 学生的两门课成绩通过键盘输入,成绩应该都为整数,输入之前要有提示信息。若输入的成绩不是百分制成绩,则给出错误提示信息,并且不再进行下面的等级评价;若输入的成 绩是百分制成绩,则计算总分,并根据要求评价等级。按下面形式输出结果:总分 等级如: 186 A把正确的程序源代码写在下面。 程序代码:#include main()int score1,score2 ,sum,mark; printf( 请输入你的成绩: ); scanf(%d%d,&score1,&score2); sum=score1+score2;mark=sum/10;/

14、* 采取整除方法,将 mark 取值压缩到有限的去值范围内 */switch(mark)case 20: case 19: case 18:printf(%dAn,sum);break; case 17: case 16:printf(%dBn,sum);break;case 15: case 14:printf(%dCn,sum);break; case 13: case 12:printf(%dDn,sum);break;case 11: case 10: case 9: case 8: case 7: case 6: case 5:case 4:case 3:case 2:case 1:

15、case 0:printf(%d-En,sum);break;default:printf( 输入错误 n); /* 处理非法数据 */设计多组测试数据对程序进行测试,并观察运行结果。将程序的运行情况写在下面。运行结果: 自己弄运行信息结果吧三、问题讨论在使用 switch 语句时 , switch 和 case 后值的类型要求以及 default 子句和 break 语句的位置有什么需要 注意的地方?举例说明四、实验总结1 总结本次实验完成情况、相关知识掌握情况2 总结本次实验编辑、编译、连接、运行所取得的经验3 分析本次实验出现的主要错误最直接原因实验三 循环结构程序设计一、实验目的5、熟

16、 练掌握 while 语句, do-while 语句和 for 语句的格式和功能,能够用这些语句实现循环 结构程序设计的方法。6、熟 练掌握循环语句嵌套使用的基本形式,能够用循环语句实现多重循环。7、掌 握在循环结构程序设计中使用break 语句和 continue 语句改变程序流程。8、通 过编程和调试程序,加深对while 语句、 do while 语句和 for 语句的理解,学习编程和测试的基本方法。9、实 验前复习 while 语句、 do while 语句和 for 语句的概念。二、实验内容1. 打印 100-200 之间的所有素数(按照每行 5 个显示) 程序代码:对程序进行测试,

17、并观察运行结果。将程序的运行情况写在下面。运行结果: 2. 编程输出如下上三角形式的九九乘法表。1 2 3 4 5 6 7 8 91 2 3 45678 94 6 810121416 189 1215182124 271620242832 3625 30 35 40 4536 42 48 5449 56 6364 7281程序代码:对程序进行测试,并观察运行结果。将程序的运行情况写在下面。运行结果: 三、问题讨论break 语句和 continue 语句在循环结构中使用时有何区别?举例说明四、实验总结1 总结本次实验完成情况、相关知识掌握情况2 总结本次实验编辑、编 译、连接、运行所取得的经验

18、3 分析本次实验出现的主要错误最直接原因实验四 使用数组的程序设计、实验目的1、正 确理解数组的概念,熟练掌握一维数组和二维数组的定义和初始化方法。2、熟 练掌握字符数组和字符串的区别和使用、字符串函数的使用。3、熟 练掌握一维数组、二维数组以及字符串的输入和输出方法。4、了 解数组的地址、数组元素的地址及一维数组和二维数组的存储结构。5、掌 握字符串的结束标志,正确使用字符串的结束标志对字符串进行处理。6、通 过编程和调试程序,加深对数组、字符数组和字符串函数应用的理解。7、实 验前复习数组、字符数组和字符串函数的概念。、实验内容1、打印 fabonacci 数列的前 20 项,该数列前两项

19、为 1,以后各项均为前相邻两项之和。 程序代码:#include void main()long int f20=1,1;int j;for(j=2;j20;j+)fj=fj-1+fj-2;for(j=0;j20;j+)printf(%15ld,fj);if(j+1)%5=0)printf(n);对程序进行测试,并观察运行结果。将程序的运行情况写在下面。运行结果:2、从键盘输入一个班学生(最多 30 人)的成绩,然后按降序进行排列。 #include #define N 5void main()int aN,i,j,t;printf(input scores of students:,N);

20、for(i=0;iN;i+) scanf(%d,&ai);for(i=0;iN-1;i+) for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t; printf(the sorted scores:n);for(i=0;iN;i+) printf(%10d,ai);printf(n);3、 程序代码:对程序进行测试,并观察运行结果。将程序的运行情况写在下面。c运行结果: 3、编写一个程序,利用字符数组实现两个字符串的比较。 (注意不能使用字符串比较函数 strcmp() ) #include #define n 7void main()char s1n,s2n;int i;pri

21、ntf(input %d charactersn,n);scanf(%sn,s1);scanf(%sn,s2);if(s1!=s2)for(i=0);is2i)printf(%s%s,s1,s2);break;else if(s1is2i)printf(%s%s,s1,s2);break;else continue; else printf(%s=%s,s1,s2);程序代码:对程序进行测试,并观察运行结果。将程序的运行情况写在下面。运行结果: 三、问题讨论1 使用 %s 格式符输入字符串到数组时能否将空格符输入?如果不能该如何使用其它方法解 决?举例说明2 数组在“定义”时和“引用”时所带的

22、下标有何区别?四、实验总结需多操作才能 熟练掌握各种 C 语言 .1 总结本次实验完成情况、相关知识 掌握情况2 总结本次实验编辑、编译、连接、 运行所取得的经验3 分析本次实验出现的主要错误最直 接原因实验五 函数与编译预处理、实验目的10 、掌握函数定义及调用的方法,正确理解函数调用时实参和形参的对应关系11 、掌握并正确使用数组作为函数参数;12 、掌握函数的嵌套调用和递归调用的方法;13 、理解变量的作用域和生存期;14 、掌握宏定义、文件包含。、实验内容1、分析下面的程序并上机运行程序,要求写出 3 组以上程序的运行结果#include int fun(int k)int resul

23、t=1,i;for(i=1;i=k;i+)result=result*i;return result;void main()int n;printf(Input n please(1=n=10); scanf(%d,&n);printf(%d!=%dn,n,fun(n);运行结果: 2、编写程序,输出 2n之间的所有素数, n 由键盘输入。要求判断素数的过程要写在函 数中,由主函数调用实现,并写出 2 组以上程序运行结果。程序代码:#include#includevoid main() int i,j,k,n,m=0;printf(input n please!n);scanf(%d,&n);

24、for(i=2;i=n;i+) j=sqrt(i);for(k=2;kj)m+;printf(%3d,i);if(m%10=0)printf(n);运行结果: 3、编程实现输入 8 个学生某门功课的成绩,用函数求出平均分,并在主函数中输出平均 分以及高于平均分的同学的成绩。并写出 2 组以上程序运行结果。程序代码:#includefloat average(float x8) float sum;int k;sum=x0;for(k=1;k8;k+) sum=sum+xk;return(sum/8);void main() float cj8,aver;int m,j;printf(input

25、 scores of eight students:n);for(j=0;j8;j+)scanf(%f,&cjj);aver=average(cj);for(m=0;maver)printf( 高于平均分: %fn,cjm);printf(average=%6.2fn,aver);运行结果:三、问题讨论1、举例说明自动变量和静态变量的区别。2、答:自动变量是指那些当程序的流程转到该函数时才开辟的单元, 静态变量则是指在整个程序运行期间分配固定存储空间的变量。执行后又立即释放的变量四、实验总结1 总结本次实验完成情况、相关知识掌握情况2 总结本次实验编辑、编译、连接、运行所取得的经验3 分析本次

26、实验出现的主要错误最直接原因答: 1. 实验完成,知识还未完全掌握。2. 要注意书写格式的正确。3. 主要原因是对知识的不理解。实验六 使用指针的程序设计一、实验目的15 、掌握指针的概念,会定义和使用指针变量;16 、能正确使用数组的指针和指向数组的指针变量;17 、熟悉指针作为函数参数的定义和调用方法;18 、能正确使用字符串的指针和指向字符串的指针变量。二、实验内容1. 分析下面的程序并上机运行程序,要求写出 3 组以上程序的运行结果 #include void main()int *p1,*p2,*p;int a,b; printf(Input a b please); scanf(%

27、d%d,&a,&b); p1=&a;p2=&b;if(ab) p=p1;p1=p2;p2=p; printf(*p1=%d, *p2=%dn,*p1,*p2); printf(a=%d, b=%dn,a,b);运行结果: 2. 下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n 给了数组中数据的个数,利用指针 odd 返回奇数之和,利用指针 even 返回偶数之和。请在下 面空白处将实现这一功能的函数完善,并且调试运行出结果。#include #define N 10void fun(int *a,int n,int *odd,int *even)void main()int

28、aN=1,10,2,3,19,6,i,n=6,odd,even; printf(The original data is:n);for(i=0;in;i+) printf(%5d,*(a+i);printf(nn); fun(a,n,&odd,&even);printf(The sum of odd numbers:%dn,odd); printf(The sum of even number:%dn,even);运行结果: 3. 编程实现从键盘输入一个字符 ch 和一个字符串 str ,利用字符指针实现删除字符串 str 中和字符 ch 相等所有字符,然后输出字符串 str 。运行程序并写出

29、 2 组以上程序 运行结果。程序代码:运行结果: 三、问题讨论1. 简述字符串数组和字符指针的区别,举例说明。四、实验总结1 总结本次实验完成情况、相关知识掌握情况 答:通过本次实验我学习了关于指针的一些应用和怎样用指 针来解决一些实际问题。2 总结本次实验编辑、编译、连接、运行所取得的经验3 分析本次实验出现的主要错误最直接原因答 : 对课 本上 的知 识 记忆 的 不够 牢固 ,对 一 些知 识 似懂 非懂 的, 理 解的 不 清楚 。还 有就 是对 计算机的的操作不够熟练,操作起来很慢,还经常出错。以后需加强练习。实验七、结构体程序设计、实验目的1掌握结构体类型变量和数组、共用体类型变量和数组以及枚举类型变量的定义和使用。2掌握链表的基本,初步学会对链表进行操作。3通过编程和调试程序,加深对结构体和共用体概念的理解。4实验前复习结构体类型、共用体类型和枚举类型的概念。、实验内容及步骤:编程题:某单位进行选举,有 5 位候选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论