C语言第一阶段测试题目汇总.docx
- 文档编号:9936546
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:33
- 大小:68.39KB
C语言第一阶段测试题目汇总.docx
《C语言第一阶段测试题目汇总.docx》由会员分享,可在线阅读,更多相关《C语言第一阶段测试题目汇总.docx(33页珍藏版)》请在冰点文库上搜索。
C语言第一阶段测试题目汇总
C语言测试题目
1约瑟夫问题(难度:
3)3
2生小免问题难度:
23
3裴波那契数列难度:
23
4水仙花数难度:
14
5平面几何直线求解难度:
24
6内存移动难度34
7统计字符串难度:
35
8求和难度:
25
9小球高度难度:
16
10人员查找难度:
26
11整数和与积难度:
36
12士兵与枪难度:
37
13价格求和难度:
17
14字符串替换难度:
37
15字符串查找难度:
37
16难度:
18
17难度:
28
18难度:
38
19难度:
29
20难度:
19
21难度:
210
22难度:
210
23难度:
510
24难度:
411
25难度:
311
26难度:
211
27难度:
211
28难度:
212
29难度:
512
30难度:
512
31难度:
512
32难度:
413
33难度:
213
34难度:
313
35难度:
313
36难度:
314
37难度:
114
38难度:
214
39难度:
214
40难度:
415
41难度:
415
42难度:
215
43五户共井问题难度:
315
44难度:
516
45难度:
216
46EDF调度算法难度:
516
47难度:
117
48难度:
218
49typedef难度:
218
50难度:
219
51atol难度:
219
52难度:
219
53难度:
219
54难度:
220
55难度520
56难度:
120
57难度:
321
58难度:
321
59难度:
321
60难度:
221
61求组合数难度:
422
62排列难度:
422
63内存复制难度:
323
64难度:
324
65难度:
324
66难度:
425
67旋转矩阵难度:
525
68难度225
69难度:
226
70难度:
326
71难度:
326
72难度:
326
73搜索引擎去重问题:
(baidu笔试题目)27
73.1任务1:
28
73.2任务2:
28
74网络爬虫处理(baidu笔试题目)28
74.1任务1:
29
1约瑟夫问题(难度:
3)
一伙强盗抓住了M个人,说你们只能有一个人活下来给我们带路。
把他们排成一个圆圈依次编号1,2...M-1,M,从1开始依次数数,哪个人数到N,就把他拉出来杀掉。
下个人从1开始重新数,直到杀得只剩一个为止。
要求从键盘输入M和N值,打印出最后剩下的那个人的编号。
例如:
输入:
32
输出:
3
2生小免问题难度:
2
有一对兔子,每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问前N个月共有几对兔子?
要求从键盘输入N,依次打印出前N个月兔子对数。
例如:
输入:
2
输出:
3
输入:
3
输出:
4
输入:
4
输出:
6
3裴波那契数列难度:
2
A(n+2)=A(n+1)+A(n),A(0)=A
(1)=1,求A(N)。
要求从键盘输入N,打印出A(N)。
例如:
输入:
0
输出:
1
输入:
2
输出:
2
4水仙花数难度:
1
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
5平面几何直线求解难度:
2
已知平面直线上两点A(3,14)和B(8,39),求直线上另外一点C(x,y)的纵坐标y。
要求从键盘输入x值,打印出y值。
例如:
输入:
10
输出:
49
6内存移动难度3
实现一个my_memory_move的操作。
char*my_memory_move(char*src,char*dest,unsignedintlen)
注意需要考虑如下情况
7统计字符串难度:
3
输入一行字符,最大长度为100,统计出其中有多少个字符串,不算标点。
例如:
输入:
Hi,Welcometosaif!
!
输出:
4
8求和难度:
2
求s=a+aa+aaa+aaaa+aaaaa的值,其中a是一个数字,由键盘输入。
例如:
输入:
1
输出:
12345
9小球高度难度:
1
一球从H米高度自由落下,每次落地后反跳回原高度的一半;再落下,直到它的弹起高度不足1米,计算之前走过了多少米?
要求从键盘输入H值,打印出走过的米数。
例如:
输入:
3
输出:
6.75
10人员查找难度:
2
给定N个人的名字,年龄,身高,体重,请对身高>170,体重<150的人,按年龄由小到大打印出姓名,年龄,身高,体重信息。
要求N和人员名字,年龄,身高和体重信息从键盘输入。
例如:
输入:
3
liubei28160130
guanyu27180140
zhangfei25175160
zhaoyun23178135
输出:
zhaoyun23178135
guanyu27180140
11整数和与积难度:
3
三个正整数a,b,c和为20,求当它们分别是几时,乘积最大?
12士兵与枪难度:
3
六名士兵,各自有一条枪。
某天晚上出现紧急情况,慌乱之中每人都随机的取了一条枪,问有多少种情况,每人个拿的都不是自己的枪?
13价格求和难度:
1
输入两个整数价钱,打印出其和。
比如:
输入:
$123$135
输出:
$258
14字符串替换难度:
3
输入一行字符(长度小于100)和两个字符串,用第二个字符串替换每一个字符串。
要求从键盘输入一行字符和两个字符串,打印出替换后的结果。
例如:
输入:
HelloWorld!
!
World
Saif
输出:
HelloSaif!
!
15字符串查找难度:
3
输入一行字符,找出其中长度最大的单词。
要求从键盘输入一行字符,打印出其中长度最大的字符串。
例如:
输入:
wheniwasyoungi'dlistentotheradiowaitingformyfavoritesongs
输出:
favorite
16难度:
1
某32位系统下,C++程序,请计算sizeof的值(5分).
charstr[]=“
char*p=str;
intn=10;
请计算
sizeof(str)=?
sizeof(p)=?
sizeof(n)=?
voidFoo(charstr[100]){
请计算
sizeof(str)=?
}
void*p=malloc(100);
请计算
sizeof(p)=?
17难度:
2
写出判断ABCD四个表达式的是否正确,若正确,写出经过表达式中a的值
inta=4;
(A)a+=(a++);(B)a+=(++a);(C)(a++)+=a;(D)(++a)+=(a++);
a=?
18难度:
3
回答下面的问题
(1).VoidGetMemory(char**p,intnum){
*p=(char*)malloc(num);
}
voidTest(void){
char*str=NULL;
GetMemory(&str,100);
strcpy(str,"hello");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:
输出“hello”
(2).voidTest(void){
char*str=(char*)malloc(100);
strcpy(str,“hello”);
free(str);
if(str!
=NULL){
strcpy(str,“world”);
printf(str);
}
}
请问运行Test函数会有什么样的结果?
答:
输出“world”
(3).char*GetMemory(void){
charp[]="helloworld";
returnp;
}
voidTest(void){
char*str=NULL;
str=GetMemory();
printf(str);
}
19难度:
2
已知strcat函数的原型是char*strcat(char*strDest,constchar*strSrc);
其中strDest是目的字符串,strSrc是源字符串,返回值是strDest
20难度:
1
inti=10,j=10,k=3;k*=i+j;k最后的值是?
60
21难度:
2
编写一个函数,时分秒,输出该时间的下一秒。
如输入23时59分59秒,则输出0时0分0秒
输入格式为23:
59:
59
输出格式为0:
0:
0
#include
//该函数实现输入时间加1秒后输出!
intmain(void)
{
unsignedinth,m,s,h1,m1,s1;
printf("请输入时间,格式为:
**:
**:
**\n");
scanf("%u:
%u:
%u",&h,&m,&s);
if(h>24||m>=60||s>=60)
printf("输入时间不对!
\n");
else
{
s1=s+1;
if(60==s1)
{
s1=0;
m1=m+1;
if(60==m1)
{
m1=0;
h1=h+1;
}
if(24==h1)
h1=0;
}
}
printf("%u:
%u:
%u的下一秒为:
%u:
%u:
%u\n",h,m,s,h1,m1,s1);
}
22难度:
2
(1)char*p;
(2)char**p;
(3)int*p;
(4)int**p;
(5)double*p;
(6)double**p;
sizeof(p)分别返回什么值
23难度:
5
编写一个人员管理系统,用来管理项目组内的工程师信息。
每个工程师需要保存的信息包括:
姓名,年龄,几年工作经验,
待遇和级别(分为1,2,3,4,5级)
功能1:
启动时从文件读入保存的信息
功能2:
关闭时把当前的信息保存到文件
功能3:
用户可以增加一名工程师
功能4:
用户可以删除一名工程师
功能5:
用户可以按年龄搜索,比如输入26,把所有26岁的工程师列出来
功能6:
用户可以按工作经验搜索,比如输入4,可以把所有工作4年的工程师搜索出来
功能7:
用户可以对所有工程师按年龄从小到大排序
功能8:
按工作经验从长到短排序
功能9:
按级别从高到低排序
功能10:
按级别从高到低排序,级别相同的按照工作经验从长到短排序
24难度:
4
写一个函数,判断一个链表中是否有环
提示:
一个递增一,一个递增二,他们指向同一个接点时就是环出现的地方
25难度:
3
unsignedintintvert(unsignedintx,intp,intn)实现对x的进行翻转,p为起始翻转位,n为需要转换的长度,假设起始点在右边.
如x=0b00010001,p=4,n=3,翻转后x=0b01100001
26难度:
2
假如权限允许的话,比如在没有操作系统的情况下,直接在开发板上运行一个c程序。
要对绝对地址0x100000赋值应该怎么写?
那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么写?
27难度:
2
下面程序输出结果是什么?
unsignedshortA=10;
printf("~A=%d\n",~A);
charc=128;128=10000000
printf("c=%d\n",c);
0b00000000000000001111111111110101
0x0000fff5
1111111111111111111100000000
0xffffff00;
28难度:
2
(1)char*str[20];
(2)char(*str)[];
sizeof(str)分别得到什么值?
29难度:
5
求函数返回值,输入x=9999;
intfunc(x)
{
intcountx=0;
while(x)
{
countx++;
x=x&(x-1);
}
returncountx;
}
30难度:
5
象搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条,我们每次输入的一个字符串为不超过255byte,内存使用只有1G,
请描述思想,写出算法(c语言)
31难度:
5
国内的一些帖吧,如baidu,有几十万个主题,假设每一个主题都有上亿的跟帖子,怎么样设计这个系统速度最好
32难度:
4
写一个函数,它的原形是intcontinumax(char*outputstr,char*intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:
"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回
9,outputstr所指的值为123456789
33难度:
2
有一分数序列:
1/2,1/4,1/6,1/8……,用函数调用的方法,求此数列前20项的和
34难度:
3
有一个16位的整数,每4位为一个数,写函数求他们的和。
解释:
整数110101*********1
和1101+0101+1011+0111
35难度:
3
写出程序把一个链表中的接点顺序倒排
36难度:
3
两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串
voidinsert(char*s,char*t,inti)
37难度:
1
分析下面的代码:
char*a="hello";
char*b="hello";
if(a==b)
printf("YES");
else
printf("NO")
38难度:
2
编程实现:
把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数
39难度:
2
求1000!
的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3);
求出1->1000里,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,
能被625整除的数的个数n4.
1000!
末尾的零的个数=n1+n2+n3+n4;
40难度:
4
有双向循环链表结点定义为:
structnode
{
intdata;
structnode*front,*next;
};
有两个双向循环链表A,B,知道其头指针为:
pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
41难度:
4
编程实现:
找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad"
42难度:
2
判断一个字符串是不是回文,回文数就是左右对称的数字,比如:
123321,345676543
43五户共井问题难度:
3
ABCDE五家人共用一口井,已知井深不超过10m,ABCDE五家绳长各不相同。
若从井口放下绳索正好到达水面时,需要:
(a)A家的绳2条接上B家的绳1条
(b)B家的绳3条接上C家的绳1条
(c)C家的绳4条接上D家的绳1条
(d)D家的绳5条接上E家的绳1条
(e)E家的绳6条接上A家的绳1条
问井深和各家的绳长
44难度:
5
一语句实现x是否为2的若干次幂的判断
45难度:
2
用指针的方法,将字符串“ABCD1234efgh”前后对调显示
46EDF调度算法难度:
5
一个嵌入式实时系统,同时只能有一个任务处于运行当中,其它的任务都处于待状态。
当系统
内部有多个任务需要运行时,对各个任务是按照优先级进行调度的,也就是说,每次运行的都
是所有任务当中优先级最高的一个任务,其中最好的一种调度方法是EDF算法。
EDF算法的思想就是根据当前任务还需要多少时间才能完成,来计算它的优先级。
而随着任务
的不断运行,它所需要的时间也不断的减少,这时就需要根据当前还需要多少时间来动态的更新
优先级。
比如下面这个系统,就使用一种EDF思想的变种算法,系统规定每次运行的任务总是当
前系统中优先级最高的任务,每个任务运行时最高只能运行3个时间片的时间:
系统内部有两个任务A和B,初始时任务分别需要5个和6个时间片(时间片就是一个时间单位)。
计算优先级的公式为:
P=2*(完成任务还需要的时间片)-3*(已经等待的时间片)
P值越小表示优先级越高。
那么我们可以计算出:
P1=2*5-3*0=10
P2=2*6-3*0=12
任务1的优先级比较高,被调度器选中来运行3个时间片,运行过后任务1还需要2个时间片就能完成
这时它们的优先级变为:
P1=2*2-3*0=4
P2=2*6-3*3=3
任务2的优先级比较高,被调度器选中来运行3个时间片,运行过后还任务2还需要3个时间片才能完成
这时它们的优先级变为:
P1=2*2-3*3=-5
P2=2*3-3*0=6
任务1的优先级较高,被调度器选中来运行2个时间片完成了,此时只剩下任务2继续按照上面的规则
被调度运行了。
那么任务1和任务2完成的顺序就是12
(1)现在系统当中有4个任务
任务名称初始所需时间
A8
B9
C10
D12
当系统运行到第5个时间片时,任务E加入进来了,按照同样的规则参加调度。
E6
请编程模拟出它们完成的顺序。
(2)如果现在要把系统换成另外一种调度策略
P=2*(完成任务还需要的时间片)-3*(已经等待的时间片)+2
请修改上面的代码实现
(3)再换成另外一种调度策略呢
P=已经等待的时间片+1
47难度:
1
写出floatx与“零值”比较的if语句
48难度:
2
下面的程序执行结果是什么?
inta=0;
printf("%d,%d,%d",a++,a++,a+=2);
49Typedef难度:
2
typedef用于类型重定义
例如:
typedefintarray10[10];
就可以把array10当作长度为10的整形数组使用
#include
intinc(inta)
{
return(++a);
}
intmulti(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedefint(FUNC1)(intin);
typedefint(FUNC2)(int*,int*,int*);
voidshow(FUNC2fun,intarg1,int*arg2)
{
FUNC1p=&inc;
inttemp=p(arg1);
fun(&temp,&arg1,arg2);
printf("%d\n",*arg2);
}
main()
{
inta;
show(multi,10,&a);
return0;
}
50难度:
2
用两个栈实现一个队列的功能?
要求给出算法和思路!
51atol难度:
2
不使用库函数,实现在c语言库函数中将一个字符转换成整型的函数atol
52难度:
2
(void*)ptr和(*(void**))ptr的结果是否相同?
其中ptr为同一个指针
53难度:
2
inta,b,c请写函数实现c=a+b,不可以改变数据类型,如将c改为longint,关键是如何处理溢出问题
参考答案:
intadd(inta,intb,int*c)
{
*c=a+b;
return(a>0&&b>0&&(*ca||*c>b)));
}
54难度:
2
写一个函数
voidcombin(intn);
输出和为一个给定整数的所有组合
例如n=5
5=0+5;5=1+4;5=2+3;5=3+2;5=4+1;5=5+0
则输出
(0,5)
(1,4)
(2,3)
(3,2)
(4,1)
(5,0)
55难度5
写一段程序,找出数组中第k大小的数,输出数所在的位置。
例如{2,4,3,4,7}中,第一大的数是7,位置在4。
第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。
函数接口为:
intfind_orderk(constint*narry,constintn,constintk)
要求算法复杂度不能是O(n^2)
提示:
可以先用快速排序进行排序,其中用另外一个进行地址查找
56难度:
1
请写出下列代码的输出内容
#include
main()
{
inta,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:
%d,%d,%d",b,c,d);
return0;
}
57难度:
3
用递归算法判断数组a[N]是否为一个递增数组。
递归的方法,记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束:
58难度:
3
给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数
longintersect(longa[],longb[],longalength,longblength,longdongtai[])
59难度:
3
在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:
"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789
60难度:
2
分析下面程序结果
typedefstruct
{
inta:
2;
intb:
2;
intc:
1;
}test;
testt;
t.a=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第一阶段 测试 题目 汇总
![提示](https://static.bingdoc.com/images/bang_tan.gif)