填空笔试经典C语言
c语言程序填空题

16功能:输入字符串,再输入一个字符,将字符串中与输入字符相
同的字符删除。
【1】a[i] != '\0'或a[i]或a[i]!=NULL【2】a[j]='\0'或a[j]=NULL或a[j]=0
【3】cc=getchar()或scanf("%c",&cc)【4】fun(a,cc)
12功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘
输入。
【1】str【2】str[i]!='\0'或str[i]!=NULL或str[i]!=0或str[i]
【3】str[k]=str[i]或*(str+k)=*(str+i)或str[k]=*(str+i)或*(str+k)=str[i]
39功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中
马驮2担,两匹小马驮一担,求大、中、小马各多少匹?
【1】3【2】2【3】hm【4】hl
40功能:找出数组中最大值和此元素的下标,数组元素的值由键盘
输入。
【1】a + i或&a[i]【2】p-a或-a+p【3】>【4】*s
41功能:输出两个整数中大的那个数,两个整数由键盘输入。
24功能:有n个整数,使其前面各数顺序向后移m个位置,最后m个数
变成最前面的m个数
【1】number,n,m【2】array,n,m【3】array+n-1或array + n -1【4】p-1或p -1
25功能:用冒泡法对数组a进行由小到大的排序。
100条经典C语言笔试题目(全)

100条经典C语言笔试题目1、请填写bool,float,指针变量与“零值”比较的if语句。
提示:这里“零值”可以是0,0.0,FALSE 或者“空指针”。
例如int变量n与“零值”比较的if语句为:if ( n == 0 )if ( n != 0 )以此类推。
(1)请写出 bool flag 与“零值”比较的 if 语句:【标准答案】if ( flag )if ( !flag )(2)请写出 float x 与“零值”比较的 if 语句:【标准答案】 const float EPSINON = 0.00001;if ((x >= - EPSINON) && (x <= EPSINON)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。
(3)请写出 char *p 与“零值”比较的 if 语句【标准答案】 if (p == NULL)if (p != NULL)2、以下为 Linux下的 32 位 C程序,请计算 sizeof 的值。
char str[] = “Hello” ;char *p = str ;int n = 10;请计算(1)sizeof (str ) =(2)sizeof ( p ) =(3)sizeof ( n ) =【标准答案】(1)6、(2)4、(3)4(4)void Func ( char str[100]) {……;} 请计算 sizeof( str ) = (5)void *p = malloc( 100 );请计算sizeof ( p ) =【标准答案】(4)4、(5)43、 long a=0x801010;a+5=?【标准答案】0x801010用二进制表示为:“1000 0000 0001 0000 0001 0000”,十进制的值为8392720,再加上5就是8392725。
4、用变量a给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针 ;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;【标准答案】e)int * a[10]; f)int (*a)[10]g)int (*a)(int); h) int (*a[10])(int)5、设有以下说明和定义:typedef union {long i; int k[5]; char c;} DATE;struct data { int cat; DATE cow; double dog;} too;DATE max;则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_____【标准答案】DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20.data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是 20 + 32 = 52。
c语言填空题必背概念及答案

c语言填空题必背概念及答案.docC语言最重要的知识点总体上必须清楚的:1)程序结构是三种:顺序结构、选择结构(分支结构)、循环结构。
2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。
3)计算机的数据在电脑中保存是以二进制的形式。
数据存放的位置就是他的地址。
4)bit是位是指为0或者1。
byte 是指字节, 一个字节 = 八个位。
概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、#define PI3、1415926; 这个写法是错误的,一定不能出现分号。
define a 1+2 define a (1+2)a=aa=1+21+2=5 a=aa=33=93、每个C语言程序中main函数是有且只有一个。
4、在函数中不可以再定义函数。
5、算法:可以没有输入,但是一定要有输出。
6、break可用于循环结构和witch语句。
7、逗号运算符的级别最低,赋值的级别倒数第二、第一章C语言的基础知识第一节、对C语言的基础认识1、C语言编写的程序称为源程序,又称为编译单位。
2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。
3、一个C语言程序有且只有一个main函数,是程序运行的起点。
第二节、熟悉vc++1、VC是软件,用来运行写的C语言程序。
2、每个C语言程序写完后,都是先编译,后链接,最后运行。
(。
c-à。
obj-à。
ee)这个过程中注意。
c和。
obj文件时无法运行的,只有。
ee文件才可以运行。
(常考!)第三节、标识符1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了2、标识符分为关键字、预定义标识符、用户标识符。
关键字:不可以作为用户标识符号。
C语言考试填空题

C 语言考试填空题1.一个C 语言程序中至少应该包含一个【】函数。
答案:main 有且只有一个2.a 是整型变量,则执行表达式a=25/3%3后a 的值为【】答案:23.int m=5,y=2;则表达式y+=y-=m*=y 的值为。
【】答案:-164.结构化程序由【】、【】、【】三种基本结构组成.答案:顺序、选择、循环5.已知a=10,b=15,c=1,d=2,e=0,则表达式c==(b>e )的值为【】。
答案:16.C 语言中,二维数组在内存中的存放方式为按【】优先存放.答案:答案:行行7.设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值为【】答案:18.C 源程序的基本单位是【】。
答案:源程序的基本单位是【】。
答案:函数函数9.设C 语言中,int 类型数据占2个字节,则long 类型数据占【】个字节,short 类型数据占【】个字节.答案:4,210.按内存排列顺序,数组char a[2]中的所有元素是a[1]和【】.答案:a[0]11.int x;x=-3+4*5-6,则x 的值为【】.答案:1112.执行以下程序段后,s 的值是【】int a[]={5,3,7,2,1,5,3,10},s=0,k;for(k=0;k<8;k+=2)s+=*(a+k);答案:1613.在C语言中的实型变量分为两种类型,它们是float型和【】型.答案:double14.若已知a=10,b=20,则表达式!a<b的值为【】。
答案:115.为条件表达式z=x>y?a:b释义:【】答案:当x>y时,z=a;【】答案:当否则z=b;16.若要调用函数fabs(),必须包含头文件【】答案:math.h17.请写出数学式a/bc的C语言表达式【】。
答案:(a/b)*c或(a*c)/b18.已知a=10,b=15,c=1,d=2,e=0,则表达式(c==b)>e的值为【】.答案:019.条件“20<x<30或x<-100”的C语言表达式是【】。
c语言笔试题(答案)

c语言笔试题(答案)笔试题一、填空题(每个空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 )二、选择题(每题2分,共34分)1)若有说明int(*p)[3];以下叙述正确的是( D )A:p是指针数组B:(*p)[3]和*p[3]等价C:p是指向一维数组中任何一个元素的指针D:p是指向含有3个整型元素的一维数组的指针2)以下关于单元测试的描述,哪些是对的?(D)A:黑盒测试针对软件的功能,不考虑功能的实现细节;B:白盒测试针对源代码的测试,从程序功能的具体实现上找错;C:路径覆盖是黑盒测试的一种方法,编写测试用例使程序的每条语句都能走到;D:条件覆盖是百盒测试的一种方法, 编写测试用例使程序的每个判断的各种情况都能到3)以下可以用于任务间通信的有(ABCD)A:共享内存 B:信号量C:消息队列和管道 D:socket调用4)有关结构,以下哪些描述是对的?(BC)A:为了测试方便,尽量把一个结构的功能设计得多一些B:不同结构间的关系不要过于复杂C:结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构中D:结构中元素的布局与排列顺序可以随意设计5)关于强制类型转化,下面说法正确的是(ABCD)A:当目的结构的空间大于源结构的空间时,要重点关注内存访问超过源结构范围的情形,可能越界;B:当目的结构的空间小于源结构的空间时,要重点关注对目的结构赋值不能完全覆盖源结构范围的情形,可能遗漏;C:结构体之间的强制类型转换时,其成员字段的数据类型的差异也是要格外小心的; D:与结构体之间的强制类型转换相比,基本数据结构的强制类型转换更容易出现上面描述的情况,使用的时候,一定要慎之又慎;6)正确的使用assert,软件系统不会对人为原因造成的错误进行处理。
C语言选择、填空、判断题

一、单项选择题(17道小题,共20分)1、以下叙述中正确的是( C )。
(1分)A、 C语言比其他语言高级B、 C语言可以不用编译就能被计算机识别执行C、 C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D、 C语言出现的最晚,具有其他语言的一切优点2、以下说法正确的是( C )。
(1分)A、C语言程序总是从第一个函数开始执行B、在C语言程序中,要调用函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分3、下列可用于C语言用户标识符的一组是( B )。
(1分)A、 void define WORDB、 a3_b3 _123 CarC、 For abc caseD、 2a DO sizeof4、设int a=3,b=4,c=5;表达式(a+b)>c&&b==c的值是( C ) 。
(1分)A、2B、-1C、0D、15、以下关于循环体的描述中,( C )是错误的。
(2分)A、循环体中可以出现break语句B、循环体中还可以出现循环语句C、循环体中不能出现continue语句D、循环体中可以出现switch语句6、While(x)中的x相当于( D )。
(2分)A、x==0B、x==1C、x!=1D、x!=07、以下关于switch语句和break描述中 , ( A ) 是正确的。
(2分)A、在switch语句中,可以根据需要使用或不使用break语句B、switch语句中必须用break语句C、break语句只能用于switch语句D、break语句是switch语句必须的一部分8、以下对C语言函数的有关描述中,正确的是( B )。
(1分)A、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B、C函数既可以嵌套调用又可以递归调用C、函数必须有返回值,否则不能使用函数D、C程序中有调用关系的所有函数必须放在同一个源程序文件中、9、在下面的函数声明中,存在着语法错误的是( A )。
填空题 C语言

章节11122222222222 2 22 2 2 2 2 23 3 3 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 33 3 3 3 3 3 3 3 3 33 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 33 3 3 3 3 3 33 33 3 33 3 3 3 33 3 3 3 3 3 3 3 333 3 3 3 3 3 3 3 3 3 333 333 3 33 33 3 3 3 3 34 4 4 444 44 44 4 44 4 4 444 44 44 4 4 44 4 4 4 44 44 5 5 5 5 5 5 5 55 5 5 5 55 5 55 5 5 5 5 55 6 6 6 6 6 6 66 6 6 66 6 66 67 77 77 7 7 77 78 8 8 88 88 8 8 8 88 88 88 8 888 8 8 8 88 88 8 99 99 9 99 9 99 9 9 99 10 10 10 10 10 10 10 10 10 10题目C语言源程序的基本单位是【1】.C语言中,【1】是程序的基本组成部分.一个C源程序中至少应包括一个【1】函数.C语言中的字符变量用保留字【1】来说明.getchar()函数只能接收一个【1】.程序运行的结果是【1】.main(){int a=3,b=4;printf("%d\n",(a<b) ? a : b);}程序运行的结果是【1】.#include "stdio.h"main(){char c;c = 'B' ;putchar ( c ) ;}设c语言中,int类型数据占2个字节,则short类型数据占【1】个字节.设c语言中,int类型数据占2个字节,则long类型数据占【1】个字节.设x=2,表达式x>=60==1的值为【1】.输入整型变量a的值.int a; scanf("%d",【1】);若有定义:char c='\010'; 则变量C中包含的字符个数为【1】.设x=2.5,a=7,y=4.7,算术表达式x+a%3*(int)(x+y)%2/4的值为【1】.下列程序的输出是【1】,main(){int a=011;printf("%d\n",++a);}下列语句输出的结果是【1】,int a=-1;printf("%x",a);下列语句输出的结果是【1】,unsigned int b=65535;printf("%d",b);以下程序的输出结果是【1】.main(){ unsigned short a=65536; int b;printf("%d\n",b=a);}在c语言中,格式输入操作是由库函数【1】完成的,格式输出操作是由库函数printf完成的.在c语言中,格式输入操作是由库函数scanf完成的,格式输出操作是由库函数【1】完成的.在C语言中,最小整型数是【1】.在C语言中的实型变量分为两种类型,它们是float型和【1】型.执行下面两个语句,输出的结果是【1】,char c1=97,c2=98;printf("%d %c",c1,c2);若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式 【1】. C语言表达式!(3<6)||(4<9)的值是【1】.c语言表达式!(4>=6)&&(3<=7)的值是【1】.c语言表达式5>2>7>8的值是【1】.int a=1,b=2,c=3; 执行语句a=b=c;后a的值是【1】.int x; x=(3+4)%5-6, 则x的值为【1】.int x; x=-3+4%5-6, 则x的值为【1】.int x; x=-3+4*5-6, 则x的值为【1】.int x=2,y=2,z=0; 则表达式x==y>z的值为【1】.int x=2,y=3,z=4; 则表达式!(x+y)>z的值为【1】.int x=2,y=3,z=4; 则表达式x||y+z的值为【1】.int x=2,y=3,z=4; 则表达式x+y&&z的值为【1】.int x=2,y=3,z=4; 则表达式x+y>!z的值为【1】.int x=2,y=3,z=4; 则表达式x+y>z的值为【1】.int x=2;z=++x+1; 则x的值为【1】.int x=2;z=++x+1; 则z的值为【1】.int x=y=4,z=2;x=y==z; 则x的值为【1】.表达式 a+=b 相当于表达式【1】.表达式 i++ 相当于表达式【1】.表达式 i++ 相当于表达式i=【1】.表达式18 && 53 的值是【1】.若 char w,int x,float y,double z;则表达式w*x+z-y的结果为【1】类型.若a是int型变量,则计算表达式 a=25/3%3 后a的值为【1】.若s是int型变量,且s=6,则下面表达式的值是【1】.s%2+(s+1)%2设 int x=1/4;则x的值为【1】.设 x 的值为15,n 的值为2,则表达式 x%=(n+3) 运算后 x 的值是【1】.设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b后,t 的值是【1】.设k=(a=2,b=3,a*b),则k 的值为【1】.设w=5;w+= -2;则w的值为【1】.设x=(5>1)+2,x的值 为【1】.设x=5>1+2,x的值 为【1】.设x=72,表达式x=(x>=60)的值为【1】.设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为【1】.下列程序的输出结果是【1】.main( ){int a=7,b=5;printf("%d\n",b=b/a);}写出表达式 1.234&&5.982 的值是【1】.写出语句 b=(a=6,a*3); 执行后整型变量b的值是【1】.已知 a=10,b=15,c=1,d=2,e=0,则表达式 a*b&&c 的值为【1】.已知 a=10,b=15,c=1,d=2,e=0,则表达式!a<e的值为【1】.已知 i=5, 写出语句 a=(i>5)?0:1; 执行后整型变量 a 的值是【1】.已知 i=5,写出语句 a=i++; 执行后整型变量a的值是【1】.已知 i=5,写出语句 i*=i+1; 执行后整型变量 i 的值是【1】.已知 i=5.6;写出语句 a=(int)i; 执行后变量 i 的值是【1】.已知 i=5;写出语句 a=--i; 执行后整型变量 a 的值是【1】.已知a=12,写出表达式 (0<a)&&(a<2) 的值是【1】.已知a=13,b=6, !a 的值为【1】.已知a=13,b=6, a%b的十进制数值为【1】.已知a=13,b=6, a&&b的十进制数值为【1】.已知a=13,b=6, a||b的十进制数值为【1】.执行下列语句后,z 的值是【1】.int x=4,y=25,z=5; z=y/x*z;设x=2&&2||5>1,x的值 为【1】.设x=4<4-!0,x的值为【1】.int a=1,b=2,c=3; 表达式(a&b)||(a|b) 的值是【1】.设a取二进制数00101101,若想通过a^b运算使a的高4位取反,低4位不变,则b的二进制数是【1】.设char a,b;若想通过a&b运算保留a的第1位和第6位的值,则b的二进制数是【1】.已知a=13,b=6, a&b的十进制数值为【1】.已知a=13,b=6, a|b的十进制数值为【1】.已知a=13,b=6, a>>2的十进制数值为【1】.表示"整数x的绝对值大于5"时值为"真"的C语言表达式是【1】.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是【1】 . c=(a-=(b-5));c=(a%11)+(b=3);设有以下变量定义,并已赋确定的值char w; int x; float y; double z;则表达式:w*x+z-y所求得的数据类型为【1】.int a=1,b=2,c=3; 执行语句a += b *= c;后a的值是【1】.int x; x=3*4%-5/6, 则x的值为【1】.int x; x=-3+4%-5*3, 则x的值为【1】.int x=2,y=3,z=4; 则表达式!x+y>z的值为【1】.int x=2,y=3,z=4; 则表达式x+(y>!z)的值为【1】.int x=2,y=3,z=4; 则表达式x+y&&x=y的值为【1】.int x=2,y=3,z=4; 则表达式x+y>z&&y==z的值为【1】.int x=2;x*=y=z=4; 则x的值为【1】.int x=2;z=-x+++1; 则x的值为【1】.int x=2;z=-x+++1; 则z的值为【1】.int x=2;z=x++-1; 则x的值为【1】.int x=2;z=x++-1; 则z的值为【1】.int x=4,y=z=2;x=x==(y=z); 则x的值为【1】.int x=4,y=z=2;z=x==(y=z); 则z的值为【1】.int x=y=z=2;x=y==z; 则x的值为【1】.x=5,y=8时,c语言表达式5-2>=x-1<=y-2的值是【1】.程序main(){int p=30;printf("%d\n",(p/3>0 ? p/10 : p%3));}运行后的输出结果是【1】.程序运行的结果是【1】.main(){int a=3,b=4;printf("%d\n",(a<b) ? a : b);}假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是【1】.假设所有变量都为整型,表达式(a=2,b=5,a>b?a++:b++,a+b)的值是【1】.假设有条件 int x=1,y=2,z=3;则表达式z+=x>y?++x:++y的值是【1】.若a是int型变量,且a的初值为6,则计算表达式 a+=a-=a*a 后a的值为【1】.若int x=6;则x+=x-=x*x表达式最后x的值是【1】.若x和n均是int型变量,且x和n的初值均为5,则计算表达式 x+=n++ 后n的值为【2】.若x和n均是int型变量,且x和n的初值均为5,则计算表达式 x+=n++ 后x的值为 【1】】.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是 【1】 . c=(a-=(b-5));c=(a%11)+(b=3);若有以下程序main(){ char a;a='H'-'A'+'0';printf("%c\n",a);}执行后的输出结果是【1】.若有以下定义,则计算表达式y+=y-=m*=y后的y值是【1】.int m=5,y=2;设 x 的值为15,n 的值为2,则表达式 x*=n+3 运算后 x 的值是【1】.设(k=a=5,b=3,a*b),则k值为【1】.设(k=a=5,b=3,a*b),则表达式的值为【1】.设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值为【1】.设x=62,表达式x>=60&&x<70||x==1的值为【1】.设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是【1】.设y是int型变量,请写出判断y为奇数的关系表达式【1】.下列程序的运行结果为【1】.#include "stdio.h"main(){int x=2,y=4,z=40;x*=3+2;x=y=z;pritnf("%d\n",x);}下列程序的运行结果为【1】.#include "stdio.h"main(){int x=2,y=4,z=40;x*=3+2;x=y=z;pritnf("%d\n",x);}已知 a=10,b=15,c=1,d=2,e=0,则表达式 a+b>10||a+b<0的值为【1】.已知 a=10,b=15,c=1,d=2,e=0,则表达式(c==b)>e的值为【1】.已知 a=10,b=15,c=1,d=2,e=0,则表达式a++&&e++&&c++的值为【1】.已知 a=10,b=15,c=1,d=2,e=0,则表达式c==b>e的值为【1】.已知 a=10,b=15,c=1,d=2,e=10,则表达式a++&&e++&&c++的值为【1】.已知 i=5,写出语句 i-=0x12; 执行后整型变量 i 的值是【1】.已知 i=5,写出语句 a=(a=i+1,a+2,a+3); 执行后整型变量 a 的值是【1】.已知 i=5;写出语句 i+=012; 执行后整型变量 i 的十进制值是【1】.已知a=13,b=6, a/b的十进制数值为【1】.已知x=3,y=2,则表达式x*=y+8的值为【1】.以下程序的输出结果是 【1】 .main(){ int a=1, b=2;a=a+b; b=a-b; a=a-b;printf("%d,%d\n", a, b );}以下程序的输出结果是【1】.main(){ int a=0;a+=(a=8);printf("%d\n",a);}以下程序的输出结果为【1】,#include "stdio.h" main(){int a=010,j=10;printf("%d,%d\n",++a,j--);}以下程序运行后的输出结果是【1】.main(){char m ;m = 'B' + 32 ;printf ( "%c\n" , m ) ;}用户输入字母"a"时,下列程序运行结果是【1】.#include < stdio.h >main(){char ch;ch= getchar( );(ch>='a' && ch<='z') ? putchar(ch+'A'-'a') : putchar(ch);}语句:x++; ++x; x=x+1; x=l+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句【1】.执行下列语句的结果是【1】,a=3;printf("%d,",++a);printf("%d",a++);执行下列语句后,b 的十进制值是【1】.int x=240,y=15,b;char z='A';b=(( x && y ) && ( z < 'a' ));执行下列语句后,z 的值是【1】.int x=4,y=25,z=5; z=y/x*z;下面程序段的输出结果是【1】.int a=12; a=a&0377;pritnf("%o\n",a);下面程序段的输出结果是【1】.int a=12;a=a&052;printf("%o\n",a);下面程序段的输出结果是【1】.int a=12; a=a&0377;pritnf("%d\n",a);下面程序段的输出结果是【1】.int a=12;a=a&052;printf("%d\n",a);已知a=13, a<<2的十进制数值为【1】.已知a=13,b=6, a^b的十进制数值为【1】.以下程序计算数n的阶乘.main(){int i,n; long np;scanf("%d",&n);np=【1】;for(i=2;i<=n;i++)np=np*i;printf(("n=%d,n!=%ld\n",n,np);}c语言程序的三种基本结构是:顺序结构,选择结构,【1】结构. C语言的三种基本结构是【1】结构、选择结构、循环结构.程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次.从键盘输入 1 2 3 4 5 6 7 8 9 执行后输出的结果是【1】. main(){int a[3][3],sum=0;for(i=0;i<3,i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("\n");for( i=0; i<3; i++ ) sum = sum + a[i][i];printf("%d\n",sum);}当a=1,b=2,c=3时,执行以下程序段后a=【1】.if (a>c) b=a;a=c;c=b;若所用变量都已正确定义,请填写以下程序段的输出结果【1】.for(i=1;i<=5;i++);printf("OK\n");若所用变量都已正确定义,请填写以下程序段的输出结果【1】.s=7;do s -= 2;while (s==0);printf("%d\n",s);为了避免嵌套条件语句的二义性,C语言规定else与其前面最近的【1】语句配对.以下程序段要求从键盘输入字符,当输入字母为'Y' 时,执行循环体,则括号内应填写【1】.ch=getchar();while(ch ____ 'Y')/*在括号中填写*/ch=getchar();以下程序运行后的输出结果是 【1】.main(){int a=1,b=3,c=5;if (c=a+b) printf("yes\n");else printf("no\n");}下面程序的输出是 【1】.main(){ int arr[10],i,k=0;for( i=0; i<10; i++)arr[i]=i;for( i=1; i<4; i++)k+=arr[i]=i;printf( "%d\n", k);}当a=1,b=2,c=3时,执行以下程序段后c=【1】.if (a>c) b=a;a=c;c=b;当a=3,b=2,c=1;时,执行以下程序段后 a=【1】.if(a>b) a=b;if(b>c) b=c;else c=b;c=a;当a=3,b=2,c=1;时,执行以下程序段后 b=【1】.if(a>b) a=b;if(b>c) b=c;else c=b;c=a;当a=3,b=2,c=1;时,执行以下程序段后 c=【1】.if(a>b) a=b;if(b>c) b=c;else c=b;c=a;当输入grade值是'K'时,下列程序的执行结果是【1】.main(){char grade;scanf("%c",&grade);switch(grade){case 'A':printf("85~100\n");break;case 'B':printf("70~84\n");break;case 'C':printf("60~69\n");break;case 'D':printf("<60\n");break;defaul: printf("error\n");}当输入m,n值分别是49,21时,下列程序的执行结果是【1】.main(){int m,n,r;printf("please type in two positive integers\n");scanf("%d%d",&m,&n);while(n){r=m%n;m=n;n=r;若输入字符串:abcde<回车>,则以下while循环体将执行 【1】 次.While((ch=getchar())=='e') printf("*");若所用变量都已经正确定义,请填写以下程序段的输出结果【1】.s=7;while ( --s );s -= 2;printf("%d\n",s);若所用变量都已正确定义,请填写以下程序段的输出结果【1】.for(i=1;i<=5;i++);若所用变量均已正确定义,则执行下面程序段后x的值是【1】.x=100;a=10;b=20;k1=5;k2=0;if(a<b)if(b!=15)if(!k1) x=1;else if(k2) x=10;x=-1;若所用变量均已正确定义,则执行下面程序段后的 值是【1】.for(i=0 ; i<2 ; i++ ) printf("YES"); printf("\n");设i,j,k均为int型变量,则执行完for循环for(i=0,j=10;i<=j;i++,j--) k=i+j;后,k的值为【1】.设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是【1】.for (x=0,y=0;y!=123&&x<3;x++)scanf ("%d",&y);设有如下程序段:int i=0, sum=1;do{ sum+=i++;}while(i<6);printf("%d\n", sum);上述程序段的输出结果是 【1】.下列程序段的输出结果是 【1】.int n='c';switch(n++){ default: printf("error");break;case 'a':case 'A':case 'b':case 'B':printf("good");break; case 'c':case 'C':printf("pass");case 'd':case 'D':printf("warn");}以下do-while语句中循环体的执行次数是【1】.a=10;b=0;do { b+=2; a-=2+b; } while (a>=0);以下程序的输出结果是【1】.main(){int s,i;for(s=0,i=1;i<3;i++,s+=i);printf("%d\n",s);}以下程序的输出结果为【1】,#include "stdio.h"main(){int a;for(a=0;a<10;a++);printf("%d",a);}以下程序运行后的输出结果是【1】.main(){int i=10, j=0;do{ j=j+i; i--; }while(i>2);printf("%d\n",j);}有以下程序main( ){ int t=1,i=5;for(;i>=0;i--) t*=i;printf("%d\n",t);} 执行后输出结果是【1】.执行以下程序后,输出'#'号的个数是 【1】.#include <stdio.h>main(){ int i,j;for(i=1; i<5; i++)for(j=2; j<=i; j++) putchar('#');}C程序在执行过程中,不检查数组下标是否【1】.C语言中,二维数组在内存中的存放方式为按【1】优先存放.C语言中,数组名是一个不可变的【1】常量,不能对它进行加减和赋值运算. C语言中,数组元素的下标下限为【1】.数组char a[2]中的所有元素是a[1]和【1】.定义int a[2][3];表示数组a中的元素个数是【1】个.复制字符串的库函数是【1】,只写函数名即可.求字符串长度的库函数是【1】,只写函数名即可.若有定义:char s[ ]="china";则Turbo C系统为数组s开辟【1】个字节的内存单元.若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3该数组的元素中,数值最大的元素的下标值是【1】.数组在内存中占一段连续的存储区,由【1】代表它的首地址.执行语句char str[81]="abcdef";后,字符串str结束标志存储在str[【1】] (在括号内填写下标值)中.字符串的结束标志是【1】.若先后输入country和side,则下列程序运行结果为【1】.main(){char s1[40],s2[20];int i=0,j=0;scanf("%s",s1);scanf("%s",s2);while(s1[i]!='\0') i++;while(s2[j]!='\0') s1[i++]=s2[j++];s1[i]='\0';printf("%s\n",s1);}程序运行后的输出结果是【1】.main(){int i,n[]={0,0,0,0,0};for(i=1;i<=4;i++){n[i]=n[i-1]*2+1;printf("%d ",n[i]);}}读程序,填运行结果.【1】main(){char c[10]={'I',' ','a','m',' ','a',' ','b','o','y'};int i;for(i=0;i<10;i++)printf("%c",c[i]);printf("\n");}合并字符串的库函数是【1】,只写函数名即可.若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3该数组的元素中,数值最小的元素的下标值是【1】.若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3该数组可用的最小下标值是【1】.若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3该数组可用的最大下标值是【1】.若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3该数组中下标最大的元素的值是【1】.若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3该数组中下标最小的元素名字是【1】.下列程序段的输出结果是 【1】 .main(){ char b[]="Hello,you";b[5]=0;printf("%s \n", b );}static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为【1】.函数的【1】调用是一个函数直接或间接地调用它自身.函数的定义不可以嵌套,但函数的调用【1】嵌套.函数调用时的实参和形参之间的数据是单向的【1】传递.函数调用语句func((e1,e2),(e3,e4,e5))中含有【1】个实参.静态变量和外部变量的初始化是在编译阶段完成的,而自动变量的赋值是在【1】时进行的.如果函数不要求带回值,可用【1】来定义函数返回值为空.静态变量和外部变量的初始化是在【1】阶段完成的,而自动变量的赋值是在函数调用时进行的.程序填空:用递归方法求n!float fac(n)int n;{float f;if (n<0) printf (" n<0,data error! ");else if ( n==0 || n++1 ) f=1;else f =n*(【1】);return ( f );}下面程序的输出是【1】.#define MAX 5int a[MAX],k;main(){ fun1();fun3(); fun2(); fun3();printf("\n"); }fun1(){ for(k=0;k<MAX;k++) a[k]=k+k; }fun2(){ int a[MAX],k;for(k=0;k<5;k++) a[k]=k; }fun3(){ int k;for(k=0;k<MAX;k++) printf("%d",*(a+k)); }下面程序的输出是【1】.long fun5(int n){ long s;if((n==1)||(n==2))s=2;elses=n+fun5(n-1);return(s);}main(){ long x;x=fun5(4);printf("%ld\n",x);}。
二级C语言笔试复习(填空部分)

22. 表示 “当x取值在[1, ) 范围内时, y取值1, 否则y 取 值 -1 ” 所使用的C表达式为: x>=1&&x<sqrt(10)
y=
? 1 : -1
23.已有声明: int a; char s[80]="123456";
则执行语句: strcpy( s+4 , "123456" ); a=strlen(s); 后变量a的值是
的输出结果是
3
。
3.可以改变局部变量的生存期、但不能改变它的 作用域的存储类别是
static
。
4.C语言有效的预处理命令总是以
#
开头。
5.若有声明:
int a=15, b=20, c=25, e;
则执行语句:
e=a>b ? --c : ++c ;
后变量e的值是 26 。
6.若有声明 “ int a=5 , b=2 ; ” ,则表达式: b+=(float)(a+b)/2
运算后b的值为
5
。
7.若有声明 “ char s[10]= “remind ”; ”,则执行
“ puts(s+2) ; ” 后的输出结果是 mind
。
8.若有声明 “ double x=10 , y=5; ”,则计算xy的库
函数调用形式是 pow( x , y ) 。
9. 已知某程序中有预处理命令“#include<stdio.h>”, 为使语句 “ zx=fopen(“c:\\a.txt ” , “ r ” ); ” 能正 常执行,在该语句之前必须有声明 FILE *ZX ; 。
12.若已有定义 “ enum TP{ A, B, C }; ”,则执行
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基本数据类型的考察(1-4)数组、指针、内存、结构体常考点(5-28)宏、头文件、关键字的考察(29-54)程序阅读、改错(55-75)编程练习(76-100)•1、请填写bool , float, 指针变量与“零值”比较的if 语句。
(1)请写出bool flag 与“零值”比较的if 语句:(2)请写出float x 与“零值”比较的if 语句:(3)请写出char *p 与“零值”比较的if 语句•2、以下为Linux下的32 位C程序,请计算sizeof 的值。
char str[] = “Hello” ;char*p=str;int n = 10;请计算(1)sizeof (str ) = (2)sizeof ( p ) =(3)sizeof ( n ) =•(4)V oid Func (char str[100]){…… ;}请计算sizeof( str ) =•(5)void *p = malloc( 100 ); 请计算sizeof ( p ) =•3、long a=0x801010;a+5=?4、用变量a给出下面的定义e) 一个有10个指针的数组,该指针是指向一个整型数的;f) 一个指向有10个整型数数组的指针;g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;5、设有以下说明和定义:typedef union {long i; int k[5]; char c;} DATE;struct data { int cat; DA TE cow; double dog;} too;DA TE max;则语句printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:_____6、请问以下代码有什么问题:int main(){char a;char *str=&a;(因为a只有一个字节,hello多出来的会覆盖内存别处的内容)•strcpy(str,"hello");printf(str);return 0;}7、请问以下代码有什么问题:char* s=“AAA”;(此种赋值方法“aaa”为只读)printf("%s",s);s[0]='B';printf("%s",s);有什么错?8、int (*s[10])(int) 表示的是什么啊9、c和c++中的struct有什么不同?10、void getmemory(char *p){p=(char *) malloc(100);strcpy(p,“hello world”);}int main( ){char *str=NULL;getmemory(str);printf(“%s/n”,str);free(str);return 0;}会出现什么问题?11、char szstr[10];strcpy(szstr,"0123456789");产生什么结果?为什么?12、数组和链表的区别?13、void main(){char aa[10];printf(“%d”,strlen(aa));}会出现什么问题?打印结果是多少?•14、给定结构struct A{char t;char k;unsigned short i;unsigned long m;};问sizeof(A) = ?•15、struct name1{char str;short x;int num;};求sizeof(name1)?•16、struct name2{char str;int num;short x;};求sizeof(name2)?17、程序哪里有错误wap( int* p1,int* p2 ){int *p;*p = *p1;*p1 = *p2;*p2 = *p;}18、c和c++中的struct有什么不同?•19、(void *)ptr 和(*(void**))ptr的结果是否相同?其中ptr为同一个指针。
20、要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100000 = 1234;那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?21、int a,b,c 请写函数实现c=a+b ,不可以改变数据类型,如将c改为long int,关键是如何处理溢出问题22、关于内存的思考题(1)你能看出有什么问题?Void GetMemory(char *p){P=(char *)malloc(100);}Void Test(void){Char *str=NULL;GetMemory(str);Strcpy(str,”hello world”);Printf(str);}•23、关于内存的思考题(2)你能看出有什么问题?•Char *GetMemory(void)•{Char p[]=”hello world”;Return p;•}•Void Test(void)•{•Char *str=NULL;•str=GetMemory();•printf(str);•}•25、关于内存的思考题(3)你能看出有什么问题?•26、关于内存的思考题(4)你能看出有什么问题?•27、关键字volatile有什么含意? 并给出三个不同的例子。
•28、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。
在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。
编译器是一个纯粹的ANSI编译器。
写代码去完成这一任务。
29、头文件中的ifndef/define/endif 干什么用?•30、#include <filename.h> 和#include “filename.h” 有什么区别?31、const 有什么用途?(请至少说明两种)32、static有什么用途?(请至少说明两种)•33、堆栈溢出一般是由什么原因导致的?34、如何引用一个已经定义过的全局变量?35、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?36、队列和栈有什么区别?37、Heap与stack的差别。
38、用宏定义写出swap(x,y),即交换两数。
39、写一个“标准”宏,这个宏输入两个参数并返回较小的一个。
40、带参宏与带参函数的区别(至少说出5点)?41、关键字volatile有什么含意?42、int main(){int x=3;printf("%d",x);return 1;}问函数既然不会被其它函数调用,为什么要返回1?43、已知一个数组table,用一个宏定义,求出数据的元素个数。
44、A.c 和B.c两个c文件中使用了两个相同名字的static变量,编译的时候会不会有问题?这两个static变量会保存到哪里(栈还是堆或者其他的)?45、static全局变量与普通的全局变量有什么区别?46、static局部变量和普通局部变量有什么区别47、static函数与普通函数有什么区别?•关于45-47的参考文章全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。
这两者在存储方式上并无不同。
这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。
而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。
由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。
把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
static函数与普通函数作用域不同。
仅在本文件。
只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。
对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。
•48、程序的局部变量存在于___ 中,全局变量存在于____ 中,动态申请数据存在于___ 中。
•49、什么是预编译,何时需要预编译:50、用两个栈实现一个队列的功能?要求给出算法和思路!51、对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?52、1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)53、Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。
也可以用预处理器做类似的事。
例如,思考一下下面的例子:#define dPS struct s *typedef struct s * tPS;以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。
哪种方法更好呢?(如果有的话)为什么?54、在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?55、请简述以下两个for 循环的优缺点。
for(i=0; i<N; i++){if(condition)DoSomething();elseDoOtherthing();}if(condition){for(i=0; i<N; i++)DoSomething();}else{for(i=0; i<N; i++)DoOtherthing();}•56、语句for( ;1 ;)有什么问题?它是什么意思?57、do……while和while……do有什么区别?58、请写出下列代码的输出内容#include <stdio.h>int 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;}59、unsigned char *p1;unsigned long *p2;p1=(unsigned char *)0x801000;p2=(unsigned long *)0x810000;请问p1+5= ;p2+5= ;60、main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf(“%d,%d”,*(a+1),*(ptr-1));}请问输出:61、请问下面程序有什么错误?int a[60][250][1000],i,j,k;for(k=0;k<=1000;k++)for(j=0;j<250;j++)for(i=0;i<60;i++)a[i][j][k]=0;62、以下是求一个数的平方的程序,请找出错误:#define SQUARE(a)((a)*(a))int a=5;int b;b=SQUARE(a++);63、#define Max_CB 500void LmiQueryCSmd(Struct MSgCB * pmsg){unsigned char ucCmdNum;......for(ucCmdNum=0;ucCmdNum<Max_CB;ucCmdNum++) {......;}}•64、嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。