python编程题题库一,请问我这是哪错了?

一、选择题1、C 语言中,函数返回值类型的定义可以缺省,此时函数返回值的隐含类型是____> A. void
> B. int
> C. float
> D. double
答案:A
2、在 VS2013 下,这个结构体所占的空间大小是____字节typedef struct{
int a;
char b;
short c;
short d;
}AA_t;
A. 16 B. 9
C. 12 D. 8
分析:> 一般编译器为 12 个字节。
因为 一般编译器 定义 int 为 4 字节,short 为 2字节, char 为 1字节,而且要考虑 内存分配 4 字节对齐。
int a; -- 需要 4 bytes
char b; -- 需要 1 byte
short c; -- 需要 2 bytes
short d; -- 需要 2 bytes.
分配 a 4 字节
分配 b c 4 字节 (浪费1字节 )
分配 d 4 字节 (浪费2字节 )
共用去 12 字节.
-----------------------------------------------------------
>国内尚用的过时的编译器TC,定义 int 为 2 字节. 内存分配 2 字节对齐:
int a; -- 需要 2 bytes, 分配 2
char b; -- 需要 1 byte, 分配 2
short c; -- 需要 2 bytes, 分配 2
short d; -- 需要 2 bytes. 分配 2
共用去 8 字节.
答案:C
3、不正确的赋值或赋初值的方式是____A. char str[6]={‘\0’};
B. char str[7] = "string";
C. char str[10];str = "string";
D. char str[6] = "g";
答案:C
4、 若有以下定义和语句,则选项中错误的语句是____int a = 4,b = 3,*p,*q,*w;
p = &a;
q = &b;
w = q;
q = NULL;
A. *q = 0 B. w = p C. *p = a D. *p = *w
答案:A
5、1<<3+2 的值是____A. 32 B. 10 C. 16 D. 6
注意优先级 13答案:A
6、运行以下 C 语言代码,输出的结果是____int main()
{
char *str[3] = {"stra","strb","strc"};
char *p = str[0];
int i = 0;
while(i < 3)
{
printf("%s ",p++);
i++;
} r
eturn 0;
}
A. stra strb strc B. stra tra ra C. s s s D. s t r
答案:B
7、 在C语言中,若有定义: int a[4][10] (其中0<=i<4,0<=j<10); 则下列选项中不能表示数组元素 a[i][j] 值的是____A. *(a+i)+j
B. *(&a[0][0]+10*i+j)
C. *(a[i]+j)
D. *(*(a+i)+j)
答案:A
8、若 p1、p2 都是整形指针, p1 已经指向变量 x ,要使 p2 也指向 x , ____是正确的A. p2 = p1; B. p2 = **p1; C. p2 = &p1; D. p2 = *p1;
答案:A
9、若有以下说明语句struct student
{
int num;
char name[32];
float score;
}stu;
则下面的叙述不正确的是____A. struct 是结构体类型的关键字
B. struct student 是用户定义的结构体类型
C. num, score 都是结构体成员名
D. stu 是用户定义的结构体类型名
答案:D
10、下列可用于C语言程序标识符的一组是(名字间以逗号分隔)_____A. For, -abc, IF
B. For, _abc, IF
C. 2_a, xyz, b1_s
D. void, d, WORD
答案:C
11、以下哪个 for 语句是错误的____A. for(i=0; i<10; i--);
B. for(int i=0; i<10, j<10; i++);
C. for(i=0; i++);
D. for(i=0; i<10,j<10; i++);
答案:B
12、以下不能正确进行字符串初始化的语句是____A. char str[8] = {'g', 'o', 'o', 'd', '!'};
B. char str[5] = "good!";
C. char *str = "good!";
D. char str[5] = {'g', 'o', 'o', 'd', '!'};
答案:B
二、填空题1、下面的程序,输出结果正确的是____int main()
{
int a = 5;
if( a = 0 ){
printf("%d", a - 10);
} e
lse
{
printf("%d", a++);
} r
eturn 0;
}
A. -5 B. 6 C. 1 d. 0
答案:D
2、有如下代码char acHello[] = "hello\0world";
char acNew[15] = {0};
strcpy(acNew,acHello);
则 strlen(acNew) =_____________, sizeof(acHello) = ______________
答案:5 12
3、如下代码的输出结果是_________#pragma pack(4)/*编译选项,表示4字节对齐 平台:VS2013。语言:C语言*/
int main(int argc, char* argv[])
{
struct tagTest1
{
short a;
char d;
long b;
long c;
};
struct tagTest2
{
long b;
short c;
char d;
long a;
};
struct tagTest3
{
short c;
long b;
char d;
long a;
};
struct tagTest1 stT1;
struct tagTest2 stT2;
struct tagTest3 stT3;
printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3));
return 0;
}
#pragma pack()
答案:12 12 16
4、下面的代码中,函数Test执行完毕后,打印的结果是 ____________unsigned long g_ulGlobal = 0;
void GlobalInit(unsigned long ulArg)
{
ulArg = 0x01;
return;
}
void Test()
{
GlobalInit(g_ulGlobal);
printf("%lu", g_ulGlobal);
return;
}
答案:0
5、写出函数指针,要求返回值是 void , 无参数 _____________答案:void(*p)()
6、如下代码结果是多少 a= ____ , x=____int main()
{
int a,x;
for(a = 0,x = 0; a<=1 && !x++; a++)
{
a++;
}
printf("%d %d",a,x);
return 0;
}
答案:2 1
7、如下代码运行结果是多少_______int main()
{
unsigned char a = 0xA5;
unsigned char b = ~a>>4+1;
printf("%d\n",b);
return 0;
}
答案:250
8、 如下代码输出结果是什么_______const int i = 0;
int *j = (int *) &i;
*j = 1;
printf("%d,%d", i, *j)
答案:1,1
9、写出中缀表达式: 12 + 5 * (2 + 6) - 1 对应的后缀表达式:_______________答案:12 5 2 6+* + 1-
10、如下代码输出结果是多少__________int f(int x,int y)
{
return (x&y)+((x^y)>>1);
}
int main()
{
int result = f(2,4);
printf("%d\n", result);
return 0;
}
答案:3
11、如下代码的输出结果是________int main()
{
int j=4;
int i=j;
for ( ; i<=2*j; i++ )
{
switch ( i/j )
{
case 0:
case 1:
printf("*");
break;
case 2:
printf("#");
}
}
return 0;
}
答案:****#
12、如下代码输出结果是__________int main()
{
int arr[] = {1,2,3,4,5};
int *ptr = (int *)(&arr+1);
printf("%d %d\n",*(arr+1),*(ptr - 1));
return 0;
}
答案:2 5
13、以下程序运行后,输出结果是____void main()
{
char *szStr = "abcde";
szStr += 2;
printf("%lu\n",szStr);
return;
}
A. cde
B. 字符 c 的 ASCLL 码值
C. "abcde" 这个常串中字符 c 所在的地址
D. 出错
答案:C
14、假设所有变量均为整型,则表达式 (a=2,b=5,a++,b++,a+b) 的值为_______________答案:9
15、以下代码的输出是________int main()
{
int i,x,y;
i = x = y = 0;
do
{
++i;
if( i%2 )
x += i,
i++;
y += i++;
} while ( i<=7 );
printf("%d %d %d", i, x, y);
}
答案:9 1 20
16、写一个表达式,表示一个整数即是奇数又是3的倍数___________答案:n%2!=0 && n%3==0
三、智力题1、夜晚过桥
A、B、C、D 四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时 1、2、5、10 分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,如何安排,能够在17分钟内这四个人都过桥?
每次让用时最短的人回来送手电:
1、CD
-->
AB过桥 -- 2min
-->
AB
2、ACD -->
A回来
-- 1min
-->
B
3、A
-->
CD过桥 -- 10min -->
BCD
4、AB
-->
B回来
-- 2min
-->
CD
4、
-->
AB过桥 -- 2min
-->
ABCD
总计:2+1+10+2+2 = 17min
2、判断疯狗
有 50 家人家,每家一条狗。有一天警察通知, 50 条狗当中有病狗,行为和正常狗不一样。每人只能通过观察别人家的狗来判断自己家的狗是否生病,而不能看自己家的狗,如果判断出自己家的狗病了,就必须当天一枪打死自己家的狗。结果,第一天没有枪声,第二天没有枪声,第三天开始一阵枪响,问:一共死了几条狗?
第一天没有枪声,说明病狗数量大于1,
如果只有一条病狗,其他人看到的是48条正常狗和1条病狗,病狗主人发现没有枪声就会知道是自己的狗病了,就会开枪,但没有枪声,病狗>1;
第二天没有枪声,说明病狗数量大于2,
如果有两条病狗,其他人看到47条正常狗和2条病狗,病狗主人看到48条正常狗和1条病狗,第一天没有枪声所有人意识到病狗数量大于1,如果一共2条病狗,那么两个病狗主人第二天就会判断出自己的狗是病狗,就会开枪,但没有枪声,病狗>2;
第三天开始一阵枪声,说明病狗数量为3,
前两天没有枪声,所有人意识到病狗数量大于2,病狗数量为3,其他人看到的是46条正常狗和3条病狗,病狗主人看到47条正常狗和2条病狗,但通过前两天的判断,病狗数量大于2,从而判断出自己的狗是病狗,第三天病狗主人开枪;
一共死了3条病狗。
3、用数字 5,5,5,1 ,进行四则运算,每个数字当且仅当用一次,要求运算结果值为24#include <stdio.h>
#include <math.h>
int main()
{
int number = 5 * sqrt(5 * 5) - 1;
printf("%d\n", number);
return 0;
}
4、镜像问题
假设你站在镜子前,抬起左手,抬起右手,看看镜中的自己。当你抬起左手时,镜中的自己抬起的似乎是右手。可是当你仰头时,镜中的自己也在仰头,而不是低头。为什么镜子中的影像似乎颠倒了左右,却没有颠倒上下?
镜子原理:物像对称,以镜面为对称面
镜中成像的点和你的身体同样位置的点总是与镜面垂直
5、操纵开灯
一个屋子有一个门(门是关闭的)和3盏电灯。屋外有3个开关,分别与这3盏灯相连。你可以随意操纵这些开关,可一旦你将门打开,就不能变换开关了。确定每个开关具体管哪盏灯?
开关A B C
把A打开一段时间,闭合A,打开B
开门
亮着的是B
用手感受剩下两个的温度,热的是A,剩下的是C
6、飞机绕地球
每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈。问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,不允许中途降落,中间没有飞机场)
3架飞机5此起飞
ABC 3架同时起飞,
1/8时,C给AB加满油,C返航,
1/4时,B给A加满油,B返航,
A到达1/2时,C从机场逆向起飞,3/4时,C和空油的A平分油,同时B从机场逆向起飞,
AC达7/8时,与B平分油,ABC同时返航。
7、3ml 5ml 杯子各一个,拼出 4ml 的容量。方法1:
3ml的杯子装满水,倒进5ml杯中,此时5ml杯中还剩2ml空间,重复一遍,3ml的杯中就剩1ml了,把5ml的杯中水都倒了,把1ml倒进5ml杯中,再把装满3ml的杯中水倒入,这样一共4ml。
方法2:
把装满5ml的杯中水倒入3ml的杯子,把3ml的杯子水倒了,把5ml杯子剩下的2ml水倒入3ml的杯子,再装满5ml的杯子,把水倒入3ml的杯子,剩下的就是4ml。
8、盲人分袜
有两位盲人,他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同,而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?
因为每对袜子都有一张商标纸连着,而且袜子不分左右,
将每队袜子拆开,每拆开一对就分给双方,
八对袜子分完,每人拿到两对黑袜和白袜。
9、黑白帽子一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其他人帽子的颜
色,却看不到自己的。主持人先让大家看看别人头上戴的是什么帽子,然后关灯,如果有人认为自己戴的是黑帽
子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三
次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子
1、第一次观察,关灯,如果只有一顶黑帽子,那没有看见黑帽子的人就是自己,但没有人打自己,说明黑帽子>1;
2、第二次,如果有2顶黑帽子,如果只看到一顶黑帽子,就可以断定自己是黑帽子,就会打自己,但是也没有,说明黑帽子>2;
3、第三次,有打耳光声音,戴黑帽子的人看到2顶黑帽子,但通过前两次判断,黑帽子大于2,所以判断出自己是黑帽子,就会打自己。
一共3人带着黑帽子。
10、被污染的药丸你有四个装药丸的罐子,每个药丸都有一定的重量,被污染的药丸是没被污染的重量+1.只称量一次,如何判断哪
个罐子的药被污染了?
将4个罐子分别命名1,2,3,4;设没被污染的药丸重量x,被污染的药丸重量x+1,
取对应罐子名数字的药丸:罐子1中取1颗药丸,罐子2中取2颗药丸,罐子3中取3颗药丸,罐子4中取4颗药丸,
称重:
如果罐子1的药丸被污染,重量:(10x+1);
如果罐子2的药丸被污染,重量:(10x+2);
如果罐子3的药丸被污染,重量:(10x+3);
如果罐子4的药丸被污染,重量:(10x+4)。
11、天平秤球假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比。最少要称多少次
才能找出这个较重的球?
第15天
将球分为3份,ABC,AB各有3个球,C有2个球,
比较AB:
1、平衡,比较C中的两个即可,
2、不平衡,比较重的一方,任取两个球比较,
平衡,则剩下的球是较重的球;
不平衡,天平指向的一方就是较重的球。
12、砝码分盐有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?
1、平分140g盐,每份70g
2、平分70g盐,每份35g
3、用7g、2g反码分出35g盐,一份20g一份15g,
天平两边:15+7和20+2
把15g和剩下的35g相加成50g,20g和70g相加成90g盐。
13、如何过桥小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,
小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃
后30秒就会熄灭。问:小明一家如何过桥
1、小明
1s
2、弟弟+爸爸
6s
3、妈妈+爷爷
12s
总计:1+6+12=19s
14、烧绳子计时
烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
AB两条绳子,同时烧,其中A绳两头都烧,
30min后,A烧完,点燃B另一头,15min后烧完,一共45min,
再取一根绳子,两头烧,烧完30min,总计一小时十五分钟。
15、楼梯捡钻石
一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?
前5层时不拿,如果遇到比前5层大的钻石就拿,否则拿最后一颗钻石。
16、七天分金条
你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?
分成(1) (2,3) (4,5,6,7)
1、(1)
2、用(2,3)换(1)
3、(1)
4、用(4,5,6,7)换(1)和(2,3)
5、(1)
6、用(2,3)换(1)
7、(1)
}

分类专栏
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
成就一亿技术人!
hope_wisdom 发出的红包
实付元使用余额支付
点击重新获取
钱包余额
0
抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。余额充值
}

我要回帖

更多关于 python编程题题库 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信