C语言模拟试题
- 格式:doc
- 大小:68.00 KB
- 文档页数:15
⼀、选择题((1)~(10)每⼩题2分,(11)~(50)每⼩题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有⼀个选项是正确的,请将正确选项涂写 在答题卡相应位置上,答在试卷上不得分。
(1)算法⼀般都可以⽤________控制结构组合⽽成。
A)循环、分⽀、递归 B)顺序、循环、嵌套 C)循环、递归、选择 D)顺序、选择、循环 答案:D 评析:算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执⾏顺序,也直接反映了算法的设计是否符合结构化原则。
⼀个算法⼀般都可以⽤顺序、选择、循环三种基本控制结构组合⽽成。
(2)数据的存储结构是指________。
A)数据所占的存储空间量 B)数据的逻辑结构在计算机中的表⽰ C)数据在计算机中的顺序存储⽅式 D)存储在外存中的数据 答案:B 评析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。
(3)设有下列⼆叉树: 对此⼆叉树中序遍历的结果为________。
A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA 答案:B 评析:中序遍历是指⾸先遍历左⼦树,然后访问根结点,最后遍历右⼦树;并且在遍历左、右⼦树时,仍然先遍历左⼦树,然后访问根结点,最后遍历右⼦树的⼀种⼆叉树遍历算法。
(4)在⾯向对象⽅法中,⼀个对象请求另⼀对象为其服务的⽅式是通过发送________。
A)调⽤语句 B)命令 C)⼝令 D)消息 答案:D 评析:⾯向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要⼀个机制协助进⾏,这样的机制称为消息。
消息是⼀个实例与另⼀个实例之间传递的信息,它请求对象执⾏某⼀处理或回答某⼀要求的信息,它统⼀了数据流和控制流。
(5)检查软件产品是否符合需求定义的过程称为________。
A)确认测试 B)集成测试 C)验证测试 D)验收测试 答案:A 评析:确认测试的任务是验证软件的功能和性能及其他特性是否满⾜了需求规格说明中的确定的各种需求,以及软件配置是否完全、正确。
C语言程序设计模拟试题11一、填空题(每空1分,共10分)1. C语言程序的三种基本结构是顺序结构,选择结构,循环结构。
2. 有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]=0,a[2][1]=6。
3. 设x,y,z均为int 型变量,C语言描述”x或y中有一个小于z”的表达式是x<z||y<z。
4. 若for循环用以下形式表示:for(表达式1;表达式2;表达式3) 循环体语句则执行语句for(i=0;i<3;i++) printf(“*”);时,表达式1执行1次,表达式3执行3次。
5. 在C语言中,十进制数30的八进制表示形式是036 ,十六进制表示形式是0x1e 。
二、阅读填空(每空2分,共12分)。
1.以下函数求x的y次方。
duble fun(double x,int y){int i;double z=1.0;for(i=1;i <=y ;i++)z=z*x ;return(z);}2.下列程序段是从键盘输入的字符中统计数字字符的个数,用换行结束循环。
int n=0; char c;c=getchar();while(c!=‘\n’){ if(c>=‘0’&& c<=‘9’) n++;c=getchar(); }3.下面程序中可求出矩阵a的两条对角线上的元素之和。
#include“stdio.h”main(){int a[3][3]={1,3,6,7,9,11,14,15,17}, sum1=0,sum2=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j) sum1=sum1+a[i][j];for(i=0;i<3;i++)for(j=2;j>=0;j--)if((i+j)==2) sum2=sum2+a[i][j];printf(“sum1=%d,sum2=%d\n”,sum1,sum2);}三、单项选择题(每小题2分,共78分)1.一个C语言的执行是从 A 。
精品文档以下程序的输出结果是【38】。
# include<stdio.h># define FUDGE(y) 2.84+y * H& O- |+ J7 K# define PR(a) printf(%d,(int)(a)) N/ L; u- b7 ~2 e# define PRINT1(a) PR(a);putchar('\n') s G/ V; K/ b main(){int x=2; PRINT1(FUDGE(5)*x); } 5 d0 r9 i) l* o【38】A) 11 B) 12 C) 13 D) 15 以下程序的输出结果是【39】。
# include<stdio.h> ! t4 W0 n1 S' U: \/ a main(){ int i=1,j=3; . y$ d8 u2 ^$ d @( N6 D printf(%d,i + + );{ int i=0; i+=j*2; printf(%d,%d,i,j); } 0 m( c( T/ T+ ^) E4 K `) v printf(%d,%d\n,i,j); }【39】A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3以下程序的输出结果是【40】。
5 m9 t p4 j+ n* ]- Z. s. C# include <stdio.h> ! T% B1 z! {1 k- _! S$ Y$ a3 g& w main() + D$ D* y |- e0 `- a- b{ int k=4,m=1,p; ; t5 {( ~1 G g* N3 L$ [9 w. x p=func(k,m); printf(%d,,p); p=func(k,m); printf(%d\n,p);} $ B( Z3 r5 ^* @5 C. ^) W func(a,b)int a,b; 7 J3 O, w- f' M6 |! t* N5 L0 Z9 t{ static int m=0,i=2; & {* n; N% g; Y; ]2 ^( K i+=m+1; m=i+a+b; return(m); } ) G( v+ J) z( O1 u【40】A) 8,17 B) 8,16 C) 8,20 D) 8,8 * Q& r) D4 `1 T m8 W+ h; _设有以下语句:! F/ p% T; V9 g( H' M1 j+ J char str[4][12]={aaa,bbb,ccccc,dddddd}, # d- q# S; \2 R3 `, v, A*strp[4]; int i; ! D2 Z1 D, h+ Z0 v3 o( E+ H: @for(i=0;i<4;i + + )strp[i]=str[i];【41】不是对字符串的正确引用,其中0≤k<4。
xx计算机三级C语言模拟试题1.以下表达中正确的选项是( )。
A.为了建立一个关系,首先要构造数据的逻辑关系B.表示关系的二维表中各元组的每一个分量还可以分成假设干数据项C.一个关系的属性名表称为关系模式D.一个关系可以包括多个二维表2.以下表达中正确的选项是( )。
A.循环队列是队列的一种链式存储结构B.循环队列是队列的一种顺序存储结构C.循环队列是非线性结构D.循环队列是一种逻辑结构3.一棵二叉树共有25个结点,其中5个是叶子结点,那么度为l的结点数为( )。
A.16B.10C.6D.44.在以下模式中,能够给出数据库物理存储与物理存取方法的是( )。
A.外模式B.内模式C.概念模式D.逻辑模式5.在满足实体完整性约束的条件下( )。
A.一个关系中应该有一个或多个候选关键字B.一个关系中只能有一个候选关键字C.一个关系中必须有多个候选关键字D.一个关系中可以没有候选关键字6.有三个关系R、S和T如下:xx年《》上机测试题(7)那么由关系R和S得到关系T的操作是( )。
A.自然连接B.并C.交D.差7.软件生命周期中的活动不包括( )。
A.软件维护B.市场调研C.软件测试D.需求分析8.下面不属于需求分析阶段任务的是( )。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试方案D.需求规格说明书评审9.在黑盒测试方法中,设计测试用例的主要根据是( )。
A.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图10.在软件设计中不使用的工具是( )。
A.系统结构图B.程序流程图C.PAD图D.数据流图(DFD图)11.针对简单程序设计,以下表达的实施步骤顺序正确的选项是( )。
A.确定算法和数据结构、编码、调试、文档B.编码、确定算法和数据结构、调试、文档C.文档、确定算法和数据结构、编码、调试D.确定算法和数据结构、调试、编码、文档12.关于C语言中数的表示,以下表达中正确的选项是( )。
高级语言程序设计试题五》、单项选择题(每题 1 分,共20 分)1字符串“ abcd\tef\Og”的长度是()A 、9 B、7 C、6D、4 2.下列描述中不正确的是A 、字符型数组中可以存放字符串B、可以对字符型数组进行整体输入、输出C、可以对整型数组进行整体输入、输出D、不能在赋值语句中通过赋值运算符“二“对字符型数组进行整体赋值3. 设int x=1,y=1;表达式(!x||y--)的值是A、OB、1C、24. 以下循环体的执行次数是A、3B、2C、1main(){ int i,j;for(i=O,j=1;i<=j+1;i+=2,j--)printf(}5. 以下程序的输出结果是main(){ int x=1O,y=1O,i;for(i=O;x>8;y=++i)printf( “ %d %d” ,x--,y)}A、1O 1 9 2B、9 8 76、已知:char str1[20]= ” abcdd' ,str2[20]= ” xyz”;则执行语句:printf ( “%d” , strlen ( strcpy ( str1,str2 ) ) );输出结果是()A 、9B 、3C 、5D 、87、已知int a[10];则对a数组元素的正确引用是()A、a[10]B、a[3.5]C、a(5) D、a[10-10] 8、若已有定义char str[7];要将键盘输入的字符串“a pea r “赋给str,应使用A、gets(str);B、scanf(“%s” ,str);C、str=” a pear” ; D、getchar(str);9. 若定义函数int *func1(),则func1的函数返回值是A、整数B、指向函数的指针10. typedef int BIGGY; 的作用是A、建立了一个新的数据类型C、定义了一个长整型变量C、整型数的地址D、以上说法均错B、定义了一个整型变量D、说明了一个新的数据类型标识符D、-1D、O%d\n” ,i);6 C、1O 9 9 O D、1O 1O 9 111. C语言规定,函数的返回值类型是A、由return语句中的表达式类型决定的B、由调用该函数时的主调函数类型决定的C、由系统决定的D、由该函数定义时的类型决定的12、已知函数定义的形式如下:struct data * f(void ){ .............. }则函数 f ( )A 、没有参数,返回值是一个结构B 、有一个参数void, 返回值是一个结构C、没有参数,返回值是一个结构指针D 、有一个参数 void, 返回值是一个结构指针13、对于 int *pa[5] ;的描述,( )是正确的A 、 pa 是一个指向数组的指针,所指向的数组是 5个int 型元素B 、 pa 是一个指向某数组中第5个元素的指针,该指针是int 型变量C 、 p a[5]表示某个数组的第5个元素的值D 、 pa 是一个具有5个元素的指针数组,每一个元素是一个int 型指针 14•在C 语言中,switch 语句后一对圆括号中表达式的类型A 、可以是任何类型C 、可以是整型或字符型 15、 已知: struct{ int i;char c;float a;} test;贝U sizeof(test)的值是()A 、 4B 、 5C 、 616、 在高级语言中对文件操作的一般步骤是(A 、打开文件一操作文件一关闭文件B 、操作文件 —修改文件 — 关闭文件C 、 读写文件一打开文件一关闭文件D 、 读文件一写文件一关闭文件17.有如下程序段int *p,a=10,b=1; p=&a;a=*p+b;执行该程序段后,a 的值是A 、 12B 、 11C 、 1018•执行以下程序段后,s 的值是 int a[]={5,3,7,2,1,5,4,10};int s=0,k; for(k=0;k<8;k+=2) s+=*(a+k);A 、 17B 、 27C 、 1319.以下程序中有语法错误,有关错误原因的正确说法是 main(){ int G=5,k;void par_char(int x,int y);k=par_char(G);}A 、 语句void par_char();有错,不能用void 说明函数的类型B 、 变量名G 不能使用大写字母C 、 函数说明和函数调用语句之间有矛盾D 、 函数名不能使用下划线20.若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));贝在此函数调用语句中实参的个数是A 、 3B 、 4C 、 5D 、 6B 、只能是int 类型 D 、只能是整型或实型D 、 7 D 、编译出错 D 、无定值2 分,共10 分)、多项选择题(下列各题中,有一个或多个正确答案,多选或少选均不得分。
C 语言程序设计A 》模拟考核试题及解答一、选择题1.由C 语言源程序文件编译而成的目标文件的缺省扩展名为( ) 。
A. cppB. exeC. objD. C2. C 语言程序的基本模块为( )。
A. 表达式B. 标识符C. 语句D. 函数3.x>0 || y==5 的相反表达式为( )。
A. x<=0 || y!=5B. x<=0 && y!=5C. x>0 || y!=5D. x>0 && y==54.枚举类型中的每个枚举常量的值都是一个( )。
A. 整数B. 浮点数C. 字符D. 逻辑值5.循环语句“ for(int i=0; i<n; i++) S; ”中循环体S 被执行的次数为( )A. 1B. n-1C. nD. n+16.在下面的while 循环语句中,其循环体被执行的次数为( )。
int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 77.若定义了函数double *function(), 则返回值类型为( )。
A. 实数型B. 实数指针型C. 函数指针型D. 数组型8.若用数组名作为函数调用的实参,传递给形参的是( )。
A. 数组的首地址B. 数组中第一个元素的值C. 数组中全部元素的值D. 数组元素的个数9. 假定a 为一个整型数组名,则元素a[4] 的地址比该数组的首地址大( ) 个字节。
A. 4B. 8C. 16D. 3210. 下列给字符数组赋初值时,正确的是( )。
A. char s1[]="abcdef";B. char s2[4]="abcd";C. char s3[2][3]={"abc","xyz"};D. char s4[4][]={'a','x','s','t'};A. char *p=s;B. char *p=&s;C. char *p;p=*s;D. char *p; p=&s;11.要使p 指向二维整型数组a[10][20] ,p 应定义为()。
二级C语言程序设计模拟试题(一)一、单项选择题。
(每小题1分,共20分)1、一个C语言程序是由(B)组成。
A) 一个函数 B) 一个或若干个函数C) 一个过程 D) 一个过程或若干个过程知识点:C语言程序的结构2、C语言用(D)表示逻辑真值。
A) true B) T C) 整型值0 D) 非0整型值知识点:数据类型3、如果程序中有#include "文件名" 则意味着(A)。
A) 将"文件名"所指的那个文件的全部内容,在此命令行出现的这一点上,插入源程序B) 指定标准输入输出C) 宏定义一个函数D)条件编译说明知识点:编译预处理4、为一个结构体变量分配存储空间时,其所占容量为(B)。
A) 结构体中第一个成员所占容量 B) 结构体中所有成员所占容量C) 结构体中所有成员中所占容量最大者 D) 结构体中最后一个成员所占容量知识点:结构体5、如果int *px,*py;则可用{temp=*px;*px=*py;*py=temp}实现*px和*py的交换。
其中temp应该说明为( A )。
A) int temp B) int &temp C) int **temp D) int *temp知识点:指针6、于合法的c语言长整型常量是(A)。
A) 12L B) 6887273 C) 5E12 D) (long)6887273知识点:数据类型7、下列程序输出正确的是(A)。
main(){ int a=-1,b=1,c;c=(a++<=0)&&!((b--<=0));printf(“%d,%d,%d”,a,b,c);}A) 0,0,1 B) -1,1,1 C) 0,0,0 D) 0,1,0知识点:逻辑运算符8、已知E的ASCII码是69,则执行printf(“%c”,’D’-‘8’+’5’);的结果是(B)。
A) 66 B) A C) B D) E知识点:数据类型与自动转换9、段名访问的方式是(A)A) 结构名.位段名 B) 位段名 C) 结构名 D) *&位段名知识点:位段10、有字符数组a,则正确的输入语句是(C)。
C语言程序设计模拟试题一(含答案)1、下列述叙中正确的是A) 显示器和打印机都是输出设备B) 显示器只能显示字符C) 通常的彩色显示器都有7种颜色D) 打印机只能打印字符和表格2、微型计算机中运算器的主要功能是进行A) 算术运算B) 逻辑运算C) 算术和逻辑运算D) 初等函数运算3、是DOS系统的最外层模块,通常称之为A) 引导程序B) 输入输出系统C) 命令处理系统D) 文件管理系统4、电子邮件是A) 网络信息检索服务B) 通过Web网页发布的公告信息C) 通过网络实时交互的信息传递方式D) 一种利用网络交换信息的非交互式服务5、和十进制数225相等的二进制数是A) 11101110 B) 11111110C) 10000000 D) 111111116、下列叙述中正确的是A) 指令由操作数和操作码两部分组成\B) 常用参数xxMB表示计算机的速度C) 计算机的一个字长总是等于两个字节D) 计算机语言是完成某一任务的指令集7、计算机的内存储器比外存储器A) 价格便宜B) 存储容量大C) 读写速度快D) 读写速度慢8、设当前盘为C盘,执行DOS命令"COPY B:\A.TXT PRN"之后,结果是A) B盘上的A.TXT文件被复制到C盘的PRN文件B) 屏幕上显示B盘上的A.TXT文件内容C) B盘上的A.TXT文件内容在打印机上输出D) B盘上的A.TXT文件被复制到B盘上的PRN文件9、要将当前盘当前目录下的两个文件X1.TXT和B1.TXT连接起来之后存入B盘当前目录下并且命名为Z.TXT,无论B 盘当前目录是什么,完成这件任务可以使用的命令是A) COPY A:X1.TXT+C:B1.TXT Z.TXTB) COPY X1.TXT+C:\\WS\\B1.TXT B:\\Z.TXTC) COPY A:X1.TXT+C:\\WS\\B1.TXTD) COPY X1.TXT+B1.TXT B:Z.TXT10、下列四组DOS命令中,功能等价的一组是A) COPY A:*.* B:与DISKCOPY A: B:B) COPY ABC.TXT+XYZ.TXT 与TYPE XYZ.TXT>>ABC.TXTC) COPY ABC.TXT+XYZ.TXT与COPY XYZ.TXT+ABC.TXTD) TYPE *.FOR>CON与COPY *.FOR CON11、设当前目录为D:\BB,现要把D:\AA目录下首字符是A的文本文件全部删除,应该使用命令A) DEL A*.TXT B) DEL \\AA\\A.TXTC) DEL \\AA\\A*.TXT D) DEL \\AA\\A?.TXT12、在Windows中,启动应用程序的正确方法是A) 用鼠标指向该应用程序图标B) 将该应用程序窗口最小化成图标C) 将该应用程序窗口还原D) 用鼠标双击该应用程序图标13、在Windows中,终止应用程序执行的正确方法是A) 将该应用程序窗口最小化成图标B) 用鼠标双击应用程序窗口右上角的还原按钮C) 用鼠标双击应用程序窗口中的标题栏D) 用鼠标双击应用程序窗口左上角的控制菜单框14、在微机系统中,对输入输出设备进行管理的基本程序模块(BIOS)存放在A) RAM中B) ROM中C) 硬盘中D) 寄存器中15、使计算机病毒传播范围最广的媒介是A) 硬磁盘B) 软磁盘C) 内部存储器D) 互联网16、设有int x=11; 则表达式(x++ * 1/3) 的值是A) 3 B) 4C) 11 D) 1217、下列程序的输出结果是main(){ double d=3.2; int x,y;x=1.2; y=(x+3.8)/5.0;printf("%d \n", d*y);}A) 3 B) 3.2C) 0 D) 3.0718、下列程序执行后的输出结果是(小数点后只写一位)main(){ double d; float f; ling l; int i;i=f=1=d=20/3;printf("%d %ld %f %f \n", i,l,f,d);}A) 6 6 6.0 6.0 B) 6 6 6.7 6.7C) 6 6 6.0 6.7 D) 6 6 6.7 6.019、下列变量定义中合法的是A) short _a=1-.le-1; B) double b=1+5e2.5;C) long do=0xfdaL; D) float 2_and=1-e-3;20、设int x=1, y=1; 表达式(!x||y--)的值是A) 0 B) 1C) 2 D) -121. 与y=(x>0?1:x<0?-1:0);的功能相同的if语句是A) if (x>0) y=1;else if(x<0)y=-1;else y=0;B) if(x)if(x>0)y=1;else if(x<0)y=-1;else y=0;C) y=-1if(x)if(x>0)y=1;else if(x==0)y=0;else y=-1;D) y=0;if(x>=0)if(x>0)y=1;else y=-1;22. 以下循环体的执行次数是main(){ int i,j;for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i);}A) 3 B) 2C) 1 D) 023. 以下叙述正确的是A) do-while语句构成的循环不能用其它语句构成的循环来代替B) do-while语句构成的循环只能用break语句退出C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环D) 用do-while语句构成的循环,在while后的表达式为零时结束循环24. 下列程序执行后的输出结果是main(){ int x='f'; printf("%c \n",'A'+(x-'a'+1)); }A) G B) HC) I D) J25. 执行下面的程序段后,变量k中的值为int k=3, s[2];s[0]=k; k=s[1]*10;A) 不定值B) 33C) 30 D) 1026. 若已定义:int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a,i; 其中0≤i≤9, 则对a数组元素不正确的引用上A} a[p-a] B} *(&a[i])C} p[i] D} a[10]27、下列程序执行后的输出结果是void func(int *a,int b[]){ b[0]=*a+6; }main(){ int a,b[5];a=0; b[0]=3;func(&a,b); printf("%d \n,b[0]);}A) 6 B) 7C) 8 D) 928、下列程序的运行结果是#include <stdio.h>main(){ int a=2,c=5;printf("a=%d,b=%d\n",a,c); }A) a=%2,b=%5 B) a=2,b=5C) a=d, b=d D) a=%d,b=%d29、下列程序执行后的输出结果是main(){ int a[3][3], *p,i;p=&a[0][0];for(i=p; i<9; i++) p[i]=i+1;printf("%d \n",a[1][2]);}A) 3 B) 6C) 9 D) 随机数30、设有数组定义: char array [ ]="China"; 则数组array所占的空间为A) 4个字节B) 5个字节C) 6个字节D) 7个字节31、下列程序的输出结果是int b=2;int func(int *a){ b += *a; return(b);}main(){ int a=2, res=2;res += func(&a);printf("%d \n",res);}A) 4 B) 6C) 8 D) 1032、在以下四组中,每组有两个分别运算的函数,运算结果相同的是main(){ int i, j, m=0, n=0;for(i=p; i<2; i++)for(j=0; j<2; j++)if(j>=i) m=1; n++;printf("%d \n",n);}A) 4 B) 2C) 2 D) 033、下列程序的输出结果是struct abc{ int a, b, c; };main(){ struct abc s[2]={{1,2,3},{4,5,6}}; int t;t=s[0],a+s[1],b;printf("%d \n",t);}A) 5 B) 6C) 7 D) 834、设int b=2;表达式(b>>2)/(b>>1)的值是A) 0 B) 2C) 4 D) 835、在C程序中,可把整型数以二进制形式存放到文件中的函数是A) fprintf函数B) fread函数C) fwrite函数D) fputc函数36、下列程序执行后的输出结果是main(){ char x=0xFFFF; printf("%d \n",x--); } A) -32767 B) FFFEC) -1 D) -3276837、若有定义: float w;int a, b;则合法的switch语句是A) switch(w){ case 1.0: printf("*\\n");case 2.0: printf("**\\n");}B) switch(a);{ case 1 printf("*\\n");case 2 printf("**\\n");}C) switch(b){ case 1: printf("*\\n");default: printf("\\n");case 1+2: printf("**\\n");}D) switch(a+b);{ case 1: printf("*\\n");case 2: printf("**\\n");default: printf("\\n");}38、以下程序段的执行结果是int a, y;a=10; y=0;do{ a+=2; y+=a;printf("a=%d y=%d\n",a,y);if(y>20) break;{ while(a=14);A} a=12 y=12a=14 y=16a=16 y=20a=18 y=24B} a=12 y=12a=16 y=28C} a=12 y=12D} a=12 y=12a=14 y=26a=14 y=4439、若有以下调用语句,则不正确的fun函数的首部是main(){ …int a[50],n;…fun(n, &a[9]);…A} void fun(int m, int x[]) B} void fun(int s, int h[41])C} void fun(int p, int *s) D} void fun(int n, int a)40、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(说明:'\b'是退格符)A) a\\bre\\'hi\\'y\\\\\\bou B) a\\bre\\'hi\\'y\\bouC) re'hi'you D) abre'hi'y\\bou41、请选出正确的程序段A) int *p;scanf("%d",p);…B) int *s, k;*s=100;…C) int *s, k;char *p, c;s=&k;p=&c;*p='a';…D) int *s, k;char *p, e;s=&k;p=&c;s=p;*s=1;42、已知指针p的指向如下图所示,则执行语句*--p;后*p的值是A) 30 B) 20C) 19 D) 2943、设已有定义:char *st="how are you";下列程序段中正确的是A) char a[11], *p; strcpy(p=a+1,&st[4]);B) char a[11]; strcpy(++a, st);C) char a[11];strcpy(a, st);D) char a[], *p;strcpy(p=&a[1],st+2);44、下列程序执行后的输出结果是mai(){ char arr[2][4];strcpy(arr,"you"); strcpy(arr[1],"me");arr[0][3]='&';printf("%s \n",arr);}A) you&ne B) youC) me D) err45、下列程序执行后的输出结果是void func1(int i);void func2(int i);char st[]="hello,friend!";void func1(int i){ printf("%c",st[i]);if(i<3){i+=2;func2(i);}}void func2(int i){ printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){ int i=0; func1(i); printf("\n");}A) hello B) helC) hlo D) hlm46、假定下列程序的可执行文件名为prg.exe,则在该程序所在的子目录下输入命令行: prg hello good<回车>后,程序的输出结果是main()int argc, char *argv[]){int i;if(argc<-0)return;for(i=1;i<argc;i++)printf("%c", *argv[i]);}A) hello good B) hgC) hel D) hellogood47、下列程序执行后的输出结果是#define MA(x) x*(x-1)main(){ int a=1,b=2;printf("%d \n",MA(1+a+b));}A) 6 B) 8C) 10 D) 1248、变量a所占内存字节数是union U{ char st[4];int i;long l;};struct A{ int c;union U u;}a;A) 4 B) 5C) 6 D) 849、执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是main(){char s[100];int c, i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s \n",c,i,s);}A) 123,456,789 B) 1,456,789C) 1,23,456,789 D) 1,23,45650、执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是main(){char s[100];int c, i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s \n",c,i,s); }A) 123,456,789 B) 1,456,789 C) 1,23,456,789 D) 1,23,456答案:ACCDD ACCDBCDDBD ACAABACDAA DABBCBABDA CDBCCCBABC BBCDD。
《C语言程序设计教程实验与练习》(第二版)模拟试题II及答案一、单项选择题(每题2分,30道题,共60分)1.下面的程序将输出:main(){float f;int x=1,y=;f=x/y;printf("f=%,y=%#X", f, y );}= , y=2 = , y=0X2 = , y=0X2 = , y=22.下面的程序将输出:#include ""main(){int len;char str[]="a\b\04235\0";len=strlen(str);printf("%d",len);}A. 10B. 5C. 6D. 73.下面的程序将输出: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! ");}}is one. is two. way! is 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]);}3 4 1 0 3 4 1 0 3 4 0 0 3 4 0 05.已知有下面两个变量,将数组a的第2个单元赋值为1的C语句是:int a[10];int *p;p=a;[2]=1; [1]=1; C.*(p++)=1; D.*(++a)=1;6.下面程序将输出:void add(int a){a++;return;}main(){int k;k=;add(k);printf("%d",k);}A. B. C. 3 D. 47.下列循环结构中,不是..无限循环的是: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列的正确引用是:[2][2] [5] [5] [1][1]9.已知:int (*p)[20]; 且p的值是0X5000,请问表达式p+2的值是多少?A. 0X5050B. 0X5002C. 0X5004D. 0X504010.若有说明int a[2][2];那么,下面正确的C赋值语句是:=2; [1]=2; [1]={1,2}; [0][1]=a[1][0];11.设x为int型变量,则执行以下语句后,x的值为x=10; x+=x-=x-x;A.10 B.20 C.40 D.3012.已知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 和_____的值相同.A.(a+6) B.*(&a[0]+6) C.a[2][2] D.*(&a[0][0]+6) 15.设有以下说明和定义:typedef union { long i; int k[4]; char c; }DATE;struct date { int cat; DATE cow; double dog; } too;DATE max;则下列语句的执行结果是printf ("%d",sizeof (struct date ) +sizeof(max));A.26 B.30 C.18 D.816.设有如下定义:int *(*ptr)();则以下叙述中正确的是A.ptr是指向一维组数的指针变量B.ptr是指向int型数据的指针变量C.ptr是指向函数的指针,该函数返回一个int型数据D.ptr是指向函数的指针,该函数的返回值是指向int型数据的指针17.若二维数组a 有m列,则在a[i][j]之前的元素个数为______A.j*m+i B.i*m+j C. i*m+j-1 D.i*m+j+118.以下程序运行后,输出结果是A.13 B.51 C.11 D.53int d=1;fun (int p){int d=5;p=d;printf("%d",p);}main(){int a=3;fun(a);d=a;printf("%d\n",d);}19.以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为A.4 B.7 C.6 D.5#include<>#include<>func(char str[ ] ){ int num =0;while(*(str+num)!='\0') num++;return(num);}main( ){char str[10],*p=str;gets(p); printf("%d\n",func(p));}20.执行以下程序段后,m的值为int a[2][3]={ {1,2,3},{4,5,6} };int m,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));A.15 B.14 C.13 D.1221.已知定义了两个结构体变量,下面是正确的语句是:struct {int x; char name[10]; float mark;} S1,S2;A. S1={5, ”yang”, };B. S1=S2;C. = ; = ; =;D. strcpy(S1,S2);22.下面这段程序运行的结果是:int a=0x4145;char *p;p=(char *)&a;*p+=1;printf(“%X” , *p);A. 46B. 4223.下面这段程序运行的结果是:char str[ ]=”%#X”;int a=50;printf(str,a++);D.有语法错24.下面哪个语句是函数的原型声明A. int (*f)(int a , int b);B. int f(int a , 5);C. int f(int a , int b);D. int f(int a=5, int b=6);25.已知int a=0XF11F , b; 执行完下面的操作后,a的值是多少?b=(a&0xFF00)>>4;A. 0X0FF1B. 0XF11F D. 0XFFF126.有以下程序:int a=2;int f(int *a){return (*a)++;}main( ){ int s=0;{ int a=5;s+=f(&a);}s+=f(&a);printf("%d\n",s);}执行后输出结果是。
C语言自学考试模拟试题及答案一、单项选择题1。
各种基本数据类型的存贮空间正确的长度排列为_____C_____.A.Char〈long<int〈float〈double B。
Double〈float〈long〈int<charC.Char<int〈long<float〈doubleD.Float〈int<long<char〈double2。
下面的变量说明中______C_______是正确的。
A。
Char:a,b,c; B。
Char a;b;c;C。
Char a,b,c; D。
Char a,b,c3。
main(){int n;( n=6*4,n+6),n*2;printf(“n=%d\n”,n);}此程序的输出结果是______B________。
A。
30 B. 24 C. 60 D. 484。
若有如下定义,则___C_______和_______D__是对数组元素的正确的引用。
int a[10] ,*p ;p=a ;A。
*&a[10] B. a[11]C。
*(p+2) D. *p5.设整型变量n的值为2,执行语句“n+=n-=n*n;"后,n的值是___C_______A。
0 B。
4 C。
— 4 D. 26.表达式y=(13〉12?15:6〉7?8:9)的值为____C________ 。
A 9B 8C 15 D. 17.若x=5,y=3 则y*=x+5; y的值为___D____________。
A。
10 B. 20 C。
15 D. 308。
C语言的输入与输出操作是由______C______完成的。
A.输入语句B.输出语句C.输入与输出函数D.输入与输出语句9。
语句 for(k=0;k〈5;++k){if(k= = 3) continue;printf(“%d”,k);}的输出结果为______B_____.A。
012 B. 0124 C. 01234 D。
1 / 15 (1)一:选择题(本题共 15 小题,满分 30 分)
(1).以下叙述正确的是B A)C语言程序是由过程和函数组成的 B)C语言函数可以嵌套调用,例如:fun(fun(x)) C)C语言函数不可以单独编译 D)C语言中除了main函数,其他函数不可作为单独文件形式存在 (2)以下C语言用户标识符中,不合法的是D A)_1 B)AaBc C)a_b D)a—b (3)若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是C A)a=a++,i++; B)i=(a+k)<=(i+k); C)i=a%11; D)i=!a; (4)以下程序的输出结果是(B)。 main() { int x=2, y=-1, z=2; if (xif (y<0) z=0; else z=z+1; printf(“%d\n”, z); } A) 3 B) 2 C) 1 D) 0 (5).设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是(C ) A.9,19 B.9,20 C.10,19 D.10,20 (6)有以下程序 #include "stdio.h" main() {int i,j,m=1; for(i=1;i<3;i++) {for(j=3;j>0;j--) {if((i*j)>3)break; m*=i*j; } } printf("m=%d\n",m); } 程序运行后的输出结果是A A)m=6 B)m=2 C)m=4 D)m=5 2 / 15
(7)有以下程序D #include "stdio.h" main() {int a=1;int b=2; for(;a<8;a++) {b+=a;a+=2;} printf("%d,%d\n",a,b); } 程序运行后的输出结果是 A)9,18 B)8,11 C)7,11 D)10,14 (8)以下关于return语句的叙述中正确的是b A)一个自定义函数中必须有一条return语句 B)一个自定义函数中可以根据不同情况设置多条return语句 C)定义成void类型的函数中可以有带返回值的return语句 D)没有return语句的自定义函数在执行结束时不能返回到调用处 (9)下列选项中,能正确定义数组的语句是D A)int num[0..2008]; B)int num[]; C)int N=2008; int num[N]; D)#define N 2008 int num[N]; (10).有以下程序段 int a[10]={1,2,3,4,5,6,7,8,9,10},*p,b; p=&a[3]; b=p[5]; b中的值是(D) A. 5 B. 6 C. 8 D. 9 (11)有以下程序 #include"stdio.h" main() {int a[5]={1,2,3,4,5},b[5]={0,2,1,3,0},i,s=0; for(i=0;i<5;i++) s=s+a[b[i]]; printf("%d\n", s); } 程序运行后的输出结果是c A)6 B)10 C)11 D)15 (12)有以下程序 #include "stdio.h" #define SUB(a) (a)-(a) main() 3 / 15
{ int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf("%d\n",d); } 程序运行后的输出结果是C A)0 B)-12 C)-20 D)10 (13)有以下程序 #include "stdio.h" main() { int a=2,b=2,c=2; printf("%d\n",a/b&c); } 程序运行后的输出结果是a A)0 B)1 C)2 D)3 (14)下面程序段的运行结果是(A) #include main() { int a=1;int b=2;int c=2;int t; while(a{ t= a;a= b; b=t; c--; } printf("%d,%d,%d",a,b,c); } A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1 (15)有以下程序 #include "stdio.h" main() { int c=0,k; for(k=1;k<3;k++) switch(k) { default:c+=k; case 2:c++;break; case 4:c+=2;break; } printf("%d\n",c); } 程序运行后的输出结果是 A A)3 B)5 C)7 4 / 15
D)9 二 填空题(本题共 4小题,满分 20分)
1.(4分)以下程序运行结果是: X=8 #include main() { int i,j,X=0; for(i=0;i<2;i++) { X++; for(j=0;j<3;j++) { if(j%2) continue; X++; } X++; } printf("X=%d\n",X); }
2.(4分)以下程序运行结果是: x = 10 0 1 2 3 #include void fun1(int x) { x=20; } void fun2(int b[4]) { int j; for(j=0; j<4; j++) { b[j]=j; } } main() { int x = 10; int a[4] = {1,2,3,4}, k; fun1(x); printf("x = %d\n", x); 5 / 15
fun2(a); for(k=0; k<4; k++) { printf("%d\n", a[k]); } }
3.(4分)以下程序运行时输入:123456789↙
则程序运行结果是:66 #include main() { int x, y; scanf("%2d%*4s%2d", &x, &y); printf("%d", y-x); }
4.(8分)以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整
数5时(注意:n不得大于10),程序运行结果如下: ABCDE FGHI JKL MN O
请填空完成该程序。 #include int main() { int i,j,n;char ch='A'; scanf("%d",&n); if(n<11) {for(i=1;i<=n;i++) {for(j=1;j<=n-i+1;j++) {printf("%2c",ch); ch++; } printf("\n"); } } else printf("n is too large!\n"); printf("\n"); return 0;} 三:判断题(本题共 10 小题,满分 20分) 6 / 15
1. break是结束本次循环,而continue是结束所有的循环 × 2.在C语言中,变量不区分大小写 × 3.不同的函数中可以使用相同的变量名。(√) 4.形式参数是局部变量。( √ ) 5.若用数组名作为函数的实参,传递给形参的是数组第一个元素的值。( × ) 6. c语言是低级语言 × 7. c语言中,每个函数都必须要有一个且只有一个main函数 × 8. C语言中,整形常数表示的方法有3种 √ 9. 对于开辟一个静态变量,我们没有必要对它进行初始化 × 10.假定x和y为double型,则表达式x=2,y=x+3/2的值是3 × 四(本题共 2小题,满分 30 分)
编程题
1. 规定一个工人工作时间每个月160小时,每小时工资为5元,如果加班的话,每小时增加4元,请编程计算并打印此工人一个月的工资,要求由键盘输入工作时间(14分)。 参考答案: //2分 包括标识符命名、缩进等代码风格 #include main() {
int t,salary; //2分 printf("Please input the time:\n"); scanf("%d",&t); //2分 if((t<0) ||(t> 744)) //1分一个月超过31天每天24小时,考虑到最大最小范围判断,而且合理即可 { printf("Error, The time you entered is beyond scope!\n"); return; }
if(t<=160) //2分 if else结构正确
salary=t*5; //2分 else salary=160*5+(t-160)*9; //2分
printf("The salary is:%d\n",salary); //2分 }