《程序设计基础》答案 (2)
《程序设计基础》习题一答案
一、单项选择题(本大题共20小题,每小题2分,共40分)
1.int a[10];合法的数组元素的最小下标值为()。
A:10
B:9
C:1
D:0
答案:D
2.以下运算符中优先级最低的是()。
A:&&
B:&
C:||
D:|
答案:C
3.若使用一维数组名作函数实参,则以下正确的说法是()。
A:必须在主调函数中说明此数组的大小
B:实参数组类型与形参数组类型可以不匹配
C:在被调用函数中,不需要考虑形参数组的大小
D:实参数组名与形参数组名必须一致
答案:A
4.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer
代表的是()。
A:一个整数,代表要读入的数据项总数
B:一个文件指针,指向要读的文件
C:一个指针,指向要读入数据的存放地址
D:一个存储区,存放要读的数据项
答案:C
5.对以下说明语句int a[10]={6,7,8,9,10}; 的正确理解是()。
A:将5个初值依次赋给a[1]至a[5]
B:将5个初值依次赋给a[0]至a[4]
C:将5个初值依次赋给a[6]至a[10]
D:因为数组长度与初值的个数不相同,所以此语句不正确答案:B
6.下列程序的输出结果是()。
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:a=1,b=0
B:a=2,b=1
C:a=1,b=1
D:a=2,b=2
答案:B
7.下列程序的输出结果为()。
main()
{int m=7,n=4;
float a=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%f\n",x);
}
A:27.000000
B:27.500000
C:28.000000
D:28.500000
答案:A
8.若k为int型变量,则以下程序段的执行结果是()。
k=-8567; printf("|%06D|\n",k);
A:格式描述符不合法,输出无定值
B:输出为|%06D|
C:输出为|0-8567|
D:输出为|-8567|
答案:B
9.下列程序段的输出结果为()。
int x=3,y=2;
printf("%d",(x-=y,x*=y+8/5));
A:1
B:7
C:3
D:5
答案:C
10.char a[]="This is a program.";输出前5个字符的语句是()。A:printf("%.5s",a);
B:puts(a);
C:printf("%s",a);
D:a[5*2]=0;puts(a);
答案:A
11.下列程序的输出结果是()。
main()
{char c1=97,c2=98;
printf("%d %c",c1,c2);
}
A:97 98
B:97 b
C:a 98
D:a b
答案:B
12.以下选项中合法的实型常数是()。
A:5E2.0
B:E-3
C:.2E0
D:1.3E
答案:C
13.C语言中的文件类型只有()。
A:索引文件和文本文件两种
B:ASCII文件和二进制文件两种
C:文本文件一种
D:二进制文件一种
答案:B
14.以下叙述不正确的是()。
A:一个C源程序可由一个或多个函数组成
B:一个C源程序必须包含一个main函数
C:C程序的基本组成单位是函数
D:在C程序中,注释说明只能位于一条语句的后面答案:D
15.以下运算符中,优先级最高的运算符是()。A:||
B:%
C:!
D:==
16.执行以下程序段后,输出结果和a的值是()。
int a=10;
printf("%d",a++);
A:10 和10
B:10 和11
C:11 和10
D:11 和11
答案:B
17.能正确表示逻辑关系:"a≥10或a≤0"的C语言表达式是()。
A:a>=10 or a<=0
B:a>=0|a<=10
C:a>=10&&a<=0
D:a>=10‖a<=0
答案:D
18.以下叙述中错误的是()。
A:二进制文件打开后可以先读文件的末尾,而顺序文件不可以
B:在程序结束时,应当用fclose函数关闭已打开的文件
C:在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D:不可以用FILE定义指向二进制文件的文件指针
答案:D
19.下列程序段的输出结果为()。
float k=0.8567;
printf("%06.1d%%",k*100);
A:0085.6%%
B:0085.7%
C:0085.6%
D:.857
20.若有int *p=(int *)malloc(sizeof(int));则向内存申请到内存
空间存入整数123的语句为()。
A:scanf("%d",p);
B:scanf("%d",&p);
C:scanf("%d",*p);
D:scanf("%d",**p);
答案:A
21.经过下列的语句int j,a[10],*p;定义后,下列语句中合法的是()。A:p=p+2;
B:p=a[5];
C:p=a[2]+2;
D:p=&(j+2);
答案:A
22.以下对二维数组a的正确说明是()。
A:int a[3][]
B:float a(3,4)
C:double a[1][4]
D:float a(3)(4)
答案:C
23.经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在
微机上的值分别为()。
char x=65;
float y=7.3;
int a=100;
double b=4.5;
A:2,2,2,4
B:1,2,2,4
C:1,4,2,8
答案:C
24.以下叙述中不正确的是()。
A:一个好的程序应该有详尽的注释
B:在C程序中,赋值运算符的优先级最低
C:在C程序中,j++;是一条赋值语句
D:C程序中的#include和#define均不是C语句
答案:B
25.应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。A:fclose()
B:close()
C:fread()
D:fwrite
答案:A
26.static struct {int a1;float a2;char a3;}a[10]={1,3.5,'A'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存储方式,其中被初始化的下标变量是()。
A:a[1]
B:a[-1]
C:a[0]
D:a[10]
答案:C
27.函数的形式参数隐含的存储类型说明是()。
A:extern
B:static
C:register
D:auto
答案:D
28.可将C源程序存在磁盘上,还可将数据按数据类型分别以什么的
形式存在磁盘上()。
A:内存
B:缓冲区
C:文件
D:寄存器
答案:C
29.若用数组名作为函数的实参,传递给形参的是()。
A:数组的首地址
B:数组第一个元素的值
C:数组中全部元素的值
D:数组元素的个数
答案:A
30.double x;scanf("%lf",&x);不可以赋值给x变量的常量是()。
A:123
B:100000
C:A'
D:"abc"
答案:D
31.以下的选择中,正确的赋值语句是()。
A:a=1,b=2
B:j++
C:a=b=5;
D:y=int(x)
答案:C
32.要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是()。
A:fopen("A:\user\abc.txt","r")
B:fopen("A:\\user\\abc.txt","r+")
C:fopen("A:\user\abc.txt","rb")
D:fopen("A:\\user\\abc.txt","w")
33.与实际参数为实型数组名相对应的形式参数不可以定义为()。A:float a[];
B:float *a;
C:float a;
D:float (*a)[3];
答案:C
34.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为()。A:自动(auto)
B:静态(static)
C:外部(extern)
D:寄存器(register)
答案:A
35.下面有关for 循环的正确描述是()。
A:for 循环只能用于循环次数已经确定的情况
B:for 循环是先执行循环循环体语句,后判断表达式
C:在for 循环中,不能用break 语句跳出循环体
D:for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来答案:D
36.下列语句的结果是()。
main()
{ int j;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A:3,3
B:3,4
C:4,3
D:4,4
37.执行下列程序后,其输出结果是()。
main()
{int a=9;
a+=a-=a+a;
printf("%d\n",a);
}
A:18
B:9
C:-18
D:-9
答案:C
38.以下函数调用语句中实参的个数是()。
func((e1,e2),(e3,e4,e5));
A:2
B:3
C:5
D:语法错误
答案:A
39.下列四个选项中,均是C语言关键字的选项是()。A:auto enum include
B:switch typedef continue
C:signed union scanf
D:if struct type
答案:B
40.下列数组说明中,正确的是()。
A:static char str[]="China";
B:static char str[]; str="China";
C:static char str1[5],str2[]={"China"}; str1=str2;
D:static char str1[],str2[];str2={"China"}; strcpy(str1,str2);
41.C语言中,要求运算数必须是整型的运算符是()。
A:^
B:%
C:!
D:>
答案:B
42.以下不能正确定义二维数组的选项是()。
A:int a[2][2]={{1},{2}};
B:int a[][2]={1,2,3,4};
C:int a[2][2]={{1},2,3};
D:int a[2][]={{1,2},{3,4}};
答案:D
43.设int x=1, y=1; 表达式(!x||y--)的值是()。
A:0
B:1
C:2
D:-1
答案:B
44.下列选项中正确的语句组是()。
A:char s[8]; s={"Beijing"};
B:char *s; s={"Beijing"};
C:char s[8]; s="Beijing";
D:char *s; s="Beijing";
答案:D
45.若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5 的语句为()。
A:printf("%d",*(a+5));
B:printf("%d",p[5]);
C:printf("%d",*(p+5));
D:printf("%d",*p[5]);
答案:D
46.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。
A:int
B:float
C:double
D:不确定
答案:C
47.以下叙述正确的是()。
A:在C程序中,main函数必须位于程序的最前面
B:C程序的每行中只能写一条语句
C:C语言本身没有输入输出语句
D:在对一个C程序进行编译的过程中,可发现注释中的拼写错误
答案:C
48.int a=1,b=2,c=3;
if(a>b)a=b;
if(a>c)a=c;
则a的值为()。
A:1
B:2
C:3
D:不一定
答案:A
49.C语言中,定义结构体的保留字是()。
A:union
B:struct
C:enum
D:typedef
50.逻辑运算符两侧运算对象的数据类型()。
A:只能是0或1
B:只能是0或非0正数
C:只能是整型或字符型数据
D:可以是任何类型的数据
答案:D
51.以下叙述中正确的是()。
A:C语言的源程序不必通过编译就可以直接运行
B:C语言中的每条可执行语句最终都将被转换成二进制的机器指令C:C源程序经编译形成的二进制代码可以直接运行
D:C语言中的函数不可以单独进行编译
52.下列程序的输出结果是()。
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:a=1,b=0
B:a=2,b=1
C:a=1,b=1
答案:B
53.若二维数组a有m列,则在a[i][j]前的元素个数为()。
A:j*m+i
B:i*m+j
C:i*m+j-1
D:i*m+j+1
答案:B
54.用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是()。long a=0xffffff;
int b; char c;
A:0ffffff 和0x61
B:-1和98
C:-1和97
D:指向同一地址
答案:C
55.在调用函数时,如果实参是简单变量,它与对应形参之间的数据
传递方式是()。
A:地址传递
B:单向值传递
C:由实参传给形参,再由形参传回实参
D:传递方式由用户指定
答案:B
56.以下数值中,不正确的八进制数或十六进制数是()。
A:0x16
B:16
C:-16
D:0xaaaa
答案:C
57.以下运算符中,优先级最高的运算符是()。
A:*=
B:>=
C:(类型)
D:+
答案:C
58.以下选项中,与k=n++完全等价的表达式是()。
A:k=n,n=n+1
B:n=n+1,k=n
C:k=++n
D:k+=n+1
答案:A
59.结构体类型的定义允许嵌套是指()。
A:成员是已经或正在定义的结构体型
B:成员可以重名
C:结构体型可以派生
D:定义多个结构体型
答案:A
60.用户定义的函数不可以调用的函数是()。
A:非整型返回值的
B:本文件外的
C:main函数
D:本函数下面定义的
答案:C
二. 多选题(本大题共20小题,每小题2分,共40分)
1.以下对C语言中的函数描述不正确的有()。
A:可以嵌套定义,不可以嵌套调用
B:不可以嵌套定义,可以嵌套调用
C:可以嵌套定义,也可以嵌套调用
D:嵌套定义和嵌套调用都不允许
答案:ACD
2.以下叙述正确的是()。
A:预处理命令行都必须以"#"开始
B:在程序中凡是以"#"开始的语句行都是预处理命令行
C:C程序在执行过程中对预处理命令行进行处理
D:#define ABCD是正确的宏定义
答案:ABD
3.以下描述错误的是()。
A:continue语句的作用是重新开始一次循环体的执行
B:只能在循环体内和switch语句体内使用break语句
C:在循环体内使用break语句和continue语句的作用相同
D:从多重循环嵌套中退出是,只能使用goto语句
答案:CD
4.有定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);
语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的有()。
A:11 12<回车>
B:11,<空格>12<回车>
C:11,12<回车>
D:11,<回车> 12<回车>
答案:BCD
5.以下合法的十六进制数是()。
A:oxff
B:0Xabc
C:0x01
D:0X9X
答案:BC
6.以下描述正确的是()。
A:调用函数时,实参可以是表达式
B:调用函数时,实参与形参可以共用内存单元
C:调用函数时,将为形参分配内存单元
D:调用函数时,实参与形参的类型必须一致
答案:ACD
7.以下选项中合法的表达式是()。
A:0<=x<100
B:i=j==0
C:(char)(65+3)
D:x+1=x+1
答案:ABC
8.设有以下定义
int a=0;
double b=1.25;
char c='A';
#define d 2
则下面语句中正确的是()。
A:a++;
B:b++;
C:c++;
D:d++;
答案:ABC
9.以下对二维数组a进行正确初始话的是()。
A:static char word[]='Turbo\0';
B:static char word[]={'T','u','r','b','o','\0'}; C:static char word[]={"Turbo\0"};
D:static char word[]="Turbo\0";
答案:BCD
10.符合C语言语法的实型常量是()。
A:1.2E0.5
B:3.14.159E
C:.5E-3
D:E15
答案:ABD
11.若a,b,c,d都是int型变量且初值为0,以下选项中正确的赋值语句是()。A:a=b=c=d=100;
B:d++;
C:c+b;
D:d=(c=22)-(b++);
答案:ABD
12.以下关于数组描述错误的是()。
A:数组的大小是固定的,但可以有不同的类型的数组元素
B:数组的大小是可变的,但所有数组元素的类型必须相同
C:数组的大小是固定的,所有数组元素的类型必须相同
D:数组的大小是可变的,可以有不同的类型的数组元素
答案:ABD
13.以下正确的if语句形式是()。
A:if (x>y && x!=y);
B:if (x==y) x+=y;
C:if (x!=y) scanf("%d",&x) else scanf("%d",&y);
D:if (x 答案:ABD 14.以下叙述中正确的是()。 A:一个C源程序可由一个或多个函数组成 B:一个C源程序必须包含一个main()函数 C:C源程序的基本组成单位是函数 D:在C源程序中,注释说明只能位于一条语句的最后 答案:ABC 15.以下合法的十六进制数是()。 A:oxff B:0Xabc C:0x01 D:0X9X 答案:BC 16.以下选项中,合法的字符常量是()。A:'\t' B:'\17' C:"n" D:'\xaa' 答案:ABD 17.以下用户标识符,其中合法的是()。A:return B:f2_G3 C:A3-3 D:abc 答案:BD 18.以下可以定义为用户标识符的有()。A:scanf B:short C:_3com_ D:int 答案:AC 19.以下选项中合法的表达式是()。 A:0<=x<100 B:i=j==0 C:(char)(65+3) D:x+1=x+1 答案:ABC 20.以下不符合C语言语法的实型常量是()。 A:1.2E0.5 B:3.14.159E C:.5E-3 D:E15 答案:ABD 21.4个选项中,可以看作是一条语句的有()。 A:{;} B:a=0,b=0,c=0; C:if(a>0); D:if(b==0) m=1;n=2; 答案:ABC 22.以下选项中,合法的字符常量是()。 A:'\t' B:'\17' C:"n" D:'\xaa' 答案:ABD 23.以下描述正确的是()。 A:使用while和do-while循环时,循环变量初始话的操作应在循环体语句之前完成 B:while循环是先判断表达式,后执行循环语句 C:do-while和for循环均是先执行循环语句,后判断表达式 D:for,while和do-while循环中的循环体均可以由空语句构成 答案:ABD 24.以下关于数组描述错误的是()。 A:数组的大小是固定的,但可以有不同的类型的数组元素 8.1 阅读下列程序,写出执行结果 1.#include cout << p3 -> fun() << endl; } 2.#include 程序设计基础 下面我们这一节我们概要向用户管理人员介绍面问过程的程序设计语言的原理。绝大多数生产程序是用诸如COBOL、BASIC这样的POL编制的。虽然用户管理人员通常没有机会去实际地从事这类编程序的工作,但是他(或者她)将经常与从事这些工作的人们相互联系。掌握程序设计的基础知识将使得这种相互联系更加有效,同时也使得管理人员能够理解查询语言的概念。 在POL中,一个指令(又称作语句)序列是一条接着一条执行的,除非用一条“条件测试”指令来控制执行顺序而转移到程序的另一部分。例如,一个工资程序处理按月发工资的职工与按工时发工资的职工的两部分程序是不同的。计时职工的毛工资是计算出来的,而按月发工资的职工其每月的毛工资是从数据库中检索出来的。对每种工作(按工时计算或按月计算)都要求一组唯一的指令。一旦确定了毛工资,那么对二者的处理步骤(即程序指令)是相同的(例如,工资扣除、社会保险金额的计算、打印工资支票等等)。 我们从一个BASIC工资程序中挑选出一些关键的语句用以说明程序设计中的“序列”和“条件测试”的概念。这些指令是自我说明了。编制一个计算和打印工资的联单的实际程序将要求几百行代码(LOC)或指令。 每种POL都有自己的一组指令集,其中,对下面一般的指令分类的每一类至少有一条指令。 (1)计算指令。计算指令允许程序员作加、减、乘、除和一个数的乘方中的语句等运算。 (2)数据传送指令。它可以将数据从主存的一个单元传送到另一个单元。赋值语句也属这一类,这些语句允许程序员通过一个命名的存储单元(称作为一个变量)使用一个常字“NETPAYIS”,或一个数值。语句160是一个赋值语句,并且对“P”赋以值“S”。 (3)控制[判定和(或)转移]指令。这些是唯一能改变程序执行顺序的指令。有无条件转移和条件转移指令,它们引起一次判断和(或)转移到程序另一部分。尽管在各种语言之间的语法差别很大,但是一般都用“IF”语句来表示条件转移指令,而用“GOTO”语句来表示无条件转移指令,“END”语句(语句号 260)终止程序的执行。 (4)输入/输出指令。输入/输出(简写为I/O)语句指挥计算机从外部设备读数据或者将数据写到外部设备上。 (5)格式语句,当从磁盘记录读到主存时,它只不过是一串字符。格式语句装配这些字符串以待处理。格式语句也用来编辑输出,以使其容易阅读。每月的总工资可能是以333333形式存放在一个磁盘文件上的,然而在输出时,则需要加进十进制小数点和美元符号。比如说,将输出编辑成$3333.33形式。C++程序设计基础课后答案 第八章
程序设计基础