1、一个C程序的执行是从本程序的main函数开始,到main函数结束。
2、C语言中,要求运算数必须是整型的运算符是%.
3、c语言中,引用数组元素时,其数组下标的数据类型允许是:整型常量或整型表达式。
4、C语言属于高级语言语言。
5、C语言程序能够在不同的操作系统下运行,这说明c语言具有很好的移植性
6、C语言中, char型数据在内存中的存储形式是_ASCII_
7、C程序中,逗号运算符的优先级___最低_____。
8、C语言的注释的说法不正确的是由“/*”开头,“/*”结尾
9、C语言的语句都是以”;”结尾的。
10、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。
11、C语言编译程序的首要工作是检察c语言程序的语法错误
12、C语言规定:在一个源程序中,main函数的位置在可以任意
13、一个C语言程序是由函数组成
14、在c语言中,解释说明部分用/* */括起来
15、在C语言中, char型数据在内存中的存储形式是ASCII码
16、在C语言中(以16位PC机为例),5种基本数据类型的存储空间长度的排列顺序为char 17、已知ch是字符型变量,下面正确的赋值语句是:ch= '\xff';。 18、已有如下定义和输入语句,若要求a1,a2,c1,c2值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是10A 20B< CR>。 int a1,a2; char c1,c2; scanf("%d%c%d%c",&a1,&c1,&a2,&c2); 19、已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为scanf("%f%d",&f,&a);。void main() {int a; float f; printf("\nInput number:"); 输入语句 printf("\nf=%f,a= %d\n ,f,a); } Input number: 4.5 2 20、已知各变量的类型说明如下: int k,a,b; unsigned long w= 5; double x=1.42; 则以下不符合C语言语法的表达式是x%(一3) 。 21、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'十'6'一'3';后,c2中的值为:D 22、已知x =43,ch='A',y=0则表达式(x > = y && ch<'B'&&!Y) 的值是: 1 。 23、已知:int *p, a;则语句“p=&a; ”中的运算符“&”的含义是取变量地址。 24、已知:int **p;则变量p是指向指针的指针。 25、已知:char s1[10], *s2=”ab\0cdef”;则执行语句“strcpy(s1,s2);“之后,变量s1的内容为 ab。 26、已知:char s1[4]=“12“;char *ptr;则执行以下语句后的输出为字符‘2'。 ptr=s1; printf(“%c\n”, *(ptr+1)); 27、已知 int a=3,*p=&a; 则 *p的值是3。 28、已知:int **p;则变量p是指向指针的指针。 29、已知各变量的类型说明如下。 int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2; 则以下符合C语言语法的表达式是a十=a一=(b= 4)*(a=3) 30、以下不正确的if语句形式是: BC。 B)if(x= =y) x+=y C)if(x != y)scanf("%d",&x )else scanf("%d",&y); 31、以下叙述正确的是C语言本身没有输入输出语句。 32、以下叙述不正确的是在C程序中,注释说明只能位于一条语句的后面。 33、以下不正确的叙述是当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 34、以下符合C语言语法的赋值表达式是d=9+e+f=d+9。 35、以下说法正确的是当输入数据时,必须指明变量的地址,如scanf("%f",&f);。 36、以下能正确地定义整型变量a,b和c 并为其赋初值5的语句是int a= 5,b=5,c=5;。 37、以下程序的运行结果是: 2,1 。 #include "stdio.h" main() ,, \ {int a,b,d= 241; a=d/100 % 9 b= (-1)&&(-1); printf("%d,%d",a ,b); } 38、以下if语句语法正确的是: D 。 D) if(x > 0) { x = x +y;printf("%f",x)} else printf("%f",-x); 39、以下程序的运行结果是: 6 。 main() {int m=5; if(m++> 5) printf(" %d\n",m); e1se printf("%d\n",m- - ); } 40、以下程序的输出结果是: -1。 main() {int a=100,x =10,y=20,okl=5,ok2=0; if (x if(y ! =10) if(!okl) a=1; else if(ok2) a=10; a=-1: printf( "%d\n",a ); } 41、以下程序的输出结果是: 2 。 main() {int x= 2,y= 一1,z=2; if (x if(y<0) z= 0; else z+ =1; printf("%d\n",z); } 42、以下描述中正确的是:在do一while循环体中,一定要有能使while后表达式值变为零("假")的操作。 43、以下能对一维数组a进行正确初始化的语句是:int a[10]={10*1}; 。 44、以下对二维数组a的正确说明是:double a[1][4]; 。 45、以下正确的描述是:只能在循环体内和switch语句体内使用break语句。 46、以下能对二维数组a进行正确初始化的语句是:int a[][3]={{1,2,3},{4,5,6}};。 47、以下不能对二维数组a进行正确初始化的语句是:int a[2][4]={{1,2,3},{4,5}{6}}; 48、以下说明语句的正确理解是:将5个初值依次赋给a[0]至a[4] int a[10]={6,7,8,9,10}; 49、以下正确的定义语句是:float x[3][]={{1},{2},{3}}; 50、以下程序运行后,a的值是 0。 main() { int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; printf(“%d”,a); } 51、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是*p表示的是变量a 的值,而不是变量a的地址。 main() {int *p,*q,a,b; p=&a; scanf("%d",*p); } 52、以下能对一维数组a进行正确初始化的语句是:int a[10]={10*1}; 53、在以下函数声明中,存在语法错误的是:int fun4(int x;int y) 54、以下不是无限循环的语句为:for (y=0,x=1;x > ++y;x =i++) i=x ; 55、以下描述正确的是:在循环中break语句不能独立出,switch语句中不能出现continue语句,只能用continue语句来终止本次循环 56、以下程序段 x= -1; do {x=x*x;} while(!x); 循环执行一次 57、以下不正确的语句为: if (x= y) &&(x! = 0) x+= y; 58、下列说法正确的是C语言程序书写时,一个语句可以分几行书写 59、下面对c语言的特点,不正确描述的是C语言的可移植性较差 60、下面不正确的字符串常量是'abc'。 61、下面四个选项中,均是C语言关键字的选项是switch typedef continue 62、下面四个选项中、均是正确的数值常量或字符常量的选项是十001 0xabcd 2e2 50. 63、下面四个选项中,均是合法整型常量的选项是160 一0xffff 011 64、下面四个选项中,均是不合法的浮点数的选项是123 2e4.2 .e5 65、下面四个选项中,均是正确的八进制数或十六进制数的选项是0010 一0x11 0xf1 66、下面程序段的运行结果是:1,2,0。 a=1;b= 2;c=2; while(a printf("%d,%d,%d",a,b,c); 67、下面程序段的运行结果是: 8,20。 x = y= 0; while(x<15) y++,x + = ++y; printf("%d,%d",y,x); 68、下面程序段的运行结果是:有语法错。 if n=0; while(n++<=2); printf("%d",n); 69、下列程序段不是死循环的是int s=36; while (s);--s。 70、下面程序的运行结果是: 0。 #indude main() {int y=10; do{y--;}while(--y); printf("%d\n",y--); } 71、下面程序的运行结果是: a=2,b=8 。 #include main() {int a==1,b=10; do{b-=a;a++;}while(b--<0); printf("a=%d,b=%d\n",a,b); } 72、下面程序的运行结果是:#*#*#*$。 #include "stdio.h" main() {int i; for(i=1;i<=5;i++) {if (i%2) printf("*"); else continue; printf("#"); } printf("#");} 73、下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空: c=getchar()。 #indude "stdio.h" main() {int m=0,n=0; char c; 1 while((【1】)!='\n') { if(c>='A' && C<='Z') m++ ; if(c>='a' && c<='z') n++; } printf("%d\n", m 74、下面程序段: 是死循环。 x=3; do {y=x--; if(!y){ printf("x");continue;} printf("#"); } while (1<=x<=2); 75、下面程序段:printf函数永远也不执行。 for (t=1; t<=100;t++) {scanf("%d",&x); if(x<0) continue; printf("%3d",t);} 76、下面是对s的初始化,其中不正确的是:char s[5]="abcdef"; 。 77、下述对C语言字符数组的描述中错误的是:可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 78、下面程序段的运行结果是: a=1;b= 2;c=2; while(a printf("%d,%d,%d",a,b,c);1,2,0 79、下列表达式的值为0的是:3/516、下面程序段的运行结果是:x=15,y=14 for (y= 1;y<10;) y=((x=3* y,x+1),x-1); printf ("x=%d,y=%d",x,y); 80、下面是对s的初始化,其中不正确的是:char s[5]="abcdef"; 81、下面四个选项中,均是不合法的用户标识符的选项是b-a goto int 82、下面四个选项中,均是合法转义字符的选项是'\'' '\\' '\n' 83、下面正确的字符常量是: 'W' 84.下面有关for循环的正确描述是: for循环的循环体语句中, 可以包含多条语句,但必须用花括号括起来 85、若有代数式3ae/bc,则不正确的C语言表达式是3*a*e/b*c。 86、若有说明语句:char c='\72' 则变量c 包含1个字符。 87、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 2.500000 。 88、若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为__5_,n的值为_6__ 89、若a为整型变量,则逗号表达式(a=4*5,a*2),a+6的值为_26_ 90、若x和n均是整型变量,且x的初值为12,n的初值为5,则计算表达式x%=(n%=2)后x的值为0 91、若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式:(float)(a+b)/2+(int)x%(int)y的值为3.5_ 92、若有条件表达式(exp) ? a++:b--,则以下表达式中能完全等价于表达式(exp)的是:(exp!=0)。 93、若w,x,y,z,m均为int型变量,则执行下面语句后的m值是: 1。 w= 1;x = 2;y= 3;z=4; m=(w m= (m m=(m 94、若有如下语句 int x=3; do { printf(" %d\n",x -=2);} while(!(--x)); 则上面程序段:输出的是1和-2。 95、若有说明:int a[3][4]; 则对a数组元素的正确引用是:a[1+1][0]。 96、若有说明:int a[3][4];则对a数组元素的非法引用是:a[0][4] 。8、若有说明:int a[]「4」={0,0};则下面不正确的叙述是:只有元素a[0][0]和a[0][1]可得初值0,其余元素均得不到初值0 97、若有说明:int a[]「3」={1,2,3,4,5,6,7};则a数组第一维的大小是 3 。 98、若二维数组a有m列,则在a[i][j]前的元素个数为:i*m+j 。10.若已定义int b[8],*p=b;则对数组元素b[4]地址的非法引用为&b+4。 99、若定义 int i=100,*p=&i;设为i分配的内存地址为200-201,则*p为100。 100、若有定义int a[5],*p=a;,则对a数组元素的正确引用是:*(a+2)。 101、若有语句 int *p,a=4;p=&a;下面均代表地址的一组选项是p,*&p,&a。2.若有说明:int a[3][4]; 则对a数组元素的正确引用是:a[1+1][0] 102、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:i*m+j+1 (假设a[0][0]位于数组的第一个位置上。)5.若有语句int *p,a=3;和p=&a;下面均代表地址的一组选项是:&a,&*p,p 103、若有定义int a[5],*p=a;,则对a数组元素的引用正确的是:*(a+2) 104、若有以下说明和语句,则p2-p1的值是多少 int a[10],*p1,*p2; p1=a; p2=&a[6];6 105、若运行以下程序时,从键盘输入3.6,2.4 #indude # include main() {float x,y,z; scanf("%f%f",&x,&y); z=x/y; while(1) {if(fabs(z)>1.0) {x=y;y=z;z=x/y;} else break;} printf("%f",y);} 1.6 106、若以下变量均是整型,且num=sum=7;则执行表达式sum=num++,sum++,++num后sum的值为:8 107、若有定义int k= 7,x =12; ,则能使值为3的表达式是(x%=k)一(k%=5) 108、若希望当A的值为奇数时,表达式的值为"真",A的值为偶数时,表达式的值为"假"。则以下不能满足要求的表达式是: !(A%2) 109、若运行时给变量x 输入12,则以下程序的运行结果是: 0。 main() {int x,y; scanf("%d",&x); y=x > 12?x+10: x-12; printf("%d\n",y); } 110、若w=1,X = 2,y= 3,z=4,则条件表达式w 设有程序段 int k=10; while (k=0) k= k-1; 则下面描述中正确的是:循环体语句一次也不执行。 111、若x,i,j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值为32。 112、若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为___6___,b值为___4___,c值为_____2_____ 113、若a=2,b=4,则表达式(!(x=a)||(y=b))&&0的值是0 114、设y为int型变量,请写出描述“y是奇数”的表达式 y%z 115、设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是!(x 116、设有int a = 1,b=2,c =3, d =4, m=2, n=2; 执行(m= a>b)&&(n=c>d)后n的值为:2。 117、设以下变量均为int类型,则值不等于7的表达式是(x= 6,x+1,y= 6,x+y) 。 118、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为:double . 119、设x 、y均为f1oat型变量,则以下不合法的赋值语句是:y=(x%2)/10;。 120、右侧运算符中优先级最低的是?: 。 121、右侧运算符中优先级最高的是十。 122、有输入语句: scanf("a= %d,b= %d,c=%d",&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是a=1,b =3,c =2(回车)。 123、有两个字符数组a、b,则以下正确的输入格式是:gets ("a"), gets ("b"); 。 124、有以下程序段 int x=0,s=0; while (! x!= 0) s+=++x; printf("%d",s); 则:运行后输出。 125、当a=5,b=4,c=2时,表达式a>b!=c的值是__1_ 126、当a=3,b=2,c=1时,表达式f=a>b>c的值是 0 127、当a=1,b=3,c=5,d=4 ,执行完下面一段程序后x 的值是: 2。 if(a if(c else if(a if(b else x= 3; else x=6; else x=7; 128、阅读以下程序,若运行结果为如下形式,输入输出语句的正确内容是scanf("%d%f",&x,&y); printf("\nx+y=%6.lf",x+y); 。 main() {int x; float y;printf("enter x,y :") 输入语句输出语句} 输入形式enter x,y: 2 3.4 输出形式x+y=5.40 C) 129、阅读以下程序,当输入数据的形式为25,13,10 main() {int x,y,z scanf("%d%d%d",&x,&y,&z ); printf("x+y+z=%d\n ,x+y+z); } 130、阅读以下程序: #include main( ) {float a,b scanf("%f",&a); if (a<10.0) b=1.0/x; else if((a<0.5)&&(a!=2.0))b= 1.0/(a十2.0); else if(a<10.0) b= 1.0/x ; else b=10.0; printf("%f\n",y); } 若运行时输入2.0(回车),则上面程序的输出结果是: 0.500000 131、执行以下程序段后、变量a,b,c的值分别是:a=8,b=8,c=10。 int x=10,y=9; int a,b,c; a =(- -x = = y++)?- -x:++y ; b = x ++; c = y; 132、执行以下语句后b 的值为: 6 。 int a=5,b=6,w=1,x=2,y=3,z=4; (a=w>x)&&(b=y>z); 133、执行语句for(i=1;i++<4;);后变量i的值是:5。 134、执行以下语句后a的值为: 。 int a,b,c; a= b= c= 1; ++a||++b&&++c A)错误B) 0 C) 2 D) 1 135、说明语句“int (*p)();”的含义是p是一个指向一维数组的指针变量。 136、语句while(!E)中的表达式!E等价于:E==0。 137、逻辑运算符两侧运算对象的数据类型是可以是任何类型的数据可以是任何类型的数据。138、能正确表示"当x 的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是(x>=1) &&(x<=10)||(x>= 200) &&(x<=210) 。 139、判断char型变量ch是否为大写字母的正确表达式(ch>=' A' )&&(ch<='z')。 140、为了避免在嵌套的条件语句If一else中产生二义性,C语言规定else子句总是与(其之前最近的if ) 141、定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是:3 5 7 。 for(k=0;k<3;k++) printf ("%d",a[k][2-k]); 142、对于int *pa[5];的描述,正确的是pa是一个具有5个元素的指针数组,每一个元素是一个int 型指针。 143、变量的指针,其含义是指该变量的:地址。 144、条件“2 145、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是8 146、根据定义和数据的输入方式,输入语句的正确形式为scanf("%f%f",&f1,&f2);。 已有定义: float fl,f2; 数据的输入方式:4.52 3.5 147、printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度小于5,则输出按方式右对齐输出该字串,左补空格 148、putchar函数可以向终端输出一个字符或字符型变量值 149、x,y,z均为int型变量,则执行语句x=(y=(z=10)+5-5;后,x 、y 和之的值是: 10 15 10 150、sizeof(float)是一个整型表达式。 151、printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式按原字符长从左向右全部输出。 一、判断(每题2分,共28分) 1.数组在定义时没有必要指定数组的长度,其长度可以在程序中根据元素的个数再决定。(×) 2.c语言变量名的第一个字符必须是字母、数字、下划线中的任意一种。(×) 3.sizeof(double)是一种函数调用。(×) 4.break语句不能用于循环语句和switch语句外的任何其它语句。(√) 5.int m=7;a[m];是正确的数组定义。(×) 6.在C程序中,一行只能写一条语句。(×) 7.for语句作为循环控制语句时,括号内的分号是用来分开表达式的,因此要根据需要加分号。(×) 8.不可以用关系运算符对字符数组中的字符串进行比较。(√) 9.在调用函数时,当实参与形参都是简单变量时,它们之间的数据传递方式是单向值传递。( √) 10.c语言中,整型数据和字符型数据在任何情况下都可以通用。(×) 11.在c语言中,ASP和asp分别代表两个不同的标识符。(√) 12.数组名也可以作为函数参数使用,此时是值传递。(×) 13.if语句中可以没有else子句(√) 14.在每个c语言的程序中都必须并且只能有一个main函数。(√) 三、编程题(每题10分,共40分) 1.编写一个程序求n!,n由键盘输入。 2.编程求100-200间的所有素数。 3.采用冒泡法对10个数由大到小排序。 4.编程实现对一个2*3的矩阵转置,即将二维数组a的行和列元素互换后存到另一个二维数组b中。 三、编程题(每题14分,共42分) 1.有如下函数:写程序,输入x的值,输出y的值 x (x<1) y= 2x-1 (1<=x<10) 3x-11 (x>=10) 2.写一个程序,判断某一个是否是闰年。 3.仿照例题 4.6编写程序。要求按照输入的数字输出星期几的英文单词,1为Monday,2为Tuesday, 3为Wednesday,4为Thursday,5为Friday,6为Saturday,7为Sunday,1-7的数字由键盘输入。 《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0 8、有以下程序: #include 嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案, C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include 笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 ) 第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用 2014-06-13 06:30:01 阅读( 135 ) 标签: 一、选择题(1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构 B)紧凑结构和非紧凑结构 C)线性结构和非线性结构D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2 B)2,3,4,l C)3,1,4,2 D)3,4, 2,1 答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l 先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序B)冒泡排序C)插入排序D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2 B)3 C)4 D)5 答案:C 评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1 B)n C)n+l D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构 B)软件体系结构C)软件结构测试D)软件控制过程 答案:B c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表 B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较 ================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10; printf("%d",a++); A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B 能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 main() {int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++;} printf("a=%d,b=%d",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0; C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对 c语言笔试题答案 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988) 笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 )2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2) 6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 1.static有什么用途?(请至少说明两种) 1)限制变量的作用域 2)设置变量的存储域(堆,主动分配内存也是堆) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在栈 6.堆栈溢出一般是由什么原因导致的? 堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。没有回收垃圾资源导致的是内存泄露最后内存耗尽。 20.不能做switch()的参数类型是: switch的参数不能为实型。(只能是int char) 9.写出float x 与“零值”比较的if语句。 if(x<0.000001&&x>-0.000001) 3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么? 函数名: atol 功能: 把字符串转换成长整型数 函数的原型: long atol(const char *nptr); 程序例: #include 最新大学C语言考试题及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 [i] t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# 语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A) B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a 4. static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 7. 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 2) 不存在指向空值的引用,但是存在指向空值的指针。 8. 描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性 9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈 10. 什么是平衡二叉树? 左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1 11. 堆栈溢出一般是由什么原因导致的? 没有回收垃圾资源 12. 什么函数不能声明为虚函数? constructor 13. 冒泡排序算法的时间复杂度是什么? O(n^2) 14. 写出float x 与“零值”比较的if语句。 if(x>0.000001&&x<-0.000001) 16. Internet采用哪种网络协议?该协议的主要层次结构? tcp/ip 应用层/传输层/网络层/数据链路层/物理层 17. Internet物理地址和IP地址转换采用什么协议? ARP (Address Resolution Protocol)(地址解析協議) 18.IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。 2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出 C程序。 循环链表,用取余操作做 3.不能做switch()的参数类型是: switch的参数不能为实型。 華為 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内 一、选择题(1)~(10)每小题2分,? (11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构??? ??B)紧凑结构和非紧凑结构 C)线性结构和非线性结构??? D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2??? B)2,3,4,l C)3,1,4,2 ???D)3,4, 2,1 答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序??? B)冒泡排序??? C)插入排序??? D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2??? ??B)3?????? C)4 ???????D)5 答案:C 评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与 ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1??? B)n??? C)n+l ?????D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构?? ??B)软件体系结构??? C)软件结构测试??? D)软件控制过程 答案:B 评析:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。 (7)模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚??? 的一类是_______。 A)顺序性内聚? ???B)过程性内聚? ????C)逻辑性内聚??? D)功能性内聚 答案:D 评析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。 (8)数据存储和数据流都是_______,仅仅是所处的状态不同。 A)分析结果??? B)事件??? C)动作??? D)数据 答案:D 评析:数据流图有4种成分:源点或终点、处理、数据存储和数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。 (9)数据的完整性是指数据的正确性、有效性和_______。 A)可维护性??? B)独立性??? C)安全性??? D)相容性 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。 C语言笔试题及参考答案-东软集团 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用":: " 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 4、语句for( ;1 ;)有什么问题?它是什么意思? 答:和while(1)相同。 5、do……while和while……do有什么区别? 答:前一个循环一遍再判断,后一个判断以后再循环 6、请写出下列代码的输出内容 #include main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf( "b,c,d:%d,%d,%d ",b,c,d); return 0; } 答:10,12,120 7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身 c语言面试题目及最佳答案 1、描述?下gcc的编译过程? gcc编译过程分为4个阶段:预处理、编译、汇编、链接。 预处理:头?件包含、宏替换、条件编译、删除注释 编译:主要进?词法、语法、语义分析等,检查?误后将预处理好的?件编译成汇编?件。汇编:将汇编?件转换成?进制?标?件 链接:将项?中的各个?进制?件+所需的库+启动代码链接成可执??件 2、内存的最?存储单位以及内存的最?计量单位分别是? 内存的最?存储单位为?进制位,内存的最?计量单位字节 3、#include<> 与#include ""的区别? include<>到系统指定?录寻找头?件,#include ""先到项?所在?录寻找头?件,如果没有找再到系统指定的?录下寻找 4、描述?下变量的命名规则 变量名有字?、数值、下划线组成,但不能以数值开头 5、变量的声明与定义有啥区别? 声明变量不需要建?存储空间,变量的定义需要建?存储空间 6、谈谈c语?中有符号和?符号的区别? 有符号:数据的最?位为符号位,0表示正数,1表示负数 ?符号:数据的最?位不是符号位,?是数据的?部分 7、谈谈计算机中补码的意义 统?了零的编码 将符号位与其他位统?处理将减法运算转换成加法运算 8、谈谈数组的特点 同?个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的9、数组的分类 数组的分类主要是:静态数组、动态数组两类。 静态数组:类似int arr[5];在程序运?就确定了数组的??,运?过程不能更改数组的??。动态数组:主要是在堆区申请的空间,数组的??是在程序运?过程中确定,可以更改数组的??。 10、描述?下?维数组的不初始化、部分初始化、完全初始化的不同点 不初始化:如果是局部数组数组元素的内容随机如果是全局数组,数组的元素内容为0 C语言期末考试试题及答案 2003C语言试题2 一选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x C语言面试题: 1、问:在嵌入式开发中,为什么能通过C语言直接操作硬件? 答:因为C有指针,它是C语言的灵魂,它可以直接访问内存。 2、问:链表的作用?(这是上一个问题的延申,学员一般会举一堆例子来说明它的作 用,但这都不是重点,没有抓住主要矛盾)答:链表用于内存管理,链表节点中的指针域可以将不连续的内存彼此关联起来,实现内存的动态管理。 3、问:什么变量不能用指针指向? 答:寄存器变量(register 修饰),因为这个变量会优先选择存放到CPU寄存器中,而指针只能指向内存的任务区域,但不能指向寄存器。 4、问:有符号字符型和无符号字符型变量的最大值和最小值分别是多少(十六进制多 少),为什么? 答:有符号(-128 —127,-0X80—0X7F,无符号(0-255,0X00 —0XFF。 5、问:林锐面试题中四个有关内存操作的问题:第一题、运行会出现段错误(崩 溃): 答:因为参数是值传递,所以主调函数中的str指针已然指向空,不能向 里面拷数据,除非加上取地址,采用二维指针接收才能传递动态内存;第二题:乱码:答:实际上可能是乱码,也可能显示出一部分内容,显示乱码是因为刚才那段栈内存空间全部被覆盖,如果未完全覆盖则显示一部分内容;第三题:能够输出hello 答:但由于没有在同一层释放内存,容易导致内存泄露;第四题:对已经释放的内存进行操作答:会破坏其它有用数据,后果难以预料,通常提示出现段错误。 6问:哪些地方可以用到con st? const变量和函数输入参数用const修饰有哪些作用?答:1、定义常量 (1)const修饰变量,constTYPE ValueName=value value 是不可变的。 (2,将const 改为外部链接,作用于扩大至全局,编译时分配内存,并且可以不进行初始化,仅仅作为声明,编译器认为在在程序其他地方进行了定义; Extend constint ValueName= value; 2、指针使用CONST (1 ,指针本身是常量不可变 (char*,constpContent; Const (char*,pContent;(2,指针指向的内容是常量不可变 Constchar*pContent; Char const*pContent; (3,两者都不可变 Constchar*constpConten 3、函数中使用CONST (1)const 修饰函数的参数 a 传递过来的参数在函数内不可以改变;void function(const int var);b 参数指针所指内容为常量不可变;void function(const char *Var); c 参数本身为常量不可变; void function(char *const Var);C语言期末考试题(含答案)
嵌入式C语言经典笔试题目
C语言考试题库及答案复习整理
c语言笔试题(答案)(精心整理)
嵌入式C语言面试题汇总(超经典)
C语言笔试题带答案6doc
c语言笔试题目及答案
大学c语言考试题库含答案
c语言经典面试题
c语言笔试题答案优选稿
C语言面试题(经典全)
大学c语言考试题及答案
C语言面试题大汇总,个人觉得还是比较全
C语言笔试题带答案
C语言试题及答案
C语言笔试题及参考答案-东软集团
c语言面试题目100及最佳答案
C语言期末考试试题及答案
C语言面试题