您好,欢迎访问三七文档
第一章基础知识1、c语言支持三种数制,下列哪个数制不支持?A)十进制B)八进制C)二进制D)十六进制【答案】:选择C。计算机可以识别的是二进制数,八进制和十六进制的提出是为了“压缩”二进制,所以本质上八进制和十六进制一样,故而两者要么都选,要么都不选。熟悉c语言的人都知道,十进制数可以在c程序中直接使用而二进制则不可以。二进制是机器可以识别的码,在c语言中不可以直接被识别。第二章c语言的组成结构及数据1、下列标识符在c语言中属于合法的用户自定义的标识符?A)a_12B)a12C)3mD)doE)aa.txtF)c#bh【答案】c语言中允许的合法的用户标识符只有数字、字母、下划线,且必须以字母或者下划线开始,不能使用系统预定于的关键字作为标识符。因此,C、D、E、F均不正确。2、在c语言中下列常量的写法正确的是?A)①、-32767②、023f③、0x123dfh分析:①:正确。是一个十进制整型常量的正确表示法。②:错误。以“0”开头的是八进制数,在其表示的数中只能出现0~7这七种符号。正确的写法为:023.③:错误。以0x开头的是十六进制数,在其表示的数中只能出现0~9和A~F这十六种符号,正确的写法为:0x123df。B)①、123.46②、123.③、.456④、0.456分析:以上均是c语言中实型数据的一种正确表示—小数形式。小数形式定义:由数字和小数点组成。C)①:123.4E4②、5.4E0.5③、4E④、1.23e-5⑤:3E2分析:②、③不正确,其余全部正确。考查实型数据的指数表示形式。指数形式应注意:一、字母E或e之前之后必须有数字,且后必须是整数。二、字母E或e的前后及各数字之间不能有空格。C)①、”abbchkdl”②、”a”③、””④、’’⑤、’\n’⑥、’\’分析:④、⑥不正确,其余全部正确。考查字符型常量和字符串常量的表示方法。字符型常量应注意:一、有一对单引号括一个字符。二、转移字符常量,必须以一个反斜杠”\”开头。字符串常量应注意:一、用一对双引号括起来若干个字符。3、若inta,b;,则表达式a=3,b=1,b=a+b;的值为4,此时a=3,b=4。分析:逗号表达式的形式为:表达式1,表达式2,………,表达式n。功能:逗号表达式的值就是表达式n的值,求值顺序是从左至右依次求解。令注:可以编写如下程序对题目结果进行验证。#includestdio.hvoidmain(){inta,b;printf(%d\n,(a=3,b=1,b=a+b));printf(a=%d,b=%d\n,a,b);}//程序2-1.cpp运行结果,如下图所示:4、若floatx=123.456,y=0.6;求解下列表达式的值。1)、(int)x=123,(int)(x)=123。2)、(int)x+y=123.600000,(int)(x+y)=124。分析:此题考查了强制类型转换以及不同类型的数据在做算术运算时最终结果如何得到。(int)x:表示对浮点型x进行强制类型转化为整型。(int)x+y:表示将x强制类型转换成整型后,再与浮点型数据y进行相加运算。由于浮点型数据高于整型,故而整个表达式的结果为浮点型数据且与y保留一样位数的小数。令注,可以编写如下程序对题目进行验证。#includestdio.hvoidmain(){floatx=123.456,y=0.6;printf(%d\n,(int)x);printf(%d\n,(int)(x));printf(%f\n,(int)x+y);printf(%d\n,(int)(x+y));}//程序2-2.cpp运行结果,如下图所示:第三章顺序结构顺序结构程序设计示例:编写一个求某同学的3门课程的平均成绩程序。程序如下:#includestdio.hvoidmain(){inta,b,c;floataverage;a=87;b=69;c=95;average=(a+b+c)/3;printf(该同学3门课程的平均成绩为:);printf(%f\n,average);}//程序3-1.cpp程序运行结果,如下图所示:以上就是一个顺序结构程序的示例。1、若chara,b;a=getchar();b=getchar();当进行如下输入时,分别求a,b的值。1)、输入:fg回车,则a=f,b=g。2)、输入:f,h回车,则a=f,b=,。3)、输入:f回车回车,则a=f,b=回车。分析:此题考查了getchar()函数的使用,该函数的输入可以是键盘上的任意字符。第五章循环结构1、编写一个由goto和if语句组合使用的循环语句的程序,实现1+2+3……+100。编写的程序如下:#includestdio.hvoidmain(){inti,sum;i=0;sum=0;LP:sum=sum+i;//此时LP为标号i=i+1;if(i=100)gotoLP;//转向LP标号所在的行printf(sun=1+2+3+....+100=%d\n,sum);}//程序5-1.cpp程序运行结果如下图所示:2、如果x=3,求如下程序的输出结果1-2。doprintf(%d\t,x-=2);while(!(--x));分析:根据“直到型循环”的特点,依次判断程序每走一步的变量x的值。令注:可以编写如下程序验证题目:#includestdio.hvoidmain(){intx=3;doprintf(%d\t,x-=2);while(!(--x));}//5-2.cpp程序运行的结果如下图所示:第九章指针1、阅读如下程序,写出运行结果.voidfun(int*x,int*y){printf(%d%d\n,*x,*y);*x=3;*y=4;}voidmain(){intx=1,y=2;fun(&y,&x);printf(%d%d\n,x,y);}答案:2143可以编写如下程序对题目进行验证。#includestdio.hvoidfun(int*x,int*y){printf(%d%d\n,*x,*y);*x=3;*y=4;}voidmain(){intx=1,y=2;fun(&y,&x);printf(%d%d\n,x,y);}//9-1.cpp程序运行结果,如下图所示:2、阅读如下程序,写出运行结果.voidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}voidmain(){inta,b;int*p1=&a,*p2=&b;a=1;b=2;swap(p1,p2);printf(%d%d\n,*p1,*p2);}//9-2.cpp答案:12.可以编写如下程序对题目进行验证。#includestdio.hvoidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}voidmain(){inta,b;int*p1=&a,*p2=&b;a=1;b=2;swap(p1,p2);printf(%d%d\n,*p1,*p2);}程序运行的结果,如下图所示;3、阅读如下程序,写出运行结果.voidswap(int*p1,int*p2){int*temp;temp=p1;p1=p2;p2=temp;}voidmain(){inta,b;int*p1=&a,*p2=&b;a=1,b=2;swap(p1,p2);printf(%d,%d\n,*p1,*p2);}可以编写如下程序对题目进行验证。#includestdio.hvoidswap(int*p1,int*p2){int*temp;temp=p1;p1=p2;p2=temp;}voidmain(){inta,b;int*p1=&a,*p2=&b;a=1,b=2;swap(p1,p2);printf(%d,%d\n,*p1,*p2);}//9-3.cpp程序运行的结果,如下图所示;4、阅读如下程序,分析是否有误?如果有请说明错误原因。#includestdio.hvoidswap(int*p1,int*p2){int*temp;*temp=*p1;*p1=*p2;*p2=*temp;}voidmain(){inta,b;int*p1=&a,*p2=&b;a=1;b=2;swap(p1,p2);printf(%d,%d\n,*p1,*p2);}//9-4.cpp答案:本程序有错误。原因swap()函数中的temp指针变量没有指定其所指向的内容,程序运行时其指向地址是随机的。如果在程序运行期间其所指向的单元为系统空间,则很危险。如下图所示,编译程序时,编译器有警告的提示。第十章构造类型1、若doublea,double*b,doublec[5],char*d[3];则求下列各值。1)、sizeof(a)=8。2)、sizeof(b)=2。3)、sizeof(c)=40。4)、sizeof(d)=6。分析:double类型的变量b占8个字节。任何类型的指针类型变量均占两个字节。令注:可以编写如下程序对题目进行验证。#includestdio.hvoidmain(){doublea,*b,c[5];char*d[3];printf(sizeof(a)=%d\n,sizeof(a));printf(sizeof(b)=%d\n,sizeof(b));printf(sizeof(c)=%d\n,sizeof(c));printf(sizeof(d)=%d\n,sizeof(d));}//10-1.cpp程序运行结果如下图所示:2、编写一个程序实现用三种方法访问结构体中的成员#includestdio.hstructstudent{intnum;charname[20];charsex;floatscore;};voidmain(){inti;structstudentstu[3]={{1000,zhang,'M',60},{1002,li,'W',70},{1003,wang,'W',90}};structstudent*p=stu;printf(输出结构体中数据的方法之一:\n);for(i=0;i3;i++)printf(%d%s%c%f\n,(p+i)-num,(p+i)-name,(p+i)-sex,(p+i)-score);printf(输出结构体中数据的方法之二:\n);for(i=0;i3;i++)printf(%d%s%c%f\n,(*(p+i)).num,(*(p+i)).name,(*(p+i)).sex,(*(p+i)).score);printf(输出结构体中数据的方法之三:\n);for(i=0;i3;i++)printf(%d%s%c%f\n,stu[i].num,stu[i].name,stu[i].sex,stu[i].score);}//10-2.cpp运行结果如下图所示:3、若有如下定义的结构体类型变量,求sizeof(a)=16,sizeof(a.share)=4。structdata{intday;intmouth;intyear;union{intshar1;floatshare2;}share;}a;分析:共用体变量所占的字节为其中占字节数最多的成员所占的字节。结构体变量所占的字节为其中所有成员所占的字节数之和。令注:可以编写如下程序对题目进行验证。#includestdio.hstructdata{intday;intmouth;intyear;union{intshar1;floatshare2;}share;}a;voidmain(){printf(%d%d\n,sizeof(a),sizeof(a.share));}//10-3.cpp程序运行结果如下图所示:4、求如下程序的运行结果0。#includestdio.hunionmyun{struct{intx,y,z;}u;intk;}a;voidmain()
本文标题:c语言考研练习习题
链接地址:https://www.777doc.com/doc-7176617 .html