当前位置:文档之家› C语言程序设计基础测试题-答案

C语言程序设计基础测试题-答案

C语言程序设计基础测试题一、单选[1] 下面叙述中错误的是____。

A. 复合语句中定义的函数只在该复合语句中有效B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式C. 形式参数也是局部变量D. 主函数中定义的变量在整个程序中都是有效的[2] 下列说法中正确的是____。

A.带参数的宏定义中的参数是没有类型的B.宏展开将占用程序的运行时间C.宏定义命令是C语言中的一种特殊语句D.使用#include命令包含的头文件必须以“.h"为后缀[3] 若函数的形参为一维数组,则下列说法中正确的是____。

A.调用函数时的对应实参必为数组名B.形参数组可以不指定大小C.形参数组的元素个数必须等于实参数组的元素个数D.形参数组的元素个数必须多于实参数组的元素个数[4] 系统的标准输出设备是____。

A.键盘B.硬盘C.内存D.显示器[5] 下面叙述中正确的是____。

A.全局变量在定义它的文件中的任何地方都是有效的B.全局变量在程序的全部执行过程中一直占用内存单元C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式D. 说明函数时必须明确其参数类型和返回类型[6] C程序的基本结构单位是____。

A.文件B.语句C.函数D.表达式[7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。

A.aa数组元素的值分别是"abcd"和"ABCD"B.aa是指针变量,它指向含有两个数组元素的字符型一维数组C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D.aa数组的两个元素中各自存放了字符'a'和'A'的地址[8] 任何一个C语言的可执行程序都是从____开始执行的。

A.程序中的第一个函数B.main( )函数的入口处C.程序中的第一条语句[9] 操作系统的作用是()。

A.把源程序翻译成目标程序B.进行数据处理C.控制和管理系统资源的使用D.实现软硬件的转换[10] 下面几种说法中哪个是正确的?_____________A. else语句需与它前面的if语句配对使用;B. else语句需与前面最接近它的if语句配对使用;C. else语句需与前面最接近它的,且没有和其它else语句配对的if语句配对;D. 以上都正确。

[11] 设整型变量a为5,使b不为2的表达式是___________A. b=a/2B. b=6-(--a)C. b=a%2D.b=a>3?2:1[12] 下列对数组操作不正确的语句是________A. int a[5];B.char b[ ]={‘h’,’e’,’l’,’l’,’o’};C. int a[ ]={2,3,4,5};D. char b[3 ][ ]={1,2,3,4,5,6};[13] 设A为存放短整型的一维数组,如果A的首地址为P,那么A 中第I个元素的地址为A. P+I*2B. P+(I-1)*2C. P+(I-1)D. P+I[14] 十进制数100转换成二进制数是A. 0110 0100B. 0110 0101C. 0110 0110D. 01101000[15] Windows中,对文件和文件夹的管理是通过来实现的。

A. 对话框B. 剪贴板C. 资源管理器或我的电脑D. 控制面板【答案】DABDB CDBCC CDDAC二、判断1. 微型计算机的核心部件是微处理器。

( 对)2. 在微机性能指标中,CPU的主频越高,其运算速度越快。

( 对)3. 组成微机系统总线的是译码、计数和控制总线。

( 错)微型计算机三总线:数据总线(DB)、地址总线(AB)、控制总线(CB)4. 以二进制形式输出文件,则文件的内容与内存中完全一致( 对)5. 定义:int a=123;若以ASCII文件的形式存放,则a将在磁盘上占三个字节( 对)6. C语言中,switch后的括号内表达式的值可以是整型,字符型,枚举型( 对)7. 函数的形式参数,在函数未被调用时就不被分配存储空间( 对)8. 若函数的定义出现在主调函数之前,则可以不必再加说明( 对)9. 若一个函数没有return语句,则什么值也不会返回( 错)10. 一般来说,函数的形参和实参的类型应该一致( 对)三、填空1.为解决某一特定问题而设计的指令序列称为程序2.处于执行状态的进程,因时间片用完就转换为就绪状态3.计算机硬件的五大基本构包括:运算器、控制器、存储器、输入设备和输出设备4.计算机所能辨认的最小信息单位是位5.计算机能直接识别和执行的语言是机器语言6. 编译程序是将计算机高级语言源程序翻译成目标程序的系统软件7.每条指令都必须具有的、能与其他指令相区别的、规定该指令执行功能的部分称为操作码8.目前Windows系统是多用户多任务操作系统。

9.操作系统的主要作用是管理系统资源,这些资源包括硬件和软件10.计算机可以处理信息有数值、文字、语言、图像等11.C语言从源程序的书写到上机运行输出结果要经过编辑、编译、连接、执行四个步骤。

12.C语言的表达式与语句的区别在于“表达式”未尾加“;”号就成“语句”。

13.C语句没有(有、没有)输入、输出语句。

14.结构化程序的编写有顺序、分支、循环三种程序结构。

15.C语言中,变量的存储类别共有四种,即时自动型、外部型、静态型和寄存器型。

表达式10/3*9%10/2的值是3 。

16.设有“int x=2,y”说明,则逗号表达式“y=x+5,x+y”的值是9 。

17.设有“int x=1”,则“x>0?2*x+1:0”表达式的值是3 。

18.变量Y满足以下两条件中的任意一个:①能被4整除,但不能被100整除;②能被400整除。

请用逻辑表达式表示所给条件。

y%4==0 && y%100!=0 || y%400==019.逻辑运算符“&&、||、!”中是短路运算符号是&&、||四、读程序1.阅读函数,根据函数完成的主要功能,补充、完善主函数。

float av(float a[],int n){int i;float s;for (i=0,s=0;i<n;i++) s=s+a[i];return (s/n); }main(){float a[10];int i;for (i=0;i<10; i++)scanf("%f", &a[i] );printf("%f",av(a,10)); }2.写出下列程序的输出结果:main(){int x,y,z;x=y=z=-1;printf("x=%d\ty=%d\tz=%d\n",x,y,z);++y&&++x||++z;printf("x=%d\ty=%d\tz=%d\n",x,y,z);x=y=z=-1;++x||y++&&z;printf("x=%d\ty=%d\tz=%d\n",x,y,z);}【答案】x=-1 y=-1 z=-1x=-1 y=0 z=0x=0 y=0 z=-13.下面程序的输出结果是什么?#include "stdio.h"main(){ int x=3;switch(x){ case 1:case 2:printf("x<3\n");case 3:printf("x=3\n");case 4:case 5:printf("x>3\n");default:printf("x unknow\n"); } }【答案】x=3x>3x unknow4.根据源程序,写出相应的数学表达式#include “stdio.h”main(){int x,y;scanf(“%d”,&x);if (x<0) y= -1;else if (x= = 0)y=0;else y=1;printf (“x=%d,y=%d \n”,x,y); }【答案】⎪⎩⎪⎨⎧>=<-=010001x x x y5.分析下列程序所完成的功能。

main(){int a,b,c,*pa=&a,*pb=&b,*pc=&c,*p;scanf("%d,%d,%d",pa,pb,pc);if (*pa>*pb)p=pa,pa=pb,pb=p;if (*pa>*pc)p=pa,pa=pc,pc=p;if (*pb>*pc)p=pb,pb=pc,pc=p;printf("%d<=%d<=%d",*pa,*pb,*pc); }【答案】从小到大排序五、编程1.输入一单精度二维数组a[4][3],计算该二维数组中的最大元素的值及其所在位置(行、列),并输出计算结果。

源程序:#include "stdio.h"void main(){float a[4][3];float max;int row,col;int i,j;for(i=0;i<4;i++)for(j=0;j<3;j++)scanf("%f",&a[i][j]);max=a[0][0];for(i=0;i<4;i++){for(j=0;j<3;j++)if(a[i][j]>max){max=a[i][j];row=i;col=j;}}printf("该二维数组中的最大元素是a[%d][%d]=%f\n",row,col,max);}运行结果:2.N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入N 个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。

源程序:#include"stdio.h"#define N 2struct student{char num[10];char sex;char name[20];int score[4];}s[N];void main(){int i,j,t;float ave[N]={0};float max_ave=0;for(i=0;i<N;i++){printf("输入第%d位学生的信息\n",i+1);printf("学号:");scanf("%s",&s[i].num);//&s[i].num等价于&(s+i)->num,下同printf("性别:");scanf("\n%c",&s[i].sex);//注意其中的"\n%c",不加\n,性别内容都是空格printf("姓名:");scanf("%s",&s[i].name);printf("四门课的成绩:");scanf("%d%d%d%d",&s[i].score[0],&s[i].score[1],&s[i].score[2],&s[i].score[3]);}for(i=0;i<N;i++){for(j=0;j<4;j++)ave[i]+=s[i].score[j];ave[i]=ave[i]/4;if(ave[i]>max_ave){max_ave=ave[i];t=i;}}printf("总平均成绩最高的学生\n学号:%s\t性别:%c\t\t姓名:%s\t平均成绩:%f\n ",s[t].num,s[t].sex,s[t].name,max_ave);}运行结果:——邹东雪2011-1-1 (资料素材和资料部分来自网络,供参考。

相关主题