1、int (*p)[6]; 它的含义为()。

A 具有6个元素的一维数组
B 定义了一个指向具有6个元素的一维数组的指针变量
C 指向整型指针变量
D 指向6个整数中的一个的地址

答案: B

解析:  int(*p)[n] 指向数组的指针; int *p[n] 放着指针的数组

2、语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf最多可执行次数为:( ) 

A 4
B 6
C 5
D 1

答案: C

3、在下面的一维数组定义中,错误的定义格式为( )

A int a[]={1,2,3}
B int a[10]={0}
C int a[]
D int a[5]

答案: C

解析: 数组在定义时,必须指明数组大小,这样编译器可以在内存上申请空间,显然C选项的参数缺省,导致编译器无法确定申请内存的大小,所以会报错

4、以下叙述中正确的是()

A 结构体类型中各个成分的类型必须是一致的
B 结构体类型中的成分只能是C语言中预先定义的基本数据类型
C 在定义结构体类型时,编译程序就为它分配了内存空间
D 一个结构体类型可以由多个称为成员(或域) 的成分组成

答案: D

解析: 

a.可以不一样,结构体是用户自定义数据类型,可以包含任意其它数据类型,但是包含的数类型必须是先定义好的
b.结构体里也可以有其他已定义的结构体类型
c.定义结构体时只是声明了一种类型,并没有实例化因而也就没有分配内存空间,在定义结构体变量的时候才开辟内存
d.一个结构体类型可以由多个称为成员(或域) 的成分组成
 
5、以下叙述中正确的是()

A 复合语句在语法上包含多条语句,其中不能定义局部变量
B 花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的
C 空语句就是指程序中的空行
D 当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键) 前,可以任意修改

答案: D

解析: 

a.复合语句,简称为语句块,使用大括号把许多语句和声明组合到一起,形成单条语句。在语句块内声明的变量将具有语句块作用域。如果一个变量没有被声明为 static 或 extern,那么该变量是局部变量,其存储空间会在语句块结束之后自动被释放。

    { [声明和语句的列表] }
b.花括号不仅用于函数的开头和结尾,还可用于:结构体定义、数组定义初始化、代码段( 函数中任意一个代码段都可以用{ }括起来 )、判断语句if、for语句、switch()语句等
c. C 语言中的语句必须以分号 ";" 结尾 , 所以空语句为 ";"
d.当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键) 前,可以任意修改
 
6、若有以下程序

main( ) 

char c1,c2;
c1 ='C'+'8'-'3';
c2 ='9'-'0';
printf("%c %d\n",c1,c2);
}
则程序的输出结果是

A H  '9'
B H  9
C F  '9'
D 表达式不合法输出无定值

答案: B

解析: string 和 int 型都支持直接加减。

'C'+'8'-'3' = 67+56-51 = 72,因为输出%c为字符型,所以结果为 H

'9'-'0' = 9,因为输出%d为整型,所以结果是9

7、以下系统中,int类型占几个字节,指针占几个字节,操作系统可以使用的最大内存空间是多大:

A 32位下:4,4,2^32     64位下:8,8,2^64
B 32位下:4,4,不限制   64位下:4,8,不限制
C 32位下:4,4,2^32     64位下:4,8,2^64
D 32位下:4,4,2^32     64位下:4,4,2^64

答案: C

解析: 特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。

系统支持的最大内存只与硬件有关,即地址线的数目。32位就是有32根地址线,那么它的寻址能力就是2的32次方,64位就是有64根地址线,寻址能力就是2的64次方。当然,这都是理论值,64位实际最大支持128G。

8、若以”a+”方式打开一个已存在的文件,则以下叙述正确的是()。

A 文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可进行添加和读操作
B 文件打开时,原有文件内容不被删除,位置指针移到文件开头,可进行重写和读操作
C 文件打开时,原有文件内容被删除,只可进行写操作
D 以上各种说法皆不正确

答案: A

解析: 

若以”a+”方式打开一个已存在的文件,原文件如果不存在,则创建;如果存在则打开,并且将文件位置指针移到文件尾,可以在文件尾进行数据添加,也可以从文件开头处进行读数。但文件位置指针不可移到文件头,不能进行重写操作。

总结,带有“ + ”都是即可读又可写,a 在文件末尾写入数据,其他根据词义判断即可。

9、有以下程序

main()
{ int a=666,b=888;
printf("%d\n",a,b);
}
程序运行后的输出结果是( )。

A 错误信息
B 666
C 888
D 666,888

答案: B

解析: printf函数参数的入栈顺序是从右到左(888先入栈,接着666入栈)。所以从栈里面读取一个数据时,只会读取最后入栈的数据,也即666.

10、函数()把文件位置重定位到文件中的指定位置

A fseek
B fread
C fopen
D fgets

答案: A

解析: 

fseek
函数原型:int fseek(FILE *stream,long offset,int framewhere)
作用:重定位文件内部的指针
fread
函数原型:size_t fread(void* buff,size_t size,size_t count,FILE* stream)
作用:从文件中读入数据到指定的地址中
fopen
fopen函数是在当前目录下打开一个文件,其调用的一般形式为:
文件指针名=fopen(文件名,使用文件方式);
fgets
读写字符串函数

11、以下程序段的执行结果是()。

double x;x=218.82631;
printf("%-6.2e\n",x);

A 输出格式描述符的域宽不够,不能输出
B 输出为21.38e+01
C 输出为2.19e+02
D 输出为-2.14e2

答案: C

解析: 

%:表示格式说明的起始符号,也是转义符号,有一题 printf(“%%%%”)输出几个?答案输出%% 两个
-  :有-表示左对齐输出,如省略表示右对齐输出 
0 :有0表示指定空位填0,如省略表示指定空位不填 
m.n: m指域宽,即对应的输出项在输出设备上所占的字符数。
   n指精度。用于说明输出的实型数的小数位数。没有指定n时,隐含的精度为n=6位 
e :表示以指数形式输出实数,在C语言中,以“e”或“E”后跟一个整数来表示以“10”为底数的幂数
那么这题的意思是以左对齐、指数形式、总长度m =6、小数n=2两位 输出 

 12、执行语句 scanf(“%c,b=%d,f=:%f”,&a,&b,&c) 时,正确的键盘 输入方法是( )

A a,4,6
B 4,b=4,f=:8.5
C c,b=2,f=4
D b,b=5,f=4.3

答案: B

解析: scanf("输入控制符", 输入参数);

在scanf中,格式控制符与printf函数中的使用方式相同,如%d、%o、%x、%c、%s、%f等等。但是在输入时所有的“非格式控制符”都要原样输入。所以在本题中输入的时候b=,f=:以及逗号都必须要原样输入。仅有选项B符合要求。

13、以下程序的输出结果为

#include "stdio.h"
int func(int x, int y)
{
return (x + y);
}
int main()
{
int a = 1, b = 2, c = 3, d = 4, e = 5;
printf(" %d\n", func((a + b, b + c, c + a), (d, e)));

return 0;
}

A 15
B 5
C 9
D 出错

答案: C

解析: c++primer 第4版p145,逗号表达式是一组由逗号分隔的表达式,这些表达式是从左向右计算。逗号表达式的结果是其最后边表达式的值,如果最后边的操作数是左值,则逗号表达式的值也是左值。此类表达式通常用于for循环。

括号中逗号运算符返回值是最后的表达式的值,题中第一个参数为c+a=4, 后一个参数为e=5

 

 posted on 2020-09-14 09:49  mengyuan  阅读(435)  评论(0编辑  收藏  举报