上嵌教育—上海通信协会人才实训基地、华东科研委员会嵌入式人才孵化基地、局部变量能否和全局变量重名?答:能,局部会屏蔽全局,要用全局变量,需要使用::。局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个已经定义过的全局变量?答:extern。可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变写错了,那么在编译期间就会报错;如果你用extern方式引用,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。4、语句for(;1;;)有什么问题?它是什么意思?答:无限循环,和while(1)相同。5、do⋯⋯while和while⋯⋯do有什么区别?答:前一个循环一遍再判断,后一个判断以后再循环。6、请写出下列代码的输出内容。#includestdio.hintmain(void){inta,b,c,d;a=10;b=a++;//b=10、a=11c=++a;//c=12、a=12d=10*a++;//d=120、a=13printf(b,c,d:%d,%d,%d,b,c,d);return0;}答:b,c,d:10,12,1207、static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中只能被初始化一次,以后调用该函数时,该静态变量的值维持和上调用结束时一致。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。8、引用与指针有什么区别?1)引用必须被初始化,指针不必。2)引用初始化以后不能被改变,指针可以改变所指的对象。3)不存在指向空值的引用,但是存在指向空值的指针。9、描述实时系统的基本特性。答:在特定时间内完成特定的任务,实时性与可靠性。上嵌教育—上海通信协会人才实训基地、华东科研委员会嵌入式人才孵化基地、全局变量和局部变量在内存中是否有区别?如果有,是什么?答:全局变量存储在静态数据库,局部变量在堆栈11、什么是平衡二叉树?答:左右子树都是平衡二叉树,且左右子树的深度差的绝对值不大于1。12、堆栈溢出一般是由什么原因导致的?答:没有回收垃圾资源。13、什么函数不能声明为虚函数?答:constructor(构造)函数不能被声明为虚函数。14、冒泡排序算法的时间复杂度是什么?答:时间复杂度是O(n^2)。15、写出floatx与“零值”比较的if语句。if(x=-0.000001&&x=0.000001)或#defineEPSINON0.000001if(x=-EPSINON&&x=EPSINON)16、Internet采用哪种网络协议?该协议的主要层次结构?答:tcp/ip协议主要层次结构为:应用层/传输层/网络层/网络接口层17、Internet物理地址和IP地址转换采用什么协议?ARP(AddressResolutionProtocol)(地址解析协议)18、IP地址的编码分为哪两个部分?IP地址由两部分组成:网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。19、用户输入M、N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。#includestdio.h#defineMAX_ARRAY_SIZE1024intmain(void){intarr[MAX_ARRAY_SIZE],m,n,i,j,k;do{printf(inputmn:);scanf(%d%d,&m,&n);}while(m=0||n=0);for(i=0;in;++i)arr[i]=i+1;for(i=j=0;in;++i){k=(j+m)%n;printf(%d,0==k?n:k);for(j=k;kn-1;++k)arr[k]=arr[k+1];}printf(\n);return0;}运行结果:上嵌教育—上海通信协会人才实训基地、华东科研委员会嵌入式人才孵化基地、不能做switch()的参数类型是:答:switch的参数不能为实型。21、找错①voidtest1(){charstring[10];char*str1=0123456789;strcpy(string,str1);//溢出,结束标记’\0’}voidtest2(){charstring[10],str1[10];for(i=0;i10;i++){str1[i]='a';}strcpy(string,str1);//str1无结束标记,string数组溢出}voidtest3(){charstring[10];if(strlen(str1)=10){strcpy(string,str1);//当strlen(str1)==10时,string溢出}}22、写出程序运行结果①intsum(inta){autointc=0;staticintb=3;c+=1;b+=2;return(a+b+c);}voidmain(void){inti;inta=2;for(i=0;i5;++i){printf(“%d,”,sum(a));上嵌教育—上海通信协会人才实训基地、华东科研委员会嵌入式人才孵化基地}}运行结果:8,10,12,14,16,②#includestdio.hintsum(inta){intb;switch(a){case1:b=30;case2:b=20;case3:b=16;default:b=0;}returnb;}则func(1)=?//func(1)=0③inta[3];a[0]=0;a[1]=1;a[2]=2;int*p,*q;p=a;q=&a[2];则a[q-p]=?//223、定义int**a[3][4],则变量占有的内存空间为:48。24、编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。#includestdio.hintmain(){intyear,mon,day,hour,min,sec,daytable[13]={365,31,28,31,30,31,30,31,31,30,31,30,31};do{printf(inputyearmondayhourminsec:);scanf(%d%d%d%d%d%d,&year,&mon,&day,&hour,&min,&sec);}while(year1||mon1||mon12||day1||daydaytable[mon]||hour0||hour23||min0||min59||sec0||sec59);if(sec58)++sec;else{sec=0;if(min58)上嵌教育—上海通信协会人才实训基地、华东科研委员会嵌入式人才孵化基地{min=0;if(hour23)++hour;else{hour=0;if(2==mon&&(0==year%400)||(0==year%4&&year%100!=0))daytable[mon]=29;if(daydaytable[mon])++day;else{day=1;if(mon12)++mon;else{mon=1;++year;}}}}}printf(%d-%d-%d,%d:%d:%d\n,year,mon,day,hour,min,sec);return0;}25、用变量a给出下面的定义。a)一个整型数(Aninteger)//inta;b)一个指向整型数的指针(Apointertoaninteger)//int*a;c)一个指向指针的指针,它指向的指针是指向一个整型数(Apointertoapointertoaninteger)//int**a;d)一个有10个整型数的数组(Anarrayof10integer)//inta[10];e)一个有10个指针的数组,这些指针指向一个整型数(Anarrayof10pointerstointeger)//int*a[10];f)一个指向有10个整型数数组的指针(Apointertoanarrayof10integers)//int(*a)[10];g)一个指向函数的指针,该函数有一个整型数参数并返回一个整型数(Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger)//int(*a)(int);h)一个有10个指针的数组,这些指针指向一个函数,该函数有一个整型数参数并返回整型数(Anarrayoftenpointerstofunctionsthattakeanintegertargumentandreturnaninteger)//int(*a[10])(int);26、有三个线程ID分别为A、B、C,请用多线程编程实现在屏幕上循环打印10次ABCABC⋯⋯//posix多线程#includestdio.h#includeunistd.h#includepthread.hpthread_mutex_tmutex=PTHREAD_MUTEX_INITIALIZER;pthread_cond_tcond=PTHREAD_COND_INITIALIZER;intk=0;void*routine_A(void*arg){inti;上嵌教育—上海通信协会人才实训基地、华东科研委员会嵌入式人才孵化基地=(int)arg;pthread_detach(pthread_self());for(i=0;i10;++i){pthread_mutex_lock(&mutex);while('A'==ch&&k!=0)pthread_cond_wait(&cond,&mutex);printf(%c,ch);fflush(stdout);k=(k+1)%3;pthread_cond_broadcast(&cond);pthread_mutex_unlock(&mutex);}return(void*)0;}void*routine_B(void*arg){inti;charch=(int)arg;pthread_detach(pthread_self());for(i=0;i10;++i){pthread_mutex_lock(&mutex);while('B'==ch&&k!=1)pthread_cond_wait(&cond,&mutex);printf(%c,ch);fflush(stdout);k=(k+1)%3;pthread_cond_broadcast(&cond);pthread_mutex_unlock(&mutex);}return(void*)0;}void*routine_C(void*arg){inti;charch=(int)arg;pthrea