选择题
1、一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( )
[A] edcba [B] decba [C] dceab [D] abcde
答案:C
2、以下为 linux 下的 32 位 C 程序,请计算 sizeof 的值
char str[10] = “Hello” ; char *p = str ;
请计算:sizeof ( str ) = 10
void Func ( char str[100]){……}
请计算:sizeof( str ) = 4
void *p = malloc( 100 );
请计算:sizeof ( p ) = 100
3、int main()
{ int a[3] = {1, 2};
int *p, *q;
p = a; q = &a[2];
printf("%d", a[q-p]);
return 0;
}
上述程序段输出结果为:0
4、有如下 C 语言程序:
#include<stdio.h>
int main()
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=10)
break;
if(b%3==1)
{
b+=3;
continue;
}
}
printf("%d\n",a);
}
则程序运行后的输出结果是___4___
5、设有 int 型变量占用 4 个字节,定义数组 int a[12] = {12, 14, 21},则数组 a 在内存中占用的
字节数为( D )
A. 3 B. 12 C. 18 D. 48
6、以下程序的输出结果为( B )
#include <stdio.h>
int main (int argc, char **argv)
{
int a[5] = {1, 2, 3, 4, 5};
int *ptr=(int *)(&a+1);
printf("%d, %d\n",*(a + 1),*(ptr - 2));
return 0;
}
A. 1, 5 B. 2, 4 C. 2, 1 D. 4, 5
7、为判断字符变量 c 的值不是数字也不是字母时,应采用下述表达式 D
A) c<=48 || c>=57 && c<=65 || c>=90 && c<=97 || c>=122
B) !(c<=48 || c>=57 && c<=65 || c>=90 && c<=97 || c>=122)
C) c>=48 && c<=57 || c>=65 && c<=90 || c>=97 && c<=122
D) !(c>=48 && c<=57 || c>=65 && c<=90 || c>=97 && c<=122)
8、在无符号 16 位的环境中计算表达式 0xF8 << 3 得到的结果通过不同的进制表示
0000 0000 1111 1000 << 3 → 0000 0111 1100 0000
16:0x7C0
8 进制: 03700
10 进制:1984
2 进制: 0000 0111 1100 0000
9、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是: B
A. 7 B. 8 C. 6 D. 2
10、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是( A )。
[A] p=2*(int *)malloc(sizeof(int));
[B] p=(int *)malloc(2*sizeof(int));
[C] p=(int *)malloc(2*2);
[D] p=(int*)calloc(2, sizeof(int));
11、以下说明和定义
int fun(int *c){ };
main()
{
int (*a)(int*)=fun,*b(),w[10],c;┆
}
在必要的赋值之后,对fun函数的正确调用语句是 B
[A] a=a(w); [B] (*a)(&c); [C] b=*b(w); [D] fun (b);
填空题
1.static全局变量与普通的全局变量有什么区别?
2.const char *p 和char *const p作用都是什么
3.#define 和typedef的区别
4.C 语言中 static 修饰的全局变量与普通的全局变量有什么区别?static 修饰的局部变量与普通局部变量有什么区别?
5.全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?
char *mystrcpy(chsr *dest, const char *src)
{
char *save = dest;
while(*dest++ = *src++);
return save;
}
编程题
1、从键盘输入一个字符串,然后按照下面要求输出一个新字符串。新串是在原串中,每三个字符之间插 入一个空格,如原串为 abcdefg,则新串为 abc def g,要求在函数 insert 中完成新串的产生,并在函数 中完成所有相应的输入和输出。
#include <stdio.h>
#include <stdlib.h>
#define MAX 1024
void insert(char *num)
{
int i, j=0 , k,n;
for(i=0 ; i < MAX ; i++)
{
int top = 0;
while(num[top] != '\0')
{
top++;
}
if( (i +1)% 4 == 0 )
{
k = i;
while( k <= top )
{
num[top+1] =num[top];
top--;
}
num[i] = ' ';
}
}
puts(num);
}
int main()
{
char arr[MAX];
printf("Input : ");
scanf("%s",arr);
insert(arr);
}
|