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 当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键) 前,可以任意修改
答案: D
解析:
a.复合语句,简称为语句块,使用大括号把许多语句和声明组合到一起,形成单条语句。在语句块内声明的变量将具有语句块作用域。如果一个变量没有被声明为 static 或 extern,那么该变量是局部变量,其存储空间会在语句块结束之后自动被释放。
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
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
解析:
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