C语言题库(含答案)

  • 格式:doc
  • 大小:171.00 KB
  • 文档页数:35

渥瑞达北美 IT 培训

一、 简答题。 ( 共14题 ,共0分,每题0分 )

1. int i=10, j=10, k=3; k*=i+j; k最后的值是?

答:k = 60

ok

2. 写出程序结果:

void Func(char str[100])

{

printf("%d\n", sizeof(str));

}

答:4或者8(如果操作系统为32位则为4,64位则为8)

是地址吗

3. 写出sizeof(struct name2)的结果

struct name2{

char str;

int num;

short x;

}

不会!看结构

答:此题考察结构对齐的知识,结果为12

4. 写出sizeof(struct name1) 的结果

struct name1{

char str;

short x;

int num;

}

不会!

答:同样考察的是结构对齐的知识,结果为8

5. A.c 和B.c两个c文件中使用了两个相同名字的static变量,编译的时候会不会有问题?这两个static变量会保存到哪里(栈还是堆或者其他的)?

答:没有问题,static变量只在当前文件中有效,也就是说static变量的作用域属于所在的文件域。 渥瑞达北美 IT 培训

static变量保存在全局/静态区

6. (void *)ptr 和 (*(void**))ptr的结果是否相同?

答:相同。首先第一个(void *)ptr将ptr转换为空指针类型(一级指针),(*(void**))ptr相当于先将ptr转换为空类型指针(二级指针)。二级指针是指向指针的指针,在前面加上*(解指针),也就是空类型指针了(一级指针)。

7. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?

答: i = 5 * 5+5 = 30;看书上的结构理解下意思

8. 下面的声明都是什么意思?

const int a;

int const a;

const int *a;

int * const a;

int const * const a ;

答:第一个定义常量a,第二个也是定义常量a,第三个定义常量指针a,第四个定义指针常量a,第五个定义指向常量的指针常量(相当于const引用)。

9. 关键字const是什么含意?

答:1.const修饰基本类型,比如int类型为常量。

2.const修饰指针分为两种情况:指针常量或者常量指针。

3.const修饰类的成员函数,则在此函数中无法修改类中数据成员的值。

4.const修饰返回值意味着返回值不可被改变

5.const修饰函数参数,意味着函数参数不能被有意或者无意修改。

10. do……while和while……do有什么区别?

答:do…while先执行循环再判断条件,while…do先进行判断再执行循环。

11.语句for(;1;)有什么问题?它是什么意思?

他的意思是循环条件永远为真,不停地进行循环操作,除非循环体中有强制退出循环的语句才能终止循环,其实功能就相当于while(1)

渥瑞达北美 IT 培训

答:无限循环

12.如何引用一个已经定义过的全局变量?

答:题目说的有点不太清楚,如果是引用其它文件中定义的全局变量用extern,如果是在本文件中引用的话用作用域运算符:: 是在c++中的

13.switch()结构中条件表达式的类型可以是什么类型?

答:整型,字符型,常量,枚举类型

14..h头文件中的ifndef/define/endif的作用?

答:预编译命令,一般是用来防止头文件多重包含 结构?

二、 问答题。 ( 共63题 ,共0分,每题0分 )

1.关键字static的作用是什么?

第一:隐藏。static全局变量只在本文件中可访问,其它文件无法访问。

第二:持久保存变量的内容。static变量一经初始化便到程序运行结束后才

会被释放。

第三:默认初始化为0.static变量会被编译器默认初始化为0

2.int a[3];

a[0]=0; a[1]=1; a[2]=2;

int *p, *q;

p=a;

q=&a[2];

则a[q-p]=a[2]

这段程序执行完之后数组中元素的值分别是什么?q-p=2

答:0, 1, 2 渥瑞达北美 IT 培训

3.根据a的值,完成b的初始化,并将b的值返回

int func(float a)

{

int b;

switch(a)

{

case 1: 30;

break;

case 2: 20;

case 3: 16;

default: 0

}

return b;

}

此程序段有什么错误,如果有请指出

答:1.switch只能用整型或者字符型或者枚举类型,float类型不正确。

2.case后面没有加break

4. 写出程序运行结果

int sum(int a)

{

auto int c=0;

static int b=3;

c+=1;

b+=2;

return(a+b+c);

}

void main()

{

int I; 渥瑞达北美 IT 培训

int a=2;

for(I=0;I<5;I++)

{

printf("%d,", sum(a));

}

}

答:8,10,12,14,16

5. 写出输出结果

void g(int**);

int main()

{

int line[10],i;

int *p=line;

for (i=0;i<10;i++)

{

*p=i;

g(&p);

}

for(i=0;i<10;i++)

printf("%d\n",line[i]);

return 0;

}

void g(int**p)

{

(**p)++;

(*p)++;

}

答:1 2 3 4 5 6 7 8 9 10

渥瑞达北美 IT 培训

6. 写出输出结果

int main()

{

int a[5]={1,2,3,4,5};

int *ptr=(int *)(&a+1);//解释 解释1

printf("%d,%d",*(a+1),*(ptr-1));

}

答:2, 5

7.写出下面的结果

char str1[] = "abc";

char str2[] = "abc";

const char str3[] = "abc";

const char str4[] = "abc";

const char *str5 = "abc";

const char *str6 = "abc";

char *str7 = "abc";

char *str8 = "abc";

printf (“%d”,str1 == str2 );//数组名就是

printf (“%d”, str3 == str4);

printf (“%d”, str5 == str6 );

printf (“%d”, str7 == str8 );

答:0 0 1 1

8. 以下3个有什么区别


char * const p;

char const * p;

const char *p;