注意:分数有争议的私聊群主
一.选择题 (每题 2 分)
C 语言程序是由(C)构成的。
A.一些可执行语言
B.main 函数
C.函数
D.字符C 语言程序从(C)开始执行。
A. 程序中的第一条可执行语句
B. 程序中第一个函数
C. 程序中的 Main 函数
D. 包含文件中的第一个函数下列方法中错误的是(D)
A. 主函数可以分为两个部分:主函数说明部分和主函数体。
B. 主函数可以调用任何非主函数的其他函数。
C. 任何非主函数可以调用其它任何非主函数。
D. 程序可以从任何非主函数开始执行。下面四个选项中,合法的标志符是:(D)
A.*y B. Define C. 6a D.c若有以下类型说明语句:char a; int b;float c;double d;则表达式 a*b+d-c 的结果类型为 (D)
A.float B. Char C.int D.double若 int x = 2,y = 3 ,z = 4,则表达式 x < z ? y:z 的结果是(B)
A.4 B.3 C.2 D.0设 a,b 和 c 都是 int 型变量,且 a=3,b=4,c=5,则下面表达式中,值为 0 的表达式是(D)
A、’a’&&’b’ B、a<=b C、a||b+c&&b-c D、!((a<b)&&!c||1)下面(D)表达式的值为 4.
A. 11/3 B. 11.0/3 C. (float)11/3 D. (int)(11.0/3+0.5)已知 int x=5,y=5,z=5;执行语句 x%=y+z;后,x 的值是(C )
A .0 B. 1 C. 5 D. 6为表示逻辑表达式 79<X<90,应使用的 C 语言表达式是 (A)。
A.( X>79 )&&( X<90 ) B. ( X>79 )!=( X<90 ) C. 79<X<90 D. (X>79 )||( X<90 )若 int i=10; 执行下列程序后,变量 i 的正确结果是(A )。
switch ( i ) {
case 9: i+=1;
case 10: i+=1;
case 11: i+=1;
default : i+=1;
}
A、13 B、12 C、11 D、10
- 定义变量int x=1,y=3,z=5;以下语句执行后x,y,z的值是()。答案为1,1,1 所有同学都得分
If(x>y)
x = y; z = x; y = z;
A、x=1 y=5 z=1
B、x=1 y=3 z=5
C、x=3 y=5 z=1
D、x=1 y=5 z=3
二.填空题 (每空 1分)
- 结构化设计中的三种基本结构顺序、选择、循环。
- 若有说明和语句:int a=5,b=6,y=6;b - = - -a;y = (a–)+(++b)则b和y的值分别是3 7。
- 二进制:1010 0001 转为十进制数为161,再转换成十六进制数为0xa1,左移 2 位之后,转为十进制数为132,再转换成十六进制数为0x84;1010 0001 转为十进制数为161,再转换成十六进制数为0xa1,右移 3 位之后,转为十进制数为20,再转换成十六进制数为0x14。
- 二进制:1011 0101 与 1 相或后二进制数为1011 0101,1011 0101 与 0110 0010 相与后二进制数为0010 0000。
- 十六进制:0x55 & 0xff 后的值为0x55,~(0xC4 << 2) 后的值为0xef。
三.程序设计题
- 排序问题(5 分)
输入三个整数 x,y,z,请把这三个数由小到大排序并在屏幕上输出。
void main()
{
int a,b,c,t;
printf("请输入三个整数\n");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
{
t=a;a=b;b=t;
}
if(a>c)
{
t=a;a=c;c=t;
}
if(b>c)
{
t=b;b=c;c=t;
}
printf("%d,%d,%d",a,b,c);
}
- 打印下图图案(5 分)

/*答案不唯一,输出图案即可*/
void main()
{
int n=4;
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
printf(" ");
for(j=i;j<2*n-i-1;j++)
printf("*");
printf("\n");
}
}
- 水仙花数是指一个3位数,各位数字立方和等于该数本身。例如153,1的立方+5的立方+3的立方等于152.输出所有的3位数水仙花数,并输出水仙花数的个数。(5分)注意:统计水仙花个数,很多同学都没有实现
void main()
{
int i,a,b,c;
int count=0;
for(i=100;i <= 999;i++)
{
a=i/100;
b=(i/10)%10;
c=i%10;
if(a*a*a+b*b*b+c*c*c == i)
{
printf("%d为水仙花数!\n",i);
count++;
}
}
printf("共有%d个水仙花数!",count);
}
- 斐波那契数列问题(7分)
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多•斐波(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个 数列:1、1、2、3、5、8、13、21、34、……利用所学的知识求出前 30 项数值(数组最好),这个数列从第3项开始,每一项都等于前两项之和。 并在屏幕上输出。(每行输出 5 个数值)。
void main()
{
int f1,f2;
int f3;
int i;
for(i = 1;i <=20;i++)
{
if(i==1 || i==2)
{
f1 = f2 = 1;
printf("%d\t",f1);
}
else
{
f3 = f1+ f2;
printf("%d\t",f3);
f1 =f2;
f2 = f3;
}
if(i %5 ==0)
{
printf("\n");
}
}
}
- 有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(8分)
void main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k)
printf("%d%d%d\n",i,j,k);
}
}
四.逻辑思维题
谁偷了奶酪(3分)
有四只小老鼠一块出去偷食物(它们都偷食物了),回来时族长问它们都偷了什么食物。
老鼠 A 说:我们每个人都偷了奶酪。老鼠 B 说:我只偷了一颗樱桃。老鼠 C 说:我没偷奶 酪。老鼠 D 说:有些人没偷奶酪。族长仔细观察了一下,发现它们当中只有一只老鼠说了 实话。那么下列的评论正确的是:(A)
a.所有老鼠都偷了奶酪;
b.所有的老鼠都没有偷奶酪;
c.有些老鼠没偷奶酪;
d.老鼠 B 偷了一颗樱桃。今天星期几?(3 分)
有一富翁,为了确保自己的人身安全,雇了双胞胎兄弟两个作保镖。兄弟两个确实尽职 尽责,为了保证主人的安全,他们做出如下行事准则:
a.每周一、二、三,哥哥说谎;
b.每逢四、五、六,弟弟说谎;
c.其他时间两人都说真话。一天,富翁的一个朋友急着找富翁,他知道要想找到富翁只能问兄弟俩,并且他也知道
兄弟俩个的做事准则,但不知道谁是哥哥,谁是弟弟。另外,如果要知道答案,就必须知道
今天是星期几。于是他便问其中的一个人:昨天是谁说谎的日子?结果两人都说:是我说谎
的日子。你能猜出今天是星期几吗?(C)
A.周末
B.周一
C.周四
D.周六
选做:(4、5题任选一题作答,两题都做者按得分高的题赋分。答案要求简洁,会就写,不会别蒙,不给辛苦分)
天秤称木料。(4 分)
桌子上有 12 块木料,这 12 块木料是一模一样的,但是其中有一个和其它的重量不同,
只有一个天秤。请问:怎样称才能用三次就找到那块木料。如何分酒?(6分)
一个人晚上出去打了 10 斤酒,回家的路上碰到了一个朋友,恰巧这个朋友也是去打酒
的。不过,酒家已经没有多余的酒了,且此时天色已晚,别的酒家也都已经打烊了,朋友看
起来十分着急。于是,这个人便决定将自己的酒分给他一半,可是朋友手中只有一个 7 斤和 3 斤的酒桶,两人又都没有带称,如何才能将酒平均分开呢?