C语言上机试题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一Visual C++6.0的使用及顺序结构程序设计
一、实验目的
1、掌握启动和退出VC6 的方法。

2、熟悉 VC6 开发环境。

3、初步掌握简单程序的上机操作基本步骤,熟悉 C 单文件程序的输入、编译、链接和运行过程。

4、初步掌握程序的编辑修改和调试。

5、熟练使用赋值运算、算术运算等表达式。

6、熟练使用标准输入、输出函数及各种数据类型的格式说明符。

二、实验内容
1、下面C语言程序,其功能是显示字符串“欢迎同学们来到华北水院计算中心!”。

请同学们按照下面的实验指导学习VisualC++6.0的使用。

1 .启动 VisualC++6 .0 开发环境
(1)单击开“始”按钮,选择程“序”——〉“Microsoft Visual Studio6.0菜单项,单击“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 菜单,选择Ne w 菜单项,即可出现New 对话框,如图1-1 所示。

在弹出窗口中的Files 标签页下,选择C++ Sour ce File。

在选项卡右面的File 编辑框里输入文件名如“Exa.c”,在 Location 编辑框里输入文件路径,
2
如 : \test”。

点击 OK 按钮。

将出现编辑窗口 ,如图 1-2 所示。

在图 1-2 所示的右端编辑窗口里输 入以下 C 源程序并保存文件。

图 1-2 编辑窗口
②编译
编译是使用系统提供的编译器将文本文件 Exa.c 生成机器语言的过程 ,结果为 Exa.obj ,由于没有 得到系统分配的绝对地址,还不能直接运行,如图 1-3 所示。

选择 Build 菜单下的 Compile Exa.c , 计算机将完成对当前源程序的编译。

按提示建立默认工程空间。

编译无错时,将源程序 Exa.c 编译为 目标文件 Exa.obj 。

编译结果如图 1-4 所示。

如果出现运行错误 ,应该分析错误的原因 ,例如 ,是输 入数据错误,还是代码错误;如果需要修改源程序文件,还需重新编译、链接和执行。

改正编译窗口 下方指出的两个错误,直至编译成功,如图 1-5 所示。

include<stdio.h ain() > mprintf(" 欢迎同学们来到华北水院计算中心 ! ");
void { }
3
图 1-3 编译源程序
4
图 1-4 编译结果
图 1-5 编译成功③连接
连接是将目标文件Exa.obj 转换为可执行文件Exa.exe 的过程。

如图1-6 所示选择Build 菜单下的Build Exa.exe 。

连接无错时,将目标文件Exa.obj 连接为 Exa.exe。

5
图 1-6 源程序
④运行
运行是执行可执行文件Exa.exe ,屏幕输出运行结果。

如图1-7 所示选择 Build 菜单下的 Execu te Exa.exe。

图 1-7 运行程序
运行结果如图1-8 所示:
6
图 1-8 运行结果
3 .关闭系统工作区空间
单击“文件︱关闭工作区”菜单命令,关闭系统工作区空间。

此时读者可以开始输入调试第 (2) 个C 程序文件。

4 .退出 VC6.0 开发环境
单击主窗口右上角的“关闭”按钮,退出VC6.0 。

2、验证程序,熟悉VC6.0编程环境及调试程序的步骤。

已知三角形三条边长a ,b ,c ,计算三角形面积公式为:s=0.5*(a+b+c)
7
area s(s a)(s b)(s c)
编写程序,要求从键盘输入a ,b ,c 的值,计算并输出三角形面积。

其中源程序代码如下:#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,s,area;
printf("input a,b,c:");
scanf("%lf,%lf,%lf",&a,&b,&c);
area=sqrt(s*(s-a)*(s-b)*(s-c))
s=(a+b+c)/2.0;
prinf("area=%f\n",area);
//输入三角形的三条边}
//求三角形的面积
具体要求:
8
( 1 )在 VC6.0 环境中输入上述源程序。

( 2 )对源程序进行编译连接,若有错误请调试修改。

(3) 运行程序,并输入三条边长,观察程序运行结果。

图1-9 为程序运行时,当输入三条边长分别为3 ,4 ,5 时的运行结果,可作为参考。

图 1 - 9 上述程序的运行结果
三、问题讨论
1、使用printf 函数输出数据时如果想使数据左对齐该如何设置?
2、使用scanf 函数时,输入项为何必须是变量地址而不是变量名?
四、实验总结
1 总结本次实验完成情况、相关知识掌握情况
2 总结本次实验编辑、编译、连接、运行所取得的经验
9
3 分析本次实验出现的主要错误最直接原因
实验二选择结构程序设计
一、实验目的
1、熟悉 VC6.0 编程环境。

2、进一步熟悉用 VC6.0 调试 C 语言源程序的过程。

3、熟练使用关系表达式和逻辑表达式作为if 语句的条件判断。

4、熟练掌握 if 语句和 switch 语句的使用方法。

二、实验内容
1、身高预测
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。

小孩成人后身高与其父母身高和自身性别密切相关。

设 faHeight 为其父身高, moHeight 为其母身高,身高预测公式为:
男性成人时身高=(faHeight+moHeight)*0.54(cm)
女性成人时身高=(faHeight*0.923+moHeight)/2(cm)
10
此外,如果喜爱体育锻炼,那么可增加身高2% ,如果有良好的卫生饮食习惯,那么可增加身高1.5%。

编程从键盘输入你的性别(用字符型变量sex 存储,输入字符 F 表示女性,输入字符M 表示男性)、父母身高(用实型变量存储,faHeight 为其父身高,moHeight 为其母身高)、是否喜爱体育锻炼(用字符型变量sports 存储,输入字符 Y 表示喜爱,输入字符N 表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet 存储,输入字符 Y 表示喜爱,输入字符N 表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。

程序代码:
:#include<stdio.h>
main()
{
char sex;
char diet;
char sports;
float myHeight;
/*孩子的性别*/
float faHeight;
/*是否喜欢体育运动*/
/*是否有良好的饮食习惯*/
/*孩子身高*/
/*父亲身高*/
float moHeight;/*母亲身高*/
printf("你是男孩(M)还是女孩(F):");
scanf("%c",&sex);/*在前加一个空格,将存于缓冲区的回车符读入*/ printf("你爸多高(cm):");
scanf("%f",&faHeight);
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;
else
myHeight=(faHeight*0.923+moHeight)/2.0;
if(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’,160~179分为‘B’,140~159分为‘C’,120~139分为‘D’,120 分以下为‘E’。

具体要求:
13
①学生的两门课成绩通过键盘输入,成绩应该都为整数,输入之前要有提示信息。

②若输入的成绩不是百分制成绩,则给出错误提示信息,并且不再进行下面的等级评价;若输入的成绩是百分制成绩,则计算总分,并根据要求评价等级。

③按下面形式输出结果:
总分----〉等级
如:186----〉A
把正确的程序源代码写在下面。

程序代码:
#include<stdio.h>
main()
{
int score1,score2,sum,mark; printf("请输入你的成绩:");
scanf("%d%d",&score1,&score2);
sum=score1+score2;
mark=sum/10;/*采取整除方法,将mark取值压缩到有限的去值范围内*/ switch(mark)
{
case20:
case19:
case18:
printf("%d---->A\n",sum);
break;
case17:
case16:
printf("%d---->B\n",sum);
break;
case15:
15
printf("%d---->C\n",sum); break;
case13:
case12:
printf("%d---->D\n",sum); break;
case11:
case10:
case9:
case7:
case6:
case5:
16
case4:
case3:
case2:
case1:
case0:
printf("%d-->E\n",sum);
break;
default:
printf("输入错误\n");/*处理非法数据*/ }
}
设计多组测试数据对程序进行测试,并观察运行结果。

将程序的运行情况写在下面。

『运行结果:』
17
自己弄运行信息结果吧
三、问题讨论
在使用 switch 语句时, switch 和 case 后值的类型要求以及default 子句和 break 语句的位置有什么需要注意的地方?举例说明
四、实验总结
1 总结本次实验完成情况、相关知识掌握情况
2 总结本次实验编辑、编译、连接、运行所取得的经验
3 分析本次实验出现的主要错误最直接原因
实验三循环结构程序设计
一、实验目的
5、熟练掌握 while 语句,do-while 语句和 for 语句的格式和功能,能够用这些语句实现循环结构程序设计的方法。

6、熟练掌握循环语句嵌套使用的基本形式,能够用循环语句实现多重循环。

7、掌握在循环结构程序设计中使用break 语句和 continue 语句改变程序流程。

8、通过编程和调试程序,加深对while 语句、 do …while语句和 for 语句的理解,学习编程和
18
测试的基本方法。

9、实验前复习 while 语句、 do …while语句和 for 语句的概念。

二、实验内容
1. 打印 100-200 之间的所有素数(按照每行5 个显示)
程序代码:
对程序进行测试,并观察运行结果。

将程序的运行情况写在下面。

『运行结果:』
2.编程输出如下上三角形式的九九乘法表。

1
2 3 4 5 6 7 8 9
---------
1 42
6
9
3
8
12
16
4
10
15
20
5 6 7 8 9
12 14 16 18
18 21 24 27
24 28 32 36
19
25 30
36
35
42
49
40
48
56
64
45
54
63
72
81
程序代码:
对程序进行测试,并观察运行结果。

将程序的运行情况写在下面。

『运行结果:』
三、问题讨论
break 语句和 continue 语句在循环结构中使用时有何区别?举例说明。

四、实验总结
1 总结本次实验完成情况、相关知识掌握情况
2 总结本次实验编辑、编译、连接、运行所取得的经验
3 分析本次实验出现的主要错误最直接原因
20
实验四使用数组的程序设计
一、实验目的
1、正确理解数组的概念,熟练掌握一维数组和二维数组的定义和初始化方法。

2、熟练掌握字符数组和字符串的区别和使用、字符串函数的使用。

3、熟练掌握一维数组、二维数组以及字符串的输入和输出方法。

4、了解数组的地址、数组元素的地址及一维数组和二维数组的存储结构。

5、掌握字符串的结束标志,正确使用字符串的结束标志对字符串进行处理。

6、通过编程和调试程序,加深对数组、字符数组和字符串函数应用的理解。

7、实验前复习数组、字符数组和字符串函数的概念。

二、实验内容
1、打印fabonacci 数列的前 20 项,该数列前两项为1 ,以后各项均为前相邻两项之和。

程序代码:
#include <stdio.h>
void main()
{long int f[20]={1,1}; int j;
for(j=2;j<20;j++)
f[j]=f[j-1]+f[j-2]; for(j=0;j<20;j++) {printf("%15ld",f[ j]); if((j+1)%5==0) printf("\n");
}
}
对程序进行测试,并观察运行结果。

将程序的运行情况写在下面。

『运行结果:』
2、从键盘输入一个班学生(最多30 人)的成绩,然后按降序进行排列。

#include<stdio.h>
#define N5
void main()
{int a[N],i,j,t;
printf("input scores of students:",N);
for(i=0;i<N;i++)
scanf("%d,",&a[i]);
for(i=0;i<N-1;i++)
23
for(j=0;j<N-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("the sorted scores:\n"); for(i=0;i<N;i++)
printf("%10d",a[i]);
printf("\n");
}
3、程序代码:
c『运行结果:』
3、编写一个程序,利用字符数组实现两个字符串的比较。

24
(注意不能使用字符串比较函数strcmp() )#include <stdio.h>
#define n 7
void main()
{char s1[n],s2[n];
int i;
printf("input %d characters\n",n);
scanf("%s\n",s1);
scanf("%s\n",s2);
if(s1!=s2)
{for(i=0);i<n;i++)
{if(s1[i]>s2[i])
{printf("%s>%s",s1,s2);
break;}
25。

相关文档
最新文档