C语言程序设计试题AB卷及标答.docx
《C语言程序设计试题AB卷及标答.docx》由会员分享,可在线阅读,更多相关《C语言程序设计试题AB卷及标答.docx(14页珍藏版)》请在冰豆网上搜索。
![C语言程序设计试题AB卷及标答.docx](https://file1.bdocx.com/fileroot1/2022-10/29/c8f94260-4371-42cb-81b8-98f6714ae2e4/c8f94260-4371-42cb-81b8-98f6714ae2e41.gif)
C语言程序设计试题AB卷及标答
2010—2011学年度第二学期期末考试
《C语言程序设计》试题A卷
09年级90分钟 2011年6月
一、用C语言描述下列命题(每小题2分,共8分)
1、a小于b或a小于c。
2、a或b其中之一小于c。
3、a和b中有一个是奇数。
4、无条件循环(while)。
二、填空(每小题2分,共10分)
1、(FF)H=()2。
2、若一个二进制数的原码是X原=10010011,则反码是X反=()。
3、a+=a-=a*=a()。
4、C程序设计的基本结构有3种,分别是顺序结构、分支结构、()。
5、C函数结尾处,一般有return语句,其含义是()。
三、读程序,写出其结果(每小题5分,共10分)
1、程序代码如下,结果是()。
#include
intmain(intargc,char*argv[])
{
inta=10,b=20;
printf("%d",a>b?
a:
b);
return0;
}
2、程序代码如下,结果是()。
#include
intmain(intargc,char*argv[])
{
inti=8,j=10,m,n;
m=++i;n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
return0;
}
四、程序填空(每空4分,共12分)
输出杨辉三角形(要求输出10行)。
1
11
121
1331
14641
15101051
……
程序如下:
#include"stdafx.h"
intmain(intargc,char*argv[])
{
inta[10][10];
//构建杨辉三角形
for(inti=0;i<10;i++)
{
;
a[i][i]=1;
}
for(;i<10;i++)
for(intj=1;j
a[i][j]=;
//以下是输出杨辉三角形
for(i=0;i<10;i++)
{
for(intj=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return0;
}
五、程序改错(在答题纸上写出改正后的语句)(共10分)
下列给定程序中,函数fun的功能是:
根据整型形参m的值,计算如下公式的值。
请改正函数fun中的二处错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
floatfun(intm)
{
floaty=1.0;
inti;
for(i=2;iy=y-1/(i*i);
return(y);
}
main()
{
intn=5;
printf("\nTheresultis%lf\n",fun(n));
}
六、算法和程序(第1小题7分,第2小题18分,第3小题25分,共50分)
1、有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换(即A瓶原来盛醋,现在改盛酱油,B瓶则相反)。
用N-S图表示解决问题的算法。
2、意大利数学家Fibonacci曾提出一个有趣的问题:
设有一对新生兔子,从第三个月开始它们每月都生育一对兔子,按此规律并假设没有兔子死亡,一年后共有多少对兔子?
用N-S图表示用数组求解前40个月兔子数的算法。
3、根据下面的N-S图,写出求解问题的VC++6.0程序代码。
其中:
f为自定义函数,
f(x)=2x3-4x2+3x-6
2010—2011学年度第二学期期末考试
《C语言程序设计》试题标准答案及评分标准
一、用C语言描述下列命题(每小题2分,共8分)
1、a
2、a3、a%2!
=0||b%2!
=0
4、while
(1)
评分标准:
对则得分,否则不得分
二、填空(每小题2分,共10分)
1、(11111111)28个1
2、(01101100)
3、04、循环结构
5、结束该函数运行,并向主调函数返回值。
评分标准:
对则得分,否则不得分
三、读程序,写出其结果(每小题5分,共10分)
1、20评分标准:
对则得分,否则不得分
2、9,11,9,10评分标准:
数据对1个1分,有“,”1分
四、程序填空(每空4分,共12分)
a[i][0]=1评分标准:
对则得分,否则不得分
i=2评分标准:
对则得分,否则不得分
a[i-1][j-1]+a[i-1][j]评分标准:
对则得分,否则不得分
五、程序改错(在答题纸上写出改正后的语句)(共10分)
#include
floatfun(intm)
{
floaty=1.0;
inti;
for(i=2;iy=y-1/(i*i);//此语句改为y=y-1.0/(i*i);
return(y);
}
main()
{
intn=5;
printf("\nTheresultis%lf\n",fun(n));
}
评分标准:
改对则得分,改错不扣分
六、算法和程序(第1小题7分,第2小题18分,第3小题25分,共50分)
1、
评分标准:
顺序结构2分,三步赋值3分,赋值能完成A、B值互换2分。
2、
评分标准:
迭代表达式a[i]=a[i-1]+a[i-2]6分、有数组定义及初始化各2分、有循环设置2分、有输出1分。
循环体设计正确5分。
3、程序如下:
#include
#include
intmain(intargc,char*argv[])
{
floatx1,x2,fx1,fx2,x0,fx0;
floatf(floatx);
do
{
printf("请输入求值区间[x1,x2]:
");
scanf("%f%f",&x1,&x2);
fx1=f(x1);
fx2=f(x2);
}
while(fx1*fx2>=0);
do
{
x0=(x1+x2)/2;
fx0=f(x0);
if(fx1*fx0<0)
{
x2=x0;
fx2=fx0;
}
else
{
x1=x0;
fx1=fx0;
}
}
while(fabs(fx0)>1e-5);
printf("Therootis:
%f\n",x0);
return0;
}
floatf(floatx)
{
return2*x*x*x-4*x*x+3*x-6;
}
评分标准:
预处理部分3分、主函数名1分、f函数4分、第一个循环8分(x1和x2正确输入3分、调用f函数计算fx1、fx22分、循环条件3分)第二个循环8分(x0和fx02分、条件分支中条件2分、分支2分、循环条件2分)、输出x01分。
荆楚理工学院
2010—2011学年度第二学期期末考试
《C语言程序设计》试题B卷
机制专业09年级90分钟 2011年6月
一、写出下面各逻辑表达式的值(每小题2分,共10分)
设:
a=3,b=4,c=5。
1、a+b>c&&b==c
2、a||b+c&&b-c
3、!
(a>b)&&!
c||1
4、!
(x=a)&&(y=b)&&0
5、!
(a+b)+c-1&&b+c/2
二、填空(每小题2分,共10分)
1、(FF)H=()2。
2、若一个二进制数的原码是X原=10010011,则反码是X反=()。
3、TC2.0中inta=-1,a在内存中的存储形式是()。
4、C程序设计的基本结构有3种,分别是顺序结构、分支结构、()。
5、C函数结尾处,一般有return语句,其含义是()。
三、读程序,写出其结果(每小题5分,共10分)
1、程序代码如下,结果是()。
#include
intmain(intargc,char*argv[])
{
intx=10,y=20;
printf("%d",xy:
x);
return0;
}
2、程序代码如下,结果是()。
#include
intmain(intargc,char*argv[])
{
intm=10;
printf(“%d,%d,%d”,m,m++,++m);
return0;
}
四、程序填空(第1、2空各3分,第3空4分,共10分)
以下程序将两个不超过20个字符的字符串连接起来生成新字符串。
#include"stdafx.h"
intmain(intargc,char*argv[])
{
charstr1[]="hello";
charstr2[]="world!
";
charstr3[50];
inti,j,k;
//字符串连接
for(i=0,k=0;;i++,k++)
str3[k]=str1[i];
for(;str2[i]!
='\0';i++,k++)
str3[k]=str2[i];
;
printf("%s\n",str3);
return0;
}
五、程序改错(在答题纸上写出改正后的语句)(共10分)
下面给定程序中,函数fun和funx的功能是:
用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。
请改正函数fun中的二处错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
#include
floatfunx(floatx)
{
return(2*x*x*x-4*x*x+3*x-6);
}
floatfun(floatm,floatn)
{
intr;
r=(m+n)/2;
while(fabs(n-m)<0.001)
{
if(funx(r)*funx(n)<0)
m=r;
else
n=r;
r=(m+n)/2;
}
returnr;
}
main()
{
floatm,n,root;
printf("Entermn:
\n");
scanf("%f%f",&m,&n);
root=fun(m,n);
printf("root=%6.3f\n",root);
}
六、算法和程序(第小题25分,共50分)
1、用二分法求函数f(x)=2x3-4x2+3x-6=0在区间[0,5]的解。
只要求用N-S图表示算法。
2、写函数用辗转相除法求两个数的最大公约数,在主函数中通过键盘输入这两个数,然后调用该函数计算最大公约数,并输出结果。
根据N-S图,写出求解问题的VC++6.0程序代码。
图a是主函数算法,其中div