发新话题
打印

[转载]《C语言》课程期中考试

[转载]《C语言》课程期中考试

  信息来源:http://www.jxyd.net/jxroot/ex_File/test_cpp/c0304.htm

一、填空题

结构化程序设计中的三种基本结构是:__顺序结构__ 、__选择(分支)结构__和__循环结构__
十进制数75的八进制数和十六进制数分别是__0113__和__0X4B__
十进制数-111的八进制数和十六进制数分别是__0177621 或 -0157__和__0XFF91 或 -0X6F__
已知float x=2.5,y=4.7,a=7; 则表达式 x+a%3*(int)(x+y)%2/4的值为__2.5__
已知float x=3.5,y=2.5,a=2,b=3; 则表达式(float)(a+b)/2+(int)x%(int)y的值为__3.5__
已知int a=3,b=4,c=5; 则表达式a+b>c&&b==c的值为__0__
已知int a=3,b=4,c=5; 则表达式a||b+c&&b-c的值为__1__
已知int a=3,b=4,c=5; 则表达式!(a>b)&&!c||1的值为__1__
已知int a=1,b=2,c=3,d=4; 则表达式a>b?a:c>d?c:d的值为__4__
已知int a=3,b=4,c=5; 则表达式a+=++b+(--c)的值为__12__
已知 int x=11,y=9; 则表达式x==y+1的值为__0__
字符'A'和'a'的ASCII代码值分别为__65__和__97__
已知 char a[]="abc",b[]={'a','b','c'}; 则表达式sizeof(a)和sizeof(b)的值分别为__4__和__3__
已知 char a[]="abc", 则表达式strlen(a)值为__3__
循环语句for (k=1;k<10;k++) { ... }的循环次数为__9__
循环语句for (k=10;k>0;--k){ ... }的循环次数为__10__
循环语句k=1;while(k<=10){ ... }的循环次数为__无穷次__
循环语句k=10;do{ ... } while(k>=0);的循环次数为__无穷次__
二、程序填空

下面C程序的输出是:__6__
main()
{ int m=5;
if(++m>5)printf("%d\n",m);
else printf("%d\n",--m);
}


从键盘输入一个大写字母,转换成小写后输出
main()
{ char c1,c2;
__c1=getchar() 或 scanf("%c",&c1)__;
printf("%c\n",c1);
__c2=c1+&#39;a&#39;-&#39;A&#39; 或 c2=c1+32___;
printf("%c\n",c2);
}


编写求n!的递归函数。
long fac(int n)
{ long f;
if(n==0) __f=1__;
else __f=fac(n-1)*n__;
return(f);
}


十个整数的气泡排序:
main()
{ int a[10],i,j,t;
printf("input 10 numbers : ");
for(__i=0;i<10;i++__)
scanf(__"%d",&a__);
for(i=__9;i>0;i-- 或 0;i<=8;i++__)
for(j=__0;j<i;j++ 或 0;j<=8-i;j++__)
if(a[j]__>a[j+1]__)
{ t=__a[j]__;
__a[j]=a[j+1]__;
__a[j+1]=t__;
}
printf("The sorted numbers :\n");
for(__i=0;i<10;i++__)
printf(__"%d ",a__);
__printf("\n")__;
}


如下左图‘正三角星’输出,请补上C程序
main()
{ int i, j;
for (i=1; i<=9; i++)
{ for (j=1; __j<=9-i___; j++) printf(" ");
for (j=1; __j<=2*i-1___; j++) printf("*");
printf("\n");
}
}
*1 2 3 4 5 6 7 8 9
 *** 4 6 81012141618
*****9121518212427
 *******162024283236
********* 2530354045
 ***********36424854
************* 495663
 ***************6472
***************** 81

如上右图‘99表’输出,请补上C程序:
main()
{ int i, j;
for (i=1; i<=9; i++)
{ for (j=1; j<=9; j++)
if__(i<=j) printf("%4d",i*j)__;
else printf("");
__printf("\n")__;
}
}

三、选择题

(A) 表示关系x≤y≤z的c语言表达式为
A、(x<=y)&&(y<=z)B、(x<=y)AND(y<=z)
C、(x<=y<=z) D、(x<=y)&(y<=z)


(D) 十进制数27的二进制数和十六进制数为:
A、00100111 27 B、01110010 27
C、10110001 1B D、00011011 1B


(B) 为了避免嵌套的条件语句if-else的二义性,C语言规定:
A、else与缩排位置相同的if配对 B、else与其之前最近的if配对
C、else与其之后最近的if配对 D、else与同一行上的if配对


(B) 如 a=-2, b=3 表达式 (a<b) ? a : b 的结果为:
A、1B、-2C、3D、-6


(C) 如 a=12, n=5 表达式 a%=(n%=2)+4 运算后的值是:
A、0B、1 C、2D、4


(A) 如 int x=10,下列求商y(需小数结果)的表达式哪一个不对?
A、y=x/3 B、y=x/3.  C、y=1.0*x/3 D、y=(float)x/3

四、以下程序若有错,请将正确的语句写在本行的右边

用Fibonacci数列前20个数,以四行五列显示。
main()
{ INT i; __INT 改 int__
INT f[20]={1,1}; __INT 改 int__
for(i=0,i<20,i++); __0改2 ,改; ,改; 删末尾;__
f=f[i-2]+f[i-1];
for(i=0,i<20,i++)  __,改; ,改;__
{ if(i%4=0) printf("\n"); __4改5 =改==__
printf("%12d",f);
}
}


显示二数中较大绝对值
 __加#include <math.h>__
include (stdio.h>); __加# (改< 删末尾);__
main[] __[改( ]改)__
{ long a,b,c,d,m;
c==fabs(a);d==fabs(b);  __调换下句scanf("%ld%ld",&a,&b);__
scanf(&#39;%d%d&#39;,a,b);  __调换上句c=fabs(a);d=fabs(b);__
if c>d then m==a else m==b; __加( 加) 删then ==改= 加; ==改=__
printf("MAX(|%a|,|%b|)=%d/n,a,m");__前a改ld b改ld d改ld /改\ 加" 加b, 删后"__
}


五、编制C语言程序

由键盘输入一个整数n,判断其是否为素数。
(例6.8)
#include <stdio.h>
void main()
{ int n,i,k;
scanf("%d",&n);
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0) break;
if(i>k) printf("%d 是素数\n",n);
else printf("%d 不是素数\n",n);
}


编一程序,读取两个字符串,并将它们连接起来,不要用strcat函数。
(习题7.13)
#include <stdio.h>
void main()
{ char s[40],t[20];
int i,j;
printf("string s :"); gets(s);
printf("string t :"); gets(t);
for(i=0;s!=&#39;\0&#39;;i++);
for(j=0;t[j]!=&#39;\0&#39;;j++,i++)
s=t[j];
s=&#39;\0&#39;;
printf("%s\n",s);
}


个人每月工资减去800元后的所得税税率为:不超过500元的部分,税率5%;超过500元至2000元,10%;超过2000元至5000元,15%;超过5000元至20000元,20%;(4档以上本程序不考虑)。编制C语言程序,由键盘输入每月的工资后,计算应交所得税的金额(精确到分)。
(习题5.7)
#include <stdio.h>
void main()
{ float b,sui;
scanf("%f",&b);
b=b-800;
if (b<=0) sui=0;
else if (b<=500) sui=b*.05;
else if (b<=2000) sui=(b-500)*.1 + 500*.05;
else if (b<=5000) sui=(b-2000)*.15 + 1500*.1 + 500*.05;
else if (b<=20000) sui=(b-5000)*.2 + 3000*.15 + 1500*.1 + 500*.05;
printf("%.2f\n", sui);
}


读入被开方数a,用迭代法求出a的平方根。求平方根的迭代公式为
X0=10
Xn+1=(Xn+a/Xn)/2(n>=0)
要求前后两次求出的X值的差的绝对值小于0.00001。
(习题6.11)
#include <stdio.h>
#include <math.h>
void main()
{ float a,x0,x1;
printf("Enter a positive number:");
scanf("%f",&a);
x0=10;
x1=(x0+a/x0)/2;
do
{ x0=x1;
x1=(x0+a/x0)/2;
}while(fabs(x0-x1)>=1e-5);
printf("The square root of %5.2f is %8.5f\n",a,x1);
}
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

发新话题