C语言学习知识上机试题及其规范标准答案文档格式.docx
《C语言学习知识上机试题及其规范标准答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言学习知识上机试题及其规范标准答案文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
编译无错时,将源程序Exa.c编译为目标文件Exa.obj。
编译结果如图1-4所示。
如果出现运行错误,应该分析错误的原因,例如,是输入数据错误,还是代码错误;
如果需要修改源程序文件,还需重新编译、链接和执行。
改正编译窗口下方指出的两个错误,直至编译成功,如图1-5所示。
图1-3
编译源程序
图1-4编译结果
图1-5编译成功
③连接
连接是将目标文件Exa.obj转换为可执行文件Exa.exe的过程。
如图1-6所示选择Build菜单下的Build
Exa.exe。
连接无错时,将目标文件Exa.obj连接为Exa.exe。
图1-6
源程序
④运行
运行是执行可执行文件Exa.exe,屏幕输出运行结果。
如图1-7所示选择Build菜单下的Execute
图1-7
运行程序
运行结果如图1-8所示:
图1-8运行结果
3.关闭系统工作区空间
单击“文件︱关闭工作区”菜单命令,关闭系统工作区空间。
此时读者可以开始输入调试第
(2)个C程序文件。
4.退出VC6.0开发环境
单击主窗口右上角的“关闭”按钮,退出VC6.0。
2、验证程序,熟悉VC6.0编程环境及调试程序的步骤。
已知三角形三条边长a,b,c,计算三角形面积公式为:
s=0.5*(a+b+c)
编写程序,要求从键盘输入a,b,c的值,计算并输出三角形面积。
其中源程序代码如下:
#include<
stdio.h>
math.h>
voidmain()
{
doublea,b,c,s,area;
printf("
inputa,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=%f\n"
area);
}
具体要求:
(1)在VC6.0环境中输入上述源程序。
(2)对源程序进行编译连接,若有错误请调试修改。
(3)运行程序,并输入三条边长,观察程序运行结果。
图1-9为程序运行时,当输入三条边长分别为3,4,5时的运行结果,可作为参考。
图1-9上述程序的运行结果
三、问题讨论
1、使用printf函数输出数据时如果想使数据左对齐该如何设置?
2、使用scanf函数时,输入项为何必须是变量地址而不是变量名?
四、实验总结
1总结本次实验完成情况、相关知识掌握情况
2总结本次实验编辑、编译、连接、运行所取得的经验
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)
此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。
编程从键盘输入你的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示喜爱,输入字符N表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。
程序代码:
:
#include<
main()
charsex;
/*孩子的性别*/
charsports;
/*是否喜欢体育运动*/
chardiet;
/*是否有良好的饮食习惯*/
floatmyHeight;
/*孩子身高*/
floatfaHeight;
/*父亲身高*/
floatmoHeight;
/*母亲身高*/
你是男孩(M)还是女孩(F):
%c"
&
sex);
/*在前加一个空格,将存于缓冲区的回车符读入*/
你爸多高(cm):
%f"
faHeight);
你妈多高(cm):
moHeight);
你喜欢运动吗(Y/N)?
sports);
你有一个良好的生活习惯吗(Y/N)?
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=='
||diet=='
myHeight=myHeight*(1+0.015);
你将来的身高是%f(cm)\n"
myHeight);
设计多组测试数据对程序进行测试,并观察运行结果。
将程序的运行情况写在下面。
『运行结果:
』
自己弄运行信息结果吧
2、使用switch语句实现下面程序。
输入一个学生的两门课成绩(百分制),计算该学生的总分并要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。
总分在180分以上为‘A’,160~179分为‘B’,140~159分为‘C’,120~139分为‘D’,120分以下为‘E’。
①学生的两门课成绩通过键盘输入,成绩应该都为整数,输入之前要有提示信息。
②若输入的成绩不是百分制成绩,则给出错误提示信息,并且不再进行下面的等级评价;
若输入的成绩是百分制成绩,则计算总分,并根据要求评价等级。
③按下面形式输出结果:
总分----〉等级
如:
186----〉A
把正确的程序源代码写在下面。
intscore1,score2,sum,mark;
请输入你的成绩:
%d%d"
score1,&
score2);
sum=score1+score2;
mark=sum/10;
/*采取整除方法,将mark取值压缩到有限的去值范围内*/
switch(mark)
{
case20:
case19:
case18:
printf("
%d---->
A\n"
sum);
break;
case17:
case16:
B\n"
break;
case15:
case14:
C\n"
case13:
case12:
D\n"
case11:
case10:
case9:
case8:
case7:
case6:
case5:
case4:
case3:
case2:
case1:
case0:
%d-->
E\n"
default:
输入错误\n"
/*处理非法数据*/
}
在使用switch语句时,switch和case后值的类型要求以及default子句和break语句的位置有什么需要注意的地方?
举例说明
实验三循环结构程序设计
5、熟练掌握while语句,do-while语句和for语句的格式和功能,能够用这些语句实现循环结构程序设计的方法。
6、熟练掌握循环语句嵌套使用的基本形式,能够用循环语句实现多重循环。
7、掌握在循环结构程序设计中使用break语句和continue语句改变程序流程。
8、通过编程和调试程序,加深对while语句、do…while语句和for语句的理解,学习编程和测试的基本方法。
9、实验前复习while语句、do…while语句和for语句的概念。
1.打印100-200之间的所有素数(按照每行5个显示)
对程序进行测试,并观察运行结果。
2.编程输出如下上三角形式的九九乘法表。
123456789
---------
123456789
4681012141618
9121518212427
162024283236
2530354045
36424854
495663
6472
81
break语句和continue语句在循环结构中使用时有何区别?
举例说明。
实验四使用数组的程序设计
1、正确理解数组的概念,熟练掌握一维数组和二维数组的定义和初始化方法。
2、熟练掌握字符数组和字符串的区别和使用、字符串函数的使用。
3、熟练掌握一维数组、二维数组以及字符串的输入和输出方法。
4、了解数组的地址、数组元素的地址及一维数组和二维数组的存储结构。
5、掌握字符串的结束标志,正确使用字符串的结束标志对字符串进行处理。
6、通过编程和调试程序,加深对数组、字符数组和字符串函数应用的理解。
7、实验前复习数组、字符数组和字符串函数的概念。
1、打印fabonacci数列的前20项,该数列前两项为1,以后各项均为前相邻两项之和。
{longintf[20]={1,1};
intj;
for(j=2;
j<
20;
j++)
f[j]=f[j-1]+f[j-2];
for(j=0;
{printf("
%15ld"
f[j]);
if((j+1)%5==0)
printf("
\n"
2、从键盘输入一个班学生(最多30人)的成绩,然后按降序进行排列。
#defineN5
{inta[N],i,j,t;
printf("
inputscoresofstudents:
N);
for(i=0;
i<
N;
i++)
scanf("
%d,"
a[i]);
N-1;
N-1-i;
if(a[j]>
a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;
thesortedscores:
%10d"
a[i]);
3、
c『运行结果:
3、编写一个程序,利用字符数组实现两个字符串的比较。
(注意不能使用字符串比较函数strcmp())
#definen7
{chars1[n],s2[n];
inti;
input%dcharacters\n"
n);
%s\n"
s1);
s2);
if(s1!
=s2)
{for(i=0);
n;
{if(s1[i]>
s2[i])
%s>
%s"
s1,s2);
break;
elseif(s1[i]<
%s<
else
continue;
%s=%s"
1使用%s格式符输入字符串到数组时能否将空格符输入?
如果不能该如何使用其它方法解决?
2数组在“定义”时和“引用”时所带的下标有何区别?
需多操作才能熟练掌握各种C语言.
实验五函数与编译预处理
10、掌握函数定义及调用的方法,正确理解函数调用时实参和形参的对应关系;
11、掌握并正确使用数组作为函数参数;
12、掌握函数的嵌套调用和递归调用的方法;
13、理解变量的作用域和生存期;
14、掌握宏定义、文件包含。
1、分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。
intfun(intk)
intresult=1,i;
for(i=1;
=k;
result=result*i;
returnresult;
intn;
Inputnplease(1<
=n<
=10)"
%d"
n);
%d!
=%d\n"
n,fun(n));
2、编写程序,输出2~n之间的所有素数,n由键盘输入。
要求判断素数的过程要写在函数中,由主函数调用实现,并写出2组以上程序运行结果。
{inti,j,k,n,m=0;
inputnplease!
for(i=2;
=n;
{j=sqrt(i);
for(k=2;
k<
=j;
k++)
if(i%k==0)
if(k>
j)
{m++;
%3d"
i);
if(m%10==0)
3、编程实现输入8个学生某门功课的成绩,用函数求出平均分,并在主函数中输出平均分以及高于平均分的同学的成绩。
并写出2组以上程序运行结果。
floataverage(floatx[8])
{floatsum;
intk;
sum=x[0];
for(k=1;
8;
{sum=sum+x[k];
return(sum/8);
{floatcj[8],aver;
intm,j;
inputscoresofeightstudents:
for(j=0;
scanf("
cj[j]);
aver=average(cj);
for(m=0;
m<
m++)
{if(cj[m]>
aver)
高于平均分:
%f\n"
cj[m]);
average=%6.2f\n"
aver);
运行结果:
1、举例说明自动变量和静态变量的区别。
2、
答:
自动变量是指那些当程序的流程转到该函数时才开辟的单元,执行后又立即释放的变量。
静态变量则是指在整个程序运行期间分配固定存储空间的变量。
1.实验完成,知识还未完全掌握。
2.要注意书写格式的正确。
3.主要原因是对知识的不理解。
实验六使用指针的程序设计
15、掌握指针的概念,会定义和使用指针变量;
16、能正确使用数组的指针和指向数组的指针变量;
17、熟悉指针作为函数参数的定义和调用方法;
18、能正确使用字符串的指针和指向字符串的指针变量。
1.分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。
int*p1,*p2,*p;
inta,b;
Inputabplease"
b);
p1=&
a;
p2=&
b;
if(a>
b)
{p=p1;
p1=p2;
p2=p;
*p1=%d,*p2=%d\n"
*p1,*p2);
a=%d,b=%d\n"
a,b);
2.下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even返回偶数之和。
请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。
#defineN10
voidfun(int*a,intn,int*odd,int*even)
{
inta[N]={1,10,2,3,19,6},i,n=6,odd,even;
Theoriginaldatais:
for(i=0;
%5d"
*(a+i));
\n\n"
fun(a,n,&
odd,&
even);
Thesumofoddnumbers:
%d\n"
odd);
Thesumofevennumber:
even);
3.编程实现从键盘输入一个字符ch和一个字符串str,利用字符指针实现删除字符串str中和字符ch相等所有字符,然后输出字符串str。
运行程序并写出2组以上程序运行结果。
1.简述字符串数组和字符指针的区别,举例说明。
通过本次实验我学习了关于指针的一些应用和怎样用指针来解决一些实际问题。
3分析本次实验