C语言基础试题
1. 指出其中的错误:
1 void Getresult(unsigned int uiM,unsigned int uiN) 2 {
3 unsigned short usIndex; 4
5 If(0==uiN) 6 {
7 return; 8 }
9 for(usIndex=uiN;uiIndex<=uiM;usIndex=usIndex+uiN) 10 {
11 printf(“%u”,usIndex); 12 } 13 return; 14 }
2. 指出其中的错误:
1 int a[10]; 2 int main() 3 {
4 int *p; 5 int i; 6 p=a;
7 for(i=0;i<=10;i++) 8 {
9 scanf(“%d”,p++); 10 }
11 printf(“\\n”); 12 p=a;
13 for(i=0;i<=10;i++,p++) 14 {
15 printf(“\\n”); 16 }
17 return 0; 18 }
3. 如下程序用于输出”Welcome Home”请指出其中错误
1 void Test(void) 2 {
3 char pcarray[12];
4 strcpy(pcArray,”Welcome Home”); 5 printf(“%s!”,pcArray);
6 return; 7 }
4. 求一个整数的平方除以1000的余数,指出程序中的错误
1 unsigned shot GetMode(unsigned short usM) 2 {
3 unsigned short usMode; 4 unsigned short usTemp; 5 usTemp=usM00;
6 usTemp=usTemp*usTemp; 7 usMode=usTemp00; 8 return usMode; 9 }
5. 下面递归函数将调整n个整数的数据Array,使其前面各顺序向后移m个位置(n>m),最后m个数变成最前面的m个数。例如,1,2,3,4,5,6,7,8顺序移动3个位置变成(6,7,8,1,2,3,4,5)请指出其实现的3个错误。假设不考虑堆栈的溢出问题,也不考虑递归引起的效率问题。 1 void move(ulong *array,ulong n,ulong m) 2 {
3 ulong *p;
4 ulong array_end; 5 ASERT(array); 6 ASERT(n>m);
7 for(p=array+n;p>array;p--) 8 {
9 *p=*(p-1); 10 }
11 *array=ayyay_end; 12 m--; 13 if(m>0) 14 {
15 move(array,n,m); 16 }
17 return; 18 }
6. 指出下面这段代码中的错误:
1 unsigned long FUNC_B(unsigned long ulCount) 2 {
3 unsigned long ulSum=0; 4 while(0<=ulCount) 5 {
6 ulSum+=ulCount;
7 ulCount--; 8 }
9 return ulSum; 10 }
7. 下面函数功能是将字符串中的非”\\0”字符前后位置对调,例如”abc”调换为”cba”,空串依然是空串,指出程序中的错误。 1. void Reverse(char *szStr) 2. {
3. ULONG ulLen,ulCnt,i; 4. CHAR ch;
5. if(NULL==szStr) 6. {
7. return; 8. }
9. ulLen=strlen(szStr); 10. if(1>=ulLen) 11. {
12. return; 13. }
14. ulCnt=ulLen/2;
15. for(i=ulCnt-1;i>=0;i--) 16. {
17. ch=szSre[i];
18. szStr[i]=szStr[ulLen-1-i]; 19. szStr[ulLen-l-i]=ch; 20. } 21. }
8. 程序的输出为:
1 void test() 2 {
3 signed char ch; 4 int sum; 5 ch=127; 6 sum=200; 7 ch++; 8 sum+=ch;
9 printf(“%d”,sum); 10 }
9. 对于一个数组int data[5][4],data[4][2]的地址可以表示为()
A. dat+4*4+2; B. data[4]+2;
C. data[4]+8; D. data+2*4+4;
10. UCHAR *pszTest=\\\\\\0; UCHAR acutest[]=\\\\\\0;
请问 sizeof(pszTest)= , sizeof(*pszTest)= , sizeof(aucTest);
11. char str[]=”ABCDE”; char *p=str;
请计算 size(str)= ,sizeof(p)= .
12. 单选择
Char *pszResource[]={“soft disk”,”hard disk”,”Cray”,”on-line routhines”,”mouse”,”keyboard”,”power cables”}; pszResource[2]指向的是() A ”hard disk”存储的起始地址 B “Cray”存储的起始地址
C “soft disk”中字符o的起始地址 D “soft disk”中字符f起始地址
13. 有如下的HASH函数
1 Unsigned char hash(unsigned char *mac) 2 {
3 unsigned char uctmp;
4 uctmp=*mac+*(mac+1)+*(mac+2) 5 return(uctemp); 6 }
已知
unsigned char cMAC[6]={0xa4,0xb5,0xc6,0xd7,0xe8,0xf9}; unsigned char *p1; unsigned char *p2; p1=cMAC; p2=p1+1;
hash(p1)和hash(p2)的值分别是(用16进制表示) 和 .
14. UCHAR *pzTest=”hello”; UCHAR *pChar=NULL;
Sizeof(*pzTest) ,sizeof(pChar) .
15. 单选
Struct tagStudent {
drawing

