中南林C语言强化训练1Word文档格式.docx
- 文档编号:17207852
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:24
- 大小:26.88KB
中南林C语言强化训练1Word文档格式.docx
《中南林C语言强化训练1Word文档格式.docx》由会员分享,可在线阅读,更多相关《中南林C语言强化训练1Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
}DATE;
structdata{intcat;
DATEcow;
doubledog;
}too;
DATEmax;
则语句printf("
%d"
sizeof(structdate)+sizeof(max));
的执行结果是:
_______
22、队列和栈有什么区别?
23、写出下列代码的输出内容
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)
INCp=&
inc;
inttemp=p(arg1);
fun(&
temp,&
arg1,arg2);
%d\n"
*arg2);
inta;
show(multi,10,&
a);
return0;
24、请找出下面代码中的所以错误
说明:
以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”
1、#include"
string.h"
2、main()
3、{
4、char*src="
hello,world"
;
5、char*dest=NULL;
6、intlen=strlen(src);
7、dest=(char*)malloc(len);
8、char*d=dest;
9、char*s=src[len];
10、while(len--!
=0)
11、d++=s--;
12、printf("
%s"
dest);
13、return0;
14、}
25.-1,2,7,28,,126请问28和126中间那个数是什么?
26.用两个栈实现一个队列的功能?
要求给出算法和思路!
27.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?
28.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
29.软件测试都有那些种类?
30.确定模块的功能和模块的接口是在软件设计的那个队段完成的?
31.enumstring
x1,
x2,
x3=10,
x4,
x5,
}x;
问x=;
9.unsignedchar*p1;
unsignedlong*p2;
p1=(unsignedchar*)0x801000;
p2=(unsignedlong*)0x810000;
请问p1+5=;
p2+5=;
二.找错题:
1.请问下面程序有什么错误?
inta[60][250][1000],i,j,k;
for(k=0;
k<
=1000;
k++)
for(j=0;
j<
250;
j++)
for(i=0;
i<
60;
i++)
a[i][j][k]=0;
2.#defineMax_CB500
voidLmiQueryCSmd(StructMSgCB*pmsg)
unsignedcharucCmdNum;
......
for(ucCmdNum=0;
ucCmdNum<
Max_CB;
ucCmdNum++)
{
......;
3.以下是求一个数的平方的程序,请找出错误:
#defineSQUARE(a)((a)*(a))
inta=5;
intb;
b=SQUARE(a++);
4.typedefunsignedcharBYTE
intexamply_fun(BYTEgt_len;
BYTE*gt_code)
BYTE*gt_buf;
gt_buf=(BYTE*)MALLOC(Max_GT_Length);
......
if(gt_len>
Max_GT_Length)
{
returnGT_Length_ERROR;
}
.......
三.问答题:
1.IPPhone的原理是什么?
2.TCP/IP通信建立的过程怎样,端口有什么作用?
3.进程和线程的差别。
2.Heap与stack的差别。
3.给两个变量,如何找出一个带环单链表中是什么地方出现环的?
一个递增一,一个递增二,他们指向同一个接点时就是环出现的地方
4.网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
练习二:
1.用宏定义写出swap(x,y)
2.数组a[N],存放了1至N-1个数,其中某个数重复一次。
写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型:
intdo_dup(inta[],intN)
3一语句实现x是否为2的若干次幂的判断
4.unsignedintintvert(unsignedintx,intp,intn)实现对x的进行转换,p为起始转化位,n为需要转换的长度,假设起始点在右边.如x=0b00010001,p=4,n=3转换后x=0b01100001
5.什么是预编译,何时需要预编译:
6.
char*constp;
charconst*p
constchar*p
上述三个有什么区别?
7.
charstr1[]="
abc"
charstr2[]="
constcharstr3[]="
constcharstr4[]="
constchar*str5="
constchar*str6="
char*str7="
char*str8="
cout<
<
(str1==str2)<
endl;
(str3==str4)<
(str5==str6)<
(str7==str8)<
结果是:
8.以下代码中的两个sizeof用法有问题吗?
voidUpperCase(charstr[])//将str中的小写字母转换成大写字母
for(size_ti=0;
i<
sizeof(str)/sizeof(str[0]);
++i)
if('
a'
=str[i]&
&
str[i]<
='
z'
)
str[i]-=('
-'
A'
);
charstr[]="
aBcDe"
"
str字符长度为:
<
sizeof(str)/sizeof(str[0])<
UpperCase(str);
str<
7.
main()
inta[5]={1,2,3,4,5};
int*ptr=(int*)(&
a+1);
printf("
%d,%d"
*(a+1),*(ptr-1));
8.请问以下代码有什么问题:
intmain()
chara;
char*str=&
a;
strcpy(str,"
hello"
);
printf(str);
9.
char*s="
AAA"
s);
s[0]='
B'
有什么错?
9、嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。
10、关键字static的作用是什么?
11、关键字const有什么含意?
12、关键字volatile有什么含意?
并举出三个不同的例子?
13
int(*s[10])(int)表示的是什么啊
14.有以下表达式:
inta=248;
b=4;
intconstc=21;
constint*d=&
int*conste=&
b;
intconst*fconst=&
请问下列表达式哪些会被编译器禁止?
*c=32;
d=&
*d=43;
e=34;
e=&
f=0x321f;
15.交换两个变量的值,不使用第三个变量。
即a=3,b=5,交换之后a=5,b=3;
16.c和c++中的struct有什么不同?
17.#include<
#include<
stdlib.h>
voidgetmemory(char*p)
p=(char*)malloc(100);
strcpy(p,"
helloworld"
intmain()
{
char*str=NULL;
getmemory(str);
printf("
%s/n"
str);
free(str);
}
18.charszstr[10];
strcpy(szstr,"
0123456789"
产生什么结果?
18.列举几种进程的同步机制,并比较其优缺点。
19.进程之间通信的途径
20.进程死锁的原因
21.死锁的4个必要条件
22.死锁的处理
23.操作系统中进程调度策略有哪几种?
24.数组和链表的区别
25:
(void*)ptr和(*(void**))ptr的结果是否相同?
其中ptr为同一个指针
26:
intmain()
intx=3;
x);
return1;
问函数既然不会被其它函数调用,为什么要返回1?
27,要对绝对地址0x100000赋值,我们可以用
(unsignedint*)0x100000=1234;
那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?
28,已知一个数组table,用一个宏定义,求出数据的元素个数
#defineNTBL
#defineNTBL(sizeof(table)/sizeof(table[0]))
29
分析下面的程序:
voidGetMemory(char**p,intnum)
*p=(char*)malloc(num);
intmain()
GetMemory(&
str,100);
if(str!
=NULL)
strcpy(str,"
world"
\nstris%s"
getchar();
问输出结果是什么?
30
1)给定结构structA
chart:
4;
chark:
unsignedshorti:
8;
unsignedlongm;
};
问sizeof(A)=?
2)下面的函数实现在一个数上加一个数,有什么错误?
请改正。
intadd_n(intn)
staticinti=100;
i+=n;
returni;
3)求函数返回值,输入x=9999;
intfunc(x)
intcountx=0;
while(x)
countx++;
x=x&
(x-1);
returncountx;
结果呢?
练习三:
1inta,b,c请写函数实现C=a+b,不可以改变数据类型,如将c改为longint,关键是如何处理溢出问题
2
分析:
structbit
{inta:
3;
intb:
2;
intc:
bits;
char*c=(char*)&
s;
cout<
sizeof(bit)<
endl;
*c=0x99;
cout<
s.a<
endl<
s.b<
endl<
s.c<
inta=-1;
%x"
a);
输出为什么是
3、改错:
intmain(void){
int**p;
intarr[100];
p=&
arr;
return0;
3、下面这个程序执行后会有什么错误或者效果:
#defineMAX255
intmain()
unsignedcharA[MAX],i;
//i被定义为unsignedchar
for(i=0;
=MAX;
A[i]=i;
4
structname1{
charstr;
shortx;
intnum;
}
structname2{
charstr;
intnum;
shortx;
}
sizeof(structname1)=,sizeof(structname2)=
5
structs1
inti:
8;
intj:
4;
inta:
3;
doubleb;
};
structs2
{
inti:
intj:
doubleb;
inta:
};
sizeof(s1)=%d\n"
sizeof(s1));
sizeof(s2)=%d\n"
sizeof(s2));
6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。
4、有一个16位的整数,每4位为一个数,写函数求他们的和。
5、有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O
(1),使用交换,而且一次只能交换两个数.
6、写出程序把一个链表中的接点顺序倒排
typedefstructlinknode
intdata;
structlinknode*next;
}node;
7写出程序删除链表中的所有接点
8两个字符串,s,t;
把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串
9、分析下面的代码:
char*a="
char*b="
if(a==b)
YES"
else
NO"
10.给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数
longjiaoji(long*a[],longb[],long*alength,longblength,long*dongtai[])
11.单连表的建立,把'
--'
26个字母插入到连表中,并且倒叙,还要打印!
12.请问一下程序将输出什么结果?
char*RetMenory(void)
charp[]=“hellowworld”;
returnp;
voidTest(void)
char*str=NULL;
str=RetMemory();
13写一个函数,它的原形是intcontinumax(char*outputstr,char*intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:
"
abcd12345ed125ss123456789"
的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789
14不用库函数,用C语言实现将一整型数字转化为字符串
15、用指针的方法,将字符串“ABCD1234efgh”前后对调显示
16、有一分数序列:
1/2,1/4,1/6,1/8……,用函数调用的方法,求此数列前20项的和
17有一个数组a[1000]存放0--1000;
要求每隔二个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。
以7个数为例:
{0,1,2,3,4,5,6,7}0-->
1-->
2(删除)-->
3-->
4-->
5(删除)-->
6-->
7-->
0(删除),如此循环直到最后一个数被删除。
18实现strcmp
intStrCmp(constchar*str1,constchar*str2)
19实现子串定位
intFindSubStr(constchar*MainStr,constchar*SubStr)
20写一个函数,功能:
完成内存之间的拷贝
21。
编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。
22。
请编写一个C函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。
23一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指向的节点?
24.写一函数,实现删除字符串str1中含有的字符串str2.
25.给定字符串A和B,输出A和B中的最大公共子串。
比如A="
aocdfe"
B="
pmcdfa"
则输出"
cdf"
26,求1000!
的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3);
27.有双向循环链表结点定义为:
structnode
{intdata;
structnode*front,*next;
};
有两个双向循环链表A,B,知道其头指针为:
pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
28.编程实现:
找出两个字符串中最大公共子字符串,如"
abccade"
"
dgcadde"
的最大子串为"
cad"
29.编程实现:
把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列库函数
30斐波拉契数列递归实现的方法如下:
intFunct(intn)
{
if(n==0)return1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 语言 强化 训练