中南林C语言强化训练1.docx
- 文档编号:4288596
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:24
- 大小:26.88KB
中南林C语言强化训练1.docx
《中南林C语言强化训练1.docx》由会员分享,可在线阅读,更多相关《中南林C语言强化训练1.docx(24页珍藏版)》请在冰豆网上搜索。
中南林C语言强化训练1
练习一:
1.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
2.不能做switch()的参数类型是:
3.static有什么用途?
(请至少说明两种)
4.引用与指针有什么区别?
5.描述实时系统的基本特性
6.全局变量和局部变量在内存中是否有区别?
如果有,是什么区别?
7.什么是平衡二叉树?
8.堆栈溢出一般是由什么原因导致的?
9.冒泡排序算法的时间复杂度是什么?
10.写出floatx与“零值”比较的if语句。
11.Internet采用哪种网络协议?
该协议的主要层次结构?
12.Internet物理地址和IP地址转换采用什么协议?
13.IP地址的编码分为哪俩部分?
14、局部变量能否和全局变量重名?
15、如何引用一个已经定义过的全局变量?
16、全局变量可不可以定义在可被多个.C文件包含的头文件中?
为什么?
17、语句for(;1;)有什么问题?
它是什么意思?
18、do……while和while……do有什么区别?
19、请写出下列代码的输出内容
#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;
}
20、static全局变量与普通的全局变量有什么区别?
static局部变量和普通局部变量有什么区别?
static函数与普通函数有什么区别?
21、设有以下说明和定义:
typedefunion{longi;intk[5];charc;}DATE;
structdata{intcat;DATEcow;doubledog;}too;
DATEmax;
则语句printf("%d",sizeof(structdate)+sizeof(max));的执行结果是:
_______
22、队列和栈有什么区别?
23、写出下列代码的输出内容
#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)
{
INCp=&inc;
inttemp=p(arg1);
fun(&temp,&arg1,arg2);
printf("%d\n",*arg2);
}
main()
{
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 { ......; } 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[]="abc"; constcharstr3[]="abc"; constcharstr4[]="abc"; constchar*str5="abc"; constchar*str6="abc"; char*str7="abc"; char*str8="abc"; cout<<(str1==str2)< cout<<(str3==str4)< cout<<(str5==str6)< cout<<(str7==str8)< 结果是: 8.以下代码中的两个sizeof用法有问题吗? voidUpperCase(charstr[])//将str中的小写字母转换成大写字母 { for(size_ti=0;i if('a'<=str[i]&&str[i]<='z') str[i]-=('a'-'A'); } charstr[]="aBcDe"; cout<<"str字符长度为: "< UpperCase(str); cout< 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); return0; } 9. char*s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s); 有什么错? 9、嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。 10、关键字static的作用是什么? 11、关键字const有什么含意? 12、关键字volatile有什么含意? 并举出三个不同的例子? 13 int(*s[10])(int)表示的是什么啊 14.有以下表达式: inta=248;b=4;intconstc=21;constint*d=&a; int*conste=&b;intconst*fconst=&a; 请问下列表达式哪些会被编译器禁止? 为什么? *c=32;d=&b;*d=43;e=34;e=&a;f=0x321f; 15.交换两个变量的值,不使用第三个变量。 即a=3,b=5,交换之后a=5,b=3; 16.c和c++中的struct有什么不同? 17.#include #include voidgetmemory(char*p) { p=(char*)malloc(100); strcpy(p,"helloworld"); } intmain() { char*str=NULL; getmemory(str); printf("%s/n",str); free(str); return0; } 18.charszstr[10]; strcpy(szstr,"0123456789"); 产生什么结果? 为什么? 18.列举几种进程的同步机制,并比较其优缺点。 19.进程之间通信的途径 20.进程死锁的原因 21.死锁的4个必要条件 22.死锁的处理 23.操作系统中进程调度策略有哪几种? 24.数组和链表的区别 25: (void*)ptr和(*(void**))ptr的结果是否相同? 其中ptr为同一个指针 26: intmain() { intx=3; printf("%d",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() { char*str=NULL; GetMemory(&str,100); strcpy(str,"hello"); free(str); if(str! =NULL) { strcpy(str,"world"); } printf("\nstris%s",str); getchar(); } 问输出结果是什么? 30 1)给定结构structA { chart: 4; chark: 4; 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: 3; }; intmain() { bits; char*c=(char*)&s; cout< *c=0x99; cout< inta=-1; printf("%x",a); return0; } 输出为什么是 3、改错: #include intmain(void){ int**p; intarr[100]; p=&arr; return0; } 3、下面这个程序执行后会有什么错误或者效果: #defineMAX255 intmain() { unsignedcharA[MAX],i;//i被定义为unsignedchar for(i=0;i<=MAX;i++) 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: 8; intj: 4; doubleb; inta: 3; }; printf("sizeof(s1)=%d\n",sizeof(s1)); printf("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="hello"; char*b="hello"; if(a==b) printf("YES"); else printf("NO"); 10.给两个数组和他们的大小,还有一动态开辟的内存,求交集,把交集放到动态内存dongtai,并且返回交集个数 longjiaoji(long*a[],longb[],long*alength,longblength,long*dongtai[]) 11.单连表的建立,把'a'--'z'26个字母插入到连表中,并且倒叙,还要打印! 12.请问一下程序将输出什么结果? char*RetMenory(void) { charp[]=“hellowworld”; returnp; } voidTest(void) { char*str=NULL; str=RetMemory(); printf(str); } 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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 语言 强化 训练
![提示](https://static.bdocx.com/images/bang_tan.gif)