文档库 最新最全的文档下载
当前位置:文档库 › C语言期末复习试题

C语言期末复习试题

C语言期末复习试题
C语言期末复习试题

试卷编号:10767

所属语言:C语言

试卷方案:TC_4

试卷总分:570分

共有题型:1种

一、程序设计共57题(共计570分)

第1题(10.0分)题号:374 难度:易第2章/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:编写函数实现两个数据的交换,在主函数中输入任

意三个数据,调用函数对这三个数据从大到小排序。

------------------------------------------------*/

#include

void wwjt();

void swap(int *a,int *b)

{

/**********Program**********/

/********** End **********/

}

main()

{

int x,y,z;

scanf("%d%d%d",&x,&y,&z);

if(x

if(x

if(y

printf("%3d%3d%3d",x,y,z);

wwjt();

}

void wwjt()

{

FILE *IN,*OUT;

int m,n;

int i[2];

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("Read FILE Error");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("Write FILE Error");

}

for(n=0;n<3;n++)

{

for(m=0;m<2;m++)

{

fscanf(IN,"%d",&i[m]);

}

swap(&i[0],&i[1]);

fprintf(OUT,"%d\n",i[0]);

fprintf(OUT,"%d\n",i[1]);

}

fclose(IN);

fclose(OUT);

}

答案:----------------------

int k;

k=*a;

*a=*b;

*b=k;

----------------------

第2题(10.0分)题号:381 难度:易第2章/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:求一批数中小于平均值的数的个数。

------------------------------------------------*/

#include

void wwjt();

int average_num(int a[],int n)

{

/**********Program**********/

/********** End **********/ }

main()

{

int n,a[100],i,num;

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

num=average_num(a,n);

printf("the num is:%d\n",num); wwjt();

}

void wwjt()

{

FILE *IN,*OUT;

int n;

int i[10];

int o;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("Read FILE Error");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("Write FILE Error");

}

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

{

fscanf(IN,"%d",&i[n]);

}

o=average_num(i,5);

fprintf(OUT,"%d\n",o);

fclose(IN);

fclose(OUT);

}

答案:----------------------

int i,sum=0,k=0;

double average;

for(i=0;i

sum=sum+a[i];

average=sum*1.0/n;

for(i=0;i

if(average>a[i]) k++;

return(k);

----------------------

第3题(10.0分)题号:406 难度:易第2章/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:编写函数fun求1000以所有7的倍数之和。

------------------------------------------------*/

#define N 1000

#include

void wwjt();

int fun(int m)

{

/**********Program**********/

/********** End **********/

}

void main()

{

int sum;

sum=fun(7);

printf("%d以所有%d的倍数之和为:%d\n",N,7,sum);

wwjt();

}

void wwjt()

{

FILE *IN,*OUT;

int n;

int i[10];

int o;

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("Write FILE Error");

}

o = fun(6);

fprintf(OUT,"%d\n",o);

fclose(IN);

fclose(OUT);

}

答案:----------------------

int s=0,i;

for(i=1;i

if(i%m==0)

s+=i;

return s;

----------------------

第4题(10.0分)题号:324 难度:易第2章/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:能计算从1开始到n的自然数中偶数的平方的和,n由键盘输入,并在main()函数中输出。(n是偶数)

------------------------------------------------*/

#include

void wwjt();

int fun(int n)

{

/**********Program**********/

/********** End **********/

}

main()

{

int m;

printf("Enter m: ");

scanf("%d", &m);

printf("\nThe result is %d\n", fun(m)); wwjt();

}

void wwjt()

{

FILE *IN,*OUT;

int t;

int o;

int c;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("Read FILE Error");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("Write FILE Error");

}

for(c=1;c<=5;c++)

{

fscanf(IN,"%d",&t);

o=fun(t);

fprintf(OUT,"%d\n",o);

}

fclose(IN);

fclose(OUT);

}

答案:----------------------

int sum,i;

sum =0;

for(i=2;i<=n;i=i+2)

{

sum=sum+i*i;}

return(sum);

----------------------

第5题(10.0分)题号:2 难度:中第1章/*-------------------------------------------------------

【程序设计】

---------------------------------------------------------

题目:写程序求1-3+5-7+…-99+101的值

要求:使用程序中定义的变量

-------------------------------------------------------*/

#include"stdio.h"

void wwjt();

//函数功能:求1-3+5-7+…-+n的值

int fun(int n)

{

int i,s=0,f=1;//i定义为循环变量,s为1-3+5-7+…-n的值

/**********Program**********/

/********** End **********/

return s;

}

main()

{

printf("%d",fun(101));

wwjt();

}

void wwjt()

{

FILE *IN,*OUT;

int i,n;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("Please Verify The Current Dir..It May Be Changed");

}

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("Please Verify The Current Dir.. It May Be Changed");

}

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

{

fscanf(IN,"%i",&n);

fprintf(OUT,"%ld\n",fun(n));

}

fclose(IN);

fclose(OUT);

}

答案:for (i=1;i<=n;i+=2)

{

s=s+i*f;

f=-f;

}

第6题(10.0分)题号:357 难度:易第2章

/*------------------------------------------------

【程序设计】

--------------------------------------------------

c语言模拟测试

1、如果函数不要求带回值,可用void来定义函数返回值为空 2、将数组a的首地址赋给指针变量p的语句是p=a; 3、c语言表达式!(4>=6)&&(3<=7)的值是1 4、Int a=1,b=2,c=3;执行语句a=b=c;后a的值是3 5、c语言的三种基本结构是顺序结构、选择结构、循环结构 6、c语言中,数组元素的下标下限为0 7、若有以下数组a,数组元素:a[0]~a[9],其值为9 4 12 8 2 10 7 5 1 3 数值最大的元素下标值是2 8、结构体是不同数据类型的数据集合,作为数据类型,必须先说明结构体类型,再说明结构体变量 9、若s是int型变量,且s=6,则s%2+(s+1)%2值为1 10、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为10 for(i=0,j=10,i<=j;i++,j--)k=i+j; 11、已知i=5,语句a=(i>5)?0:1;执行后整型变量a的值为1 12、字符串的结束标志是’\0’ 13、当a=1,b=2,c=3时,执行以下程序段if(a>c)b=a;a=c;c=b;后a=3 14、执行下列语句char s[3]=”ab”,*p;p=s;后,*(p+1)的值是b 15、定义int a[2][3];表示数组a中元素的个数是6 16、一个c源程序中至少包括一个main 函数 17、程序段int k=10;while(k=0) k=k-1循环体语句执行0次 18、程序#include”stdio.h”main(){int a;for(a=0;a<10;a++);printf(“%d”,a);}输出结果10 19、已知i=5,写出语句i*i+1;执行后整型变量i的值为30 20、Static int a[3][3]={1,2,3},{4,5,6},{7,8,9}};其中a[1][2]的值为6 21、#define和printf都不是c语句Y 22、共同体变量所占的内存长度等于最长的成员长度Y 23、若a=3,b=2,c=1则关系表达式”(a>b)==c”的值为真Y 24、Char c[]=”Very Good”;是一个合法的为字符串数组赋值的语句Y 25、变量根据其作用域的范围可以分为局部变量和全局变量Y 26、c语言中”%”运算符的运算对象必须是整型Y 27、while和do...while循环不论什么条件下结果都是相同的N 28、如果函数值的类型和return语句中的表达式值不一致,则以函数类型为准Y 29、参加位运算的数据可以是任何类型的数据N 30、字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面N 31、以下c语言常量中错误的是B A OxFF B 1.2e0.5 C 2L D‘、72’ 32、编译时系统提示错误,不能正确赋字符串的是C A char s[10]=”abcdefg”; B char t[]=”abcdefg”,*s=t; C char s[10];s=”abcdefg”; D char s[10];strcpy(s,”abcdefg”); 33、变量的指针是指该变量的地址 34、系统标准输入文件指键盘 35、定义共用体的关键字是union 36、优先级最高的运算符是C A*= B>= C(类型) D+ 37、不能作为合法的c用户定义标识符的是D AFor BPrintf CWORD Dsizeof 38、调用函数时实参是一个数组名,则向函数传送的是数组的首地址 39、定义int*p[3],则定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 40、以下不正确的定义语句是 B Adouble x[5]={2.0,4.0,6.0,8.0,1.0}; Bint y[5]={0,1,3,5,7,9}; Cchar c1[]={‘1’,’2’,’3’,’4’,’5’}; Dchar c2[]={‘\x10’,’\xa’,’\x8’}; 41、凡是函数中未指定存储类别的局部变量其隐含的存储类别为自动(auto) 42、当定义一个结构体变量时系统分配给它的内存是各成员所需内存量的总和 43、以下数组定义中不正确的是D Aint a[2][3]; B int b[][3]={0,1,2,3}; Cint c[100][100]={0}; Dint d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 44、P,p1为指针变量,a为数组名,j为整型变量,不正确的是D Ap=&j,p=p1; Bp=a; Cp=&a[j]; Dp=10; 45、合法的用户标识为B Along B_2Test C3Dmax DA.dat 46、不正确的字符串常量是A A’abc’ B”12’12” C”0” D”“ 47、在c语言程序中函数的定义不可以嵌套,但函数的调用可以嵌套 48、先用语句定义字符型变量c,然后将字符a赋给c,则c=’a’;(c=97) 49、return语句可以在同一个函数中出现多次 50、char a[10];不能将字符串”abc”储存在数组中的是 C Astrcpy(a,”abc”); B a[0]=0;strcat(a,”abc”); Ca=”abc”; Dint i;for(i=0;i<3;i++)a[i]=i+97;a[i]=0; 51、功能:将一个数组中的元素按逆序存放 #include #define N 7 main() { static int a[N]={12,9,16,5,7,2,1},k,s; printf(“\n the origanal array:\n”); for (k=0;k

嵌入式C语言经典笔试题目

嵌入式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语言题库

C语言基本概念 能将高级语言编写的源程序转换成目标程序的是______。 A) 编辑程序B) 编译程序C) 解释程序D) 链接程序 您的答案为:B 参考答案为:B 以下选项中合法的用户标识符是______。 A) long B) _2Test C) 3Dmax D) A.dat 您的答案为:B 参考答案为:B 以下叙述正确的是 A) 可以把define和if定义为用户标识符 B) 可以把define定义为用户标识符,但不能把if定义为用户标识符 C) 可以把if定义为用户标识符,但不能把define定义为用户标识符 D) define和if都不能定义为用户标识符 您的答案为:D 参考答案为:B 以下叙述正确的是 A) C语言比其他语言高级 B) C语言可以不用编译就能被计算机识别执行 C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D) C语言出现的最晚、具有其他语言的一切优点 您的答案为:C 参考答案为:C 在一个C语言程序中 A) main函数必须出现在所有函数之前 B) main函数必须出现在所有函数之后 C) main函数可以在任何地方出现 D) main函数必须出现在固定位置 您的答案为:C 参考答案为:C 一个C语言程序是由_______组成的。 A) 一个主程序和若干子程序 B) 若干子程序 C) 函数 D) 若干过程您的答案为:C 参考答案为:C 以下叙述中正确的是() A) C语言的源程序不必通过编译就可以直接运行 B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令 C) C源程序经编译形成的二进制代码可以直接运行 D) C语言中的函数不可以单独进行编译 您的答案为:B 参考答案为:B 下列关于C语言用户标识符的叙述中正确的是

c语言模拟试题

试卷编号:8156 所属语言:C语言 试卷方案:C语言201006模拟 试卷总分:100分 共有题型:5种 ━━━━━━━━━━━━━━━ 一、判断共10题(共计20分) ━━━━━━━━━━━━━━━ 第1题(2.0分)题号:1225 在给变量命名时,C语言区分大小写字母,即认为Name和name不是同一个变量. 答案:Y 第2题(2.0分)题号:1279 循环结构while、do while、for不可以互相嵌套. 答案:N 第3题(2.0分)题号:1140 链表中的任何一个结点,必然要包括一个指针域. 答案:Y 第4题(2.0分)题号:1265 在书写C程序时,一行内只能写一条语句,一条语句也不能写在多行上. 答案:N 第5题(2.0分)题号:1280 C语言程序中用到的所有变量必须在使用之前进行定义. 答案:Y 第6题(2.0分)题号:1269 若定义int a[4]={1,2,3,4};若超界引用a[4]则编译时不报错. 答案:Y 第7题(2.0分)题号:19 C语言本身不提供输入输出语句,输入和输出操作是由函数来 实现的。 答案:Y 第8题(2.0分)题号:11 通过return语句,函数可以带回一个或一个以上的返回值。 答案:N 第9题(2.0分)题号:24

对于数值型数组,C语言中只能逐个引用数组元素而不能一次引用整个数组。答案:Y 第10题(2.0分)题号:33 int i,*p=&i;是正确的C说明。 答案:Y ━━━━━━━━━━━━━━━━━ 二、单项选择共15题(共计30分) ━━━━━━━━━━━━━━━━━ 第1题(2.0分)题号:87 C语言源程序的基本单位是()。 A:过程 B:函数 C:子程序 D:标识符 答案:B 第2题(2.0分)题号:110 C语言中,char类型数据占()。 A:1个字节 B:2个字节 C:4个字节 D:8个字节 答案:A 第3题(2.0分)题号:112 下列程序的输出结果是()。 main() {char c1=97,c2=98; printf("%d %c",c1,c2); } A:97 98 B:97 b C:a 98 D:a b 答案:B 第4题(2.0分)题号:170 关于return语句,下列正确的说法是()。

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 )

2020C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 精选考试类文档,如果需要,请下载,希望能帮助到你们! 2020C语言考试题库及答案

姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 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 )。 A.-a1 B.a[i] C.a2_i D.int 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# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

C语言期末考试模拟试题及答案

重点看后面的起泡法排序和找最大最小值。那些问结果的奇怪的代码,随意。 C语言期末考试试题 2008年04月12日星期六00:22 一选择题(24分,每小题2分) 1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。 A存放读入数据项的存储区 B存放读入数据的地址或指向此地址的指针 C一个指向所读文件的文件指针 D一个整形变量,代表要读入的数据项总数 )。 2.以下程序的输出结果为( main() { int i=010,j=10; printf("%d,%d\n",i++,j--); } A11,9 B9,10 C8,10 D9,9 3.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=20.0/3; a=(int)125.521%4; a=5<<2; A125,6,31,1 B125,6,1,20 C125,6.666666,31,20 D125.534,6.666666,2,20 )。 4.设i和k都是int类型,则for循环语句( for(i=0,k=-1;k=1;i++,k++) printf("****\n"); A循环结束的条件不合法 B循环体一次也不执行

C循环体只执行一次 D是无限循环 5.以下程序的输出结果为(main() { char c; int i; )。 }for(i=65;i<68;i++) { c=i+32; switch(c) { case'a': case'b': case'c':printf("%c,",c);break; default:printf("end"); } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 6.函数调用语句:fseek(fp,-10L,2);的含义是()。 A将文件位置指针从文件末尾处向文件头的方向移动10个字节B将文件位置指针从当前位置向文件头的方向移动10个字节C将文件位置指针从当前位置向文件末尾方向移动10个字节D将文件位置指针移到距离文件头10个字节处 7.以下程序的输出结果为( main() { int i=0,j=0; while(s1[i]!='\0') i++; while(s2[j]!='\0') s1[i++]=s2[j++]; s1[i]=0; )。

C语言程序设计模拟试题1(附答案)

《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”; D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 x = 9; while (x > 7)

c语言笔试题目及答案

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的线性表进行顺序查找,在最坏情况下需要比较

2019年12月计算机二级C语言考试模拟题及答案

2019年12月计算机二级C语言考试模拟题及答案 A.用户自己定义的函数只能调用库函数 B.实用的C语言源程序总是由一个或多个函数组成 C.不同函数的形式参数不能使用相同名称的标识符 D.在C语言的函数内部,能够定义局部嵌套函数 参考答案:B 参考解析:A选项中,”用户自己定义的函数只能调用库函数”描述是不准确的,也能够调用自定义函数;C选项中,对于不同函数的形式参数能够使用相同名称的标识符;D选项中,关于函数的定义不能够嵌套,但函数的调用能够嵌套。所以B选项准确。 2[单选题]以下关于C语言数据类型使用的叙述中错误的是( )。 A.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型 B.若要保存带有多位小数的数据,可使用双精度类型 C.若只处理“真”和“假”两种逻辑值,应使用逻辑类型 D.整数类型表示的自然数是准确无误差的 参考答案:C 参考解析:C语言中没有逻辑类型,所以c错误。若要保存带有多位小数的数据,能够用单精度类型也能够用双精度类型。处理包含不同类型的相关数据能够定义为结构体类型。整数类型能够无误差的表示自然数。 3[单选题]下面选项中关于编译预处理的叙述准确的是A.预处理命令行必须使用分号结尾 B.凡是以#号开头的行,都被称为编译预处理命令行 C.预处理命令行不能出现在程序的最后一行

D.预处理命令行的作用域是到最近的函数结束处 参考答案:B 参考解析:本题考查预编译的预编译处理命令行,预处理命令行不能以分号结尾,所以A选项错误,预处理命令行能够出现在程序的最后一行,预处理命令行作用域是整个文件。 4[单选题]设--X树共有150个结点,其中度为l的结点有l0个,则该---X树中的叶子结点数为( )。 A.71 B.70 C.69 D.不可能有这样的二叉树 参考答案:D 参考解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中的度称为树的度。对任何一棵二叉树,度为0的结点总是比度为2的结点多一个。如果有一棵二叉树,结点总数为l50,假设度为0的结点个数为n,则有n+10+n一1=150,n=70.5,因为结点个数必须是整数,所以不可能有题目中这样的二叉树。故选择D选项。 5[单选题]以下选项中,能用作用户标识符的是( )。 A.-0- B.8-;8 C.void D.unsigned 参考答案:A 参考解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。8中以数字8开头,所以错误。c与D中用的是关键字void与unsigned,所以错误。 6[单选题]以下叙述准确的是( )。A.表达式sizeof(FILE*)==sizeof(int*)的值为真 B.文件指针的值是一个整数,它的值一定小于文件字节数 C.文件指针的值是所指文件的当前读取位置 D.使用fscanf函数能够向任意类型的文件中写入任意数量的字符

C语言试题库(完整版)

C语言试题库 一、单项选择 第一章 C语言概述 (1)一个C程序的执行是从 A、本程序的MAIN函数开始,到MAIN 函数结束。 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。(2)以下叙述正确的是 A、在C程序中,MAIN函数必须位于程序的最前面。 B、 C程序的每行中只能写一条语句。 C、 C语言本身没有输入输出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3) C语言规定,在一个源程序中,MAIN主函数的位置是在: A、必须在最前面。 B、必须在系统调用的库函数的后面 C、可以在任意位置。

D、必须在最后面 (4)一个C程序是由: A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (5)以下叙述不正确的是: A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个MAIN函数 C、 C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 第二章数据类型、运算符与表达式 (1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32) A、4 B、16 C、32

D、52 (2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case E、 if, struct, type (3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT (4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3 (5)已知各变量的类型说明如下:

C语言等级考试模拟试题答案

一、选择题 1、若有说明语句:int x=10,y=20,z=30; 则执行语句:if(x>y) z=x; x=y; y=z; printf(“%d,%d,%d”,x,y,z); 后,输出是20,30,30 2、若有以下语句:char x=3,y=6,z; z=y^x<<2; 则z的二进制值是00001010 3、若有定义:int i,j,*pi=&i; 则与i==j等价的比较表达式是*pi==j 4、程序段:int num=0; while(num<=2) printf(“%d ,”,num++); 的运行结果是0 ,1 ,2 , 5、若用数组名作为函数调用时的实参,则实际上传递给形参的是数组的首地址 6、若已定义: int x; 则表达式((x=4*5,x*5),x+25) 的值是45。 7、若有说明:int a[3][4],s; ,则对数组a的元素引用错误的是____________ 8、下列C语言的标识符中,合法的标识符为____________ 9、若x是int类型变量,y是float类型变量,则为了将数据55和55.5分别赋给x和y,则执行语句:scanf(“x=%d, y=%f”,&x,&y,); 时,正确的键盘输入是x=55, y=55.5。 10、若有定义:struct person{ int id ; char name[20]; } per,*s=&per; 则以下对结构体成员的引用中错误的是____________ 二、填空题 1、下列程序的输出结果是6 long fib(int g) { switch(g){ case 0: return(0); case 1: case 2: return(2); } return ( fib(g-1) + fib(g-2) ); }

嵌入式C语言面试题汇总(超经典)

第一部分:基本概念及其它问答题 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.层次太深的递归调用

C语言题库

一、判断题(每题1分) 1.函数即可以嵌套定义,又可以嵌套调用.( × ) 2.unsigned 和void 在C 中都是保留字.( √ ) 3.表达式 ++i 表示对变量i 自加1. (√ ) 4.C 语言源程序的基本结构单位是main 函数. ( × ) 5.字符常量的长度肯定为1. (√ ) 6.char a[]={'a','b','c'};char b[]={"abc"};数组a和数组b 占用的内存空间大小不一样. ( √ ) 7.若有int i=10,,j=2; 则执行完i*=j+8;后i 的值为28. (× ) 8.int i,*p=&i;是正确的C 说明。( √ ) 9.While 循环语句的循环体至少执行一次. ( × ) 10.有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0. ( √ ) 11. 7&3+12的值是15.( × ) 12. C 语言本身不提供输入输出语句,输入和输出操作是由函数来 实现的.( √ ) 13. 若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真". (√ ) 14. 在C 语言中,整型数据在内存中占2个字节. ( × ) 15. 对二维数组a 来说,由于a+1与*(a+1)的值相等,因此二者的含义是一样的. (× ) 16. break 语句可用于循环体内,它将退出该重循环. ( √ ) 17. 将一个字符串"abc"赋给字符串变量str 的方法是str="abc".. (× ) 18. 参加位运算的数据可以是任何类型的数。( × ) 19. C 语言规定:在一个源程序中,main 函数的位置必须在最开始. ( × ) 20. 静态外部变量只在本文件内可用. ( √ ) 21. 若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t 没定义,所以此宏定义是错误的.( × ) 22. 字符串只能存放在字符型数组中. ( √ ) 23. 若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真". (√ ) 24. 在标准C 中,"="是判断两个数是否相等. ( × ) 25. 函数调用可以出现在执行语句中,但不能出现在表达式中. (× ) 26. break 语句可用于循环体内,它将退出该重循环. ( √ ) 27. strcat(s1,s2)函数是将字符串s1复制到字符串s2中. (× ) 28. 函数若无返回值,则它一定无形参。( × )

C语言自学考试模拟试题及答案

C语言自学考试模拟试题及答案 一、单项选择题 1.各种基本数据类型的存贮空间正确的长度排列为_____C_____. A.Char12?15:6>7?8:9)的值为____C________. A 9 B 8 C 15 D. 1 7.若x=5,y=3 则y*=x+5;y的值为___D____________. A. 10 B. 20 C. 15 D. 30 8.C语言的输入与输出操作是由______C______完成的。 A.输入语句 B.输出语句

c语言模拟考试题

1. 一个C程序的组成部分可以是()。 A)一个主函数和一至若干个其他函数B)一至若干个主函数 C)一个主程序和一至若干个其他函数D)一个主程序和一至若干个子程序 2. 一个C程序的执行是从()。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 (C)本程序的main函数开始,到本程序文件的最后一个函数结束 (D)本程序文件的第一个函数开始,到本程序main函数结束 3. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()。 A)必须为字母B)必须为下划线C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 4. 设有定义:int m=1,n=-1;则执行语句printf("%d\n",(m--&++n);后的输出结果是()。 A)–1 B)0 C) 1 D) 2 5. 表达式11&10的结果用二进制表示为()。 A)11B)3C)1D)10 6. 设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是()。 (A)3(B)0(C)9(D)-12 7. 在下列选项中,不的赋值语句是()。 A)t/=5;B)n1=(n2=(n3=0));C)k=i==j;D)a=b+c=1; 8. 下列( )表达式不满足:当x的值为偶数时值为"真",为奇数时值"假"。 A)X%2==0B)!x%2!=0 C)(x/2*2-x)==0D)!(x%2) 9. 若有定义:int a=8,b= 5,c;执行语句c=a/b+0.4 后c的值为() A)1.4 B)1 C)2.0 D)2 10. 假设a=3,b=4,c=5,则逻辑表达式: !(a+b)+c-1&&b+c/2的值是()。 A)true B)false C)0D) 1 11. 若int a=3,b=4;则执行c=a++>2||b-->=4之后,b变量的值为()。 A)3B)0C)4D)2 12. 以下哪个表达式的值为4() A)11/3B)11.0/3C)(flaot)11/3D)(int)(11.0/3+0.5) 13. 若变量a,i已经正确定义,且i已经正确赋值,合法的语句是() A) a==1 B) ++i C) a=a++=5 D)a=int(i) 14. 以下程序的输出结果是() int a=1234; printf("%2d",a); A) 12 B) 34 C)1234 D) 提示错误,无结果 15. 设x,y分别为单精度和双精度类型变量,则下列选项()可将表达式x+y的运算结果强制转换为整型数据。 A)(int)x+y B)int(x)+y C)int(x+y)D)(int)(x+y) 16. 当a=3,b=2,c=1时,表达式f=a>b>c执行完后f的值是() A)1B)0C)3D)2 17. 若x=2,y=1,则表达式x>y?1:1.5的值为() A)1B)1.5C)1.0D)2 18. 在位运算中,操作数每左移一位,其结果相当于() A)操作数乘以2B)操作数除以2C)操作数乘以4D)操作数除以4 19. 在位运算中,某操作数右移3位,其结果相当于() A)操作数乘以6B)操作数除以6C)操作数乘以8D)操作数除以8 20. 在C语言中,若以下变量均为int型,则下面程序段的输出结果是()。 s=6,u=6;u=s++;u++; printf("%d",u); A)7B)6C)5D)4 21. 若有定义:int x,y;char a,b,c;并有以下输入数据:x=12A B C, 则能给x赋整数1,给赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的程序段是() A)scanf("x%d y=%d",&x,&y); a=getch();b=getch();c=getch(); B)scanf("x=%d%d",&x,&y); a=getch();b=getch();c=getch(); C)scanf("x=%d%d%c%c%c",7x,&y,&a,&b,&c); D)scanf("x=%d%d%c%c%c%c%c",&x,&y,&a,&b,&b,&c,&c); 22. 如下程序:#include void main() {int m,n,k; m=(n=4)+(k=10-7); printf(“m=%d\n”,m); } 运行后m的值为()。 (A)4(B)3(C)7(D)14

C语言模拟试题II

《C语言程序设计教程实验与练习》(第二版)模拟试题II及答案 一、单项选择题(每题2分,30道题,共60分) 1.下面的程序将输出: main() { float f; int x=1,y=2.5; f=x/y; printf("f=%1.1f,y=%#X", f, y ); } A.f=0.0 , y=2 B.f=0.5 , y=0X2 C.f=0.0 , y=0X2 D.f=0.5 , y=2 2.下面的程序将输出: #include "string.h" main() { int len; char str[]="a\b\04235\0"; len=strlen(str); printf("%d",len); } A. 10 B. 5 C. 6 D. 7 3.下面的程序将输出: main() { int a=0x31; char *str[]={"this is one. ","this is two. "}; char ch; ch=++a-’0’; switch(ch) { case 1: printf ("%s", str[0]); case 2: printf ("%s", str[1]); default: printf ("no way! "); } } A.this is one. B.this is two. C.no way! D.this is two.no way! 4.下面的程序将输出: main() { int a[5]={1,2,3}; int k,j; for(k=1;k<4;k++) a[k]++;

for(j=0;j<5;j++) printf("%d ",a[j]); } A.1 3 4 1 0 B.2 3 4 1 0 C.2 3 4 0 0 D.1 3 4 0 0 5. 已知有下面两个变量,将数组a 的第2个单元赋值为1的C 语句是: int a[10]; int *p; p=a; A.a[2]=1; B.p[1]=1; C.*(p++)=1; D.*(++a)=1; 6. 下面程序将输出: void add(int a) { a++; return; } main() { int k; k=3.4; add(k); printf("%d ",k); } A. 3.4 B. 4.4 C. 3 D. 4 7. 下列循环结构中,不是.. 无限循环的是: A. for(i=1, s=0; ; i++) B. i=10; s=s+i ; while(1) {i=i%10+1; if(i>10) break; } C. int i=0; D. i =100; do{ ++i ; }while(i>=0); while(++i%2) i++; 8. 若已知int a[3][4],*p;p=(int *)a;那么对数组a 的第2行第2列的正确引用是: A.a[2][2] B.p[5] C.a[5] D.p[1][1] 9. 已知:int (*p)[20]; 且p 的值是0X5000,请问表达式p+2的值是多少? A. 0X5050 B. 0X5002 C. 0X5004 D. 0X5040 10. 若有说明int a[2][2];那么,下面正确的C 赋值语句是: A.a=2; B.a[1]=2; C.a[1]={1,2}; D.a[0][1]=a[1][0]; 11. 设x 为int 型变量,则执行以下语句后,x 的值为 x=10; x+=x-=x-x; A .10 B .20 C .40 D .30 12. 已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y )的值是: A .0 B .语法错 C .1 D ."假" 13. 下面能正确进行字符串... 赋值操作的语句是: A .char s[5]={"ABCDE"}; B .char s[]={'A','B','C','D','E'}; C .char *s ;s="ABCDEF"; D .char *s ;scanf ("%s",s ); 14. 已知:int a[3][4], *p=&a[0][0]; p+=6; 那么*p 和_____的值相同.

相关文档