C语言程序设计基础单项选择题库_c语言程序设计试题库
C语言程序设计基础单项选择题库由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言程序设计试题库”。
分类:
一、概念(13---51,54,55)、数据类型、输入输出格式、转义符、运算及表达式等:1---66
二、选择语句:67---72(其中67为条件运算,72可归于一类);
三、循环语句:73---102(其中78为输出格式可归于一类)
四、数组:103---133(其中123 – 125为与数组相关的函数调用)
五、函数调用:134---156
六、文件:157 – 183
七、指针:184---195
八、结构体:196---207(204.205,206为函数调用)
1、在C语言中,最基本的数据类型包括
(A)整型、实型、字符型(B)整型、实型、逻辑型(C)整型、字符型、逻辑型(D)实型、字符型、逻辑型 2 C语言中整常数的书写形式不能使用的数制形式是(A)十进制(B)十六进制(C)八进制(D)二进制 3 字符串常量“abncde125”包含字符的个数是(A)8(B)12(C)9(D)13 4 C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(A)必须为下划线(B)可以是这三种字符中的任一种(C)必须为字母或下划线(D)必须为字母 5 下列是用户自定义标识符的是(A)#x(B)_x(C)2x(D)int 6 在C语言中,下列常数不能作为常量的是(A)0xA3(B)068(C)5.6E-3(D)2e5 7 在C语言中,运算对象必须是整型的运算符是(A)%(B)>=(C)&&(D)= 8 下列表达式与x =(y++)等价的是(A)x = ++y(B)x = x + 1, y = x(C)x = y, y = y + 1(D)x += y + 1 9 若定义int x = 17;,则表达式x++ * 1 / 6的值是(A)1(B)2(C)3(D)4 10 如果在一个C语言表达式中有多个运算符,则运算时应该(A)只考虑优先级(B)只考虑结合性(C)先考虑优先级,然后考虑结合性(D)先考虑结合性,然后考虑优先级 11在C程序中,下面叙述不正确的是
(A)x和X 是两个不同的变量(B)从键盘输入数据时,对整型变量只能输入整型数据,对于实型变量只能输入实型数据(C)逗号运算符的优先级最低(D)若x、y类型相同,则执行语句y = x,后,将把x的值放入y中,而x的值不变 12 已知字符A的ASCII值为65,若定义int i;,则执行语句i = 'A' + 3.5;后,正确的叙述是(A)i的值是字符E(B)语句不合法
(C)i的值是字符A的ASCII值加上3,即68(D)i的值是字符A的ASCII值加上3.5,即68.5 13 C语言是计算机高级语言,它适合作为系统描述语言,它
(A)不以用来编写系统软件,可以用来编写应用软件(B)不以用来编写系统软件,不可以用来编写应用软件
(C)可以用来编写系统软件,不可以用来编写应用软件(D)可以用来编写系统软件,也可以用来编写应用软件 14 在纸上写好一个C语言程序后,上机运行的基本步骤为
(A)编辑、连接、编译、运行(B)编译、连接、编辑、运行(C)编译、编辑、连接、运行(D)编辑、编译、连接、运行 15 用C语言等高级语言编写的程序称为(A)可执行程序(B)编译程序(C)目标程序(D)源程序 16 一个C语言源程序经过“编译程序”翻译后生成一个二进制代码文件,它的扩展名为(A).dat(B).exe(C).c(D).obj 17 通过“连接程序”软件,把C语言目标程序与C语言提供的各种库函数连接起来生成一个文件,它的扩展名为(A).exe(B).dat(C).obj(D).c 18 下面叙述中正确的是
(A)在C语言程序中,要调用的函数必须在main()函数中定义(B)C语言程序总是从main()函数开始执行
(C)C语言程序总是从第一个函数开始执行(D)在C语言程序中,main()函数必须放在程序的开始位置 19 在一个C语言源程序中,main()函数的位置(A)必须在其他所有的函数之后(B)可以在任意位置(C)必须在其他所有的函数之前(D)必须在固定位置 20 一个C语言程序由
(A)若干个过程组成(B)若干个子程序组成(C)一个主程序和若干个子程序构成(D)一个主函数和若干个子函数构成 21一个函数的组成有
(A)函数的声明部分和执行部分(B)函数名、函数类型、函数参数名、函数参数类型(C)主函数和子函数(D)函数首部和函数体 22 下面叙述不正确的是
(A)在程序中任意合适的地方都可以加上注释以便阅读(B)C语言中的每条执行语句都需要用分号结束
(C)include命令所在行后面需要加分号(D)C语言具有高级语言的功能,也具有低级语言的一些功能 23 下面叙述正确的是
(A)在C程序中,main()函数的位置必须在其他所有的函数之前(B)C语言自身没有输入输出语句
(C)在C程序的编译过程中可以发现注释中的拼写错误(D)C程序的每一行只能写一条语句 24 在C语言中,用来表示“取地址”的符号是(A)$(B)#(C)@(D)& 25 在C语言中,用于结构化程序设计的三种基本结构是(A)顺序结构、选择结构、转移结构(B)顺序结构、条件结构、循环结构(C)顺序结构、选择结构、重复结构(D)顺序结构、选择结构、循环结构 26 一个算法应具有“确定性”等5个特性,则对另外4个特性描述错误的是(A)有效性(B)有穷性(C)有零个或多个输入(D)有零个或多个输出 27 程序设计一般可以简化为以下4个步骤,其中首先应该完成的是(A)调试并运行程序(B)编写程序(C)建立数学模型(D)设计数据结构和算法 28 以下不正确的C语言标识符是(A)ab.c(B)a_bc(C)abc(D)ABC 29 以下正确的C语言标识符是(A)a+b(B)test!(C)_123(D)%x 30 编辑程序的功能是
(A)命令计算机执行指定的操作(C)将C源程序编译成目标程序
(B)调试程序
(D)建立并修改程序 31 C语言程序的基本单位是(A)过程(B)函数(C)子程序(D)标识符 32 下列说法中错误的是
(A)主函数可以分为两部分:主函数首部和主函数体(B)主函数可以调用任何非主函数的其它函数
(C)任何非主函数可以调用其它任何非主函数(D)程序可以从任何非主函数开始执行 33 在下列数据中属于“字符串常量”的是(A)ABC(B)“ABC”(C)'abc'(D)'a' 34 在C语言中,字符'n'在内存占用的字节数是(A)1(B)2(C)3(D)4 35 字符串“ABC”在内存占用的字节数是(A)3(B)4(C)6(D)8 ·试题讲评
编译字符串“ABC”时,编译器会自动加上字符串结束标志' ',因此字符串“ABC”占用的内存为4个字节。36 在C语言中,合法的长整型常数是(A)0L(B)4321(C)0.07654321(D)2.3456e10 ·试题讲评
4321在C语言中默认为是int型数据,数据后加L或l表示该数的类型为长整型。37 char型常量在内存中存放的是(A)ASCII值(B)BCD码值
(C)内码值(D)十进制代码值 38 设m, n, a, b, c, d均为0,执行(m = a == b)||(n = c == d)后,m,n的值是(A)0,0(B)0,1(C)1,0(D)1,1 ·试题讲评
(1)在C语言中,“||”表示逻辑或,“&&”表示逻辑与。
(2)对于“m =(表达式a)||(表达式b)”,若“表达式a”为真或“表达式b”为真,则m为真。特别指出,若“表达式a”为真,则m的值肯定为真(无论“表达式b”的结果是否为真),在C语言中,为提高运算速度,此时就不再去执行“表达式b”。
(3)对于“m =(表达式a)&&(表达式b)”,若“表达式a”为假或“表达式b”为假,则m为假。特别指出,若“表达式a”为假,则m的值肯定为假(无论“表达式b”的结果如何),在C语言中,为提高运算速度,此时就不再去执行“表达式b”。
(4)在本题的表达式中,从左至右,先计算“(m = a == b)”,在此表达式中,先计算“a == b”,由于a,b的值均为0,因此“a == b”的结果是真(即1)。再将“a == b”的运算结果(即1)赋值给m,则m的值为1,因此“(m = a == b)”的结果为1,即真,按前述规则,不再对表达式“(n = c == d)”进行计算,因此结果为选项C。39 设a为5,执行下列语句后,b的值不为2的是(A)b = a / 2(B)b = 6c的值的类型是(A)float(B)int(C)char(D)double 43 在以下一组运算符中,优先级最高的运算符是(A)
(A)C程序中的所有字母都必须小写(B)C程序中的关键字必须小写,其他标识符不区分大小写
(C)C语言中的所有字母都不区分大小写(D)C语言中的所有关键字必须小写 45 下面不属于C语言关键字的是(A)integer(B)typedef(C)enum(D)union 46 以下叙述不正确的是
(A)分号是C语句的必要组成部分(B)C程序的注释可以写在语句的后面(C)函数是C程序的基本单位(D)主函数的名字是mian 47 下列能正确表示a≥10或a≤0的C语言关系表达式是(A)a>= 10 or a = 10 | a = 10 || a = 10 && a
(A)同一个数组中的每一个元素都属于同一个数据类型(B)对于实型数组,不可以直接用数组名对数组进行整体的输入或输出
(C)数组名代表数组所占存储区的首地址,其值不可以改变(D)在程序运行时,如果数组元素的下标超出了所定义的下标范围,系统将给出“下标越界”的出错信息 105 如果有语句:int x[3][2];,则下面能正确引用数组元素的选项是(A)x[0][2](B)x[1][2](C)x[2][1](D)x[2][2] 106 如果有语句:int x;char y[6];,则下面正确的输入语句是(A)scanf(“%d%s”, x, y);(B)scanf(“%d%s”, &x, y);(C)scanf(“%d%s”, x, &y);(D)scanf(“%d%s”, &x, &y);107 下面能正确定义一维数组的选项是(A)int num[];(B)int num[0...50];(C)int N = 50, num[N];(D)#define N 50 int num[N];·试题讲评
数组长度不能为变量。108 下面不能正确定义二维数组的选项是(A)int a[2][] = {{1, 2}, {3, 4}};(B)int a[][2] = {1, 2, 3, 4};(C)int a[2][2] = {{1}, {2}};(D)int a[2][2] = {{1}, 2, 3};109 如果有定义:int a[2][2] = {0, 1, 2, 3};,则a数组的各个元素分别为
(A)a[0][0]=0, a[0][1]=1, a[1][0]=2, a[1][1]=3(B)a[0][0]=0, a[0][1]=2, a[1][0]=1, a[1][1]=3(C)a[0][0]=3, a[0][1]=2, a[1][0]=1, a[1][1]=0(D)a[0][0]=3, a[0][1]=1, a[1][0]=2, a[1][1]=0 110 下面能正确定义一维数组的选项是
(A)int a1[] = “string”;(B)int a2[5] = {1, 2, 3, 4, 5, 6};(C)char a3 = {“string”};(D)char a4[] = {1, 2, 3, 4, 5, 6};111 如果有语句:char a[] = “string”, b[] = {'s', 't', 'r', 'i', 'n', 'g'};,则下面叙述中正确的是(A)数组a的长度大于数组b的长度(B)数组a的长度等于数组b的长度(C)数组a的长度小于数组b的长度(D)数组a和数组b二者等价 112 若定义str1、str2、str3为字符串,则语句strcat(strcpy(str1, str2), str3);的功能是
(A)把字符串str1连接到字符串str2中再把字符串str2复制到字符串str3之后(B)把字符串str1复制到字符串str2中再把字符串str2连接到字符串str3之后
(C)把字符串str2连接到字符串str1之后再把字符串str3复制到字符串str1中(D)把字符串str2复制到字符串str1中再把字符串str3连接到字符串str1之后 113 下面叙述中错误的是
(A)对于实型数组,不可以直接用数组名对数组进行整体的输入或输出(B)对于字符型数组,可以直接用数组名对数组进行整体输入或输出
(C)对于字符型数组,可以用来存放字符串(D)对于字符型数组,可以在赋值语句中运用运算符“=”进行整体赋值 114 若有以下语句,各选项中数值为4的表达式是 int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};char c = 'a', d, g;(A)a[g-c](B)a[4](C)a['d'c] 115 假设int型变量占4个字节的存储单元,对于如下定义,数组x在内存中所占字节数为 int x[10] = {0, 2, 4};(A)4(B)12(C)20(D)40 116 以下程序段的输出结果是 int j;int x[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for(j=0;j
for(t=0;t
{ n[j] = n[t] + 1;
} } printf(“%dn”, n[1]);(A)0(B)1(C)2(D)3 118 以下程序段运行后的输出结果是
int p[7] = {11, 13, 14, 15, 16, 17, 18}, i=0, k=0;
while(i
k = k + p[i];i++;} printf(“%dn”, k);(A)58(B)56(C)45(D)24 119 以下程序段运行后的输出结果是 int m[][3] = {1, 4, 7, 2, 5, 8, 3, 6 ,9};int i, k=2;
for(i=0;i
(A)char *s;s = “Beijing”;(B)char *s;s = {“Beijing”};(C)char s[8];s = “Beijing”;(D)char s[8];s = {“Beijing”};121 以下代码段执行后,b中的值是:2960 int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], b;b = p[5];(A)5(B)6(C)8(D)9 122 以下程序段运行后的输出结果是 char a[]=“abcdefg”, b[10]=“abcdefg”;
printf(“%d %dn”, sizeof(a), sizeof(b));(A)7 7(B)8 8(C)8 10(D)10 10 123 下列程序运行后的输出结果是 #include void swap1(int c[]);void swap2(int c0, int c1);
int main(void){ int a[2]={3, 5}, b[2]={3, 5};
swap1(a);
swap2(b[0], b[1]);printf(“%d %d %d %dn”, a[0], a[1], b[0], b[1]);return 0;}
void swap1(int c[]){ int t;
t = c[0];
c[0] = c[1];
c[1] = t;}
void swap2(int c0, int c1){ int t;
t = c0;
c0 = c1;
c1 = t;}(A)5 3 3 5(B)5 3 5 3(C)3 5 3 5(D)3 5 5 3 124 下列程序运行后的输出结果是 #include void sort(int a[], int n);
int main(void){ int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, i;
sort(aa, 10);for(i=0;i
void sort(int a[], int n){ int i, j, t;
for(i=0;i
a[i] = a[j];
a[j] = t;} }(A)9 2 7 4 5 6 3 8 1 10(B)1 2 3 4 5 6 7 8 9 10(C)10 9 8 7 6 5 4 3 2 1(D)1 10 3 8 5 6 7 4 9 2 125 下列程序运行后的输出结果是 #include void f(int a[], int i, int j);
int main(void){ int i, aa[5] = {1, 2, 3, 4, 5};
f(aa, 0, 4);for(i=0;i
void f(int a[], int i, int j){ int t;
if(i
{
t = a[i];
a[i] = a[j];
a[j] = t;f(a, i+1, j-1);
} }(A)5,4,3,2,1,(B)1,2,3,4,5,(C)5,4,3,2,1(D)5,2,3,4,1 126 以下程序段运行后的输出结果是 char ch[3][5] = {“AAAA”, “BBB”, “CC”};
printf(“”%s“n”, ch[1]);(A)“AAAA”(B)“BBB”(C)“BBBCC”(D)“CC” 127 以下程序段运行后的输出结果是
int b[3][3] = {0, 1, 2, 0, 1, 2, 0, 1, 2}, i, j, t=1;
for(i=0;i
{
t += b[i][b[j][j]];
} } printf(“%dn”, t);(A)4(B)3(C)9(D)1 128 以下程序段运行后的输出结果是
int aa[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {3, 9, 10, 2}, {4, 2, 9, 6}};int i, s=0;
for(i=0;i
s += aa[i][1];} printf(“%dn”, s);(A)19(B)20(C)11(D)13 129 以下程序段的运行结果是: char s[10], s=“abcd”;
printf(“%s”, s);(A)abcd(B)a(C)ab cd(D)编译不通过 130 对于定义char s[] = “”NameAddre“n”;,字符串s所占字节数是(A)16(B)14(C)15(D)19 131 以下程序段的运行后结果是 char str[] = “abn 12”“;
printf(”%d“, strlen(str));(A)6(B)12(C)3(D)4 132 对于定义char c[8] = ”Tianjin“和int j,下面的输出函数调用中错误的是(A)printf(”%s“, c);(B)puts(c);(C)for(j=0;j
(A)函数调用可以出现在表达式中(B)函数调用可以作为独立的语句存在(C)函数调用可以作为一个函数的实参(D)函数调用可以作为一个函数的形参 142 在C语言中,下面关于函数正确的叙述是(A)函数可以嵌套定义,也可以嵌套调用(B)函数可以嵌套定义,但不可以嵌套调用(C)函数不可以嵌套定义,但可以嵌套调用(D)函数不可以嵌套定义,也不可以嵌套调用 143 在C语言中,函数调用语句function((a, b, c),(d, e));中参数的个数是(A)1(B)2(C)4(D)5 ·试题讲评
(a, b, c)和(d, e)分别都是逗号表达式 144 在函数调用中,若funA调用了函数funB,函数funB又调用了函数funA,则(A)C语言中不允许这样的递归调用(B)称为函数的直接递归调用(C)称为函数的间接递归调用(D)称为函数的循环调用 145 下面叙述中不正确的是
(A)函数中的形参是函数自己的局部变量(B)在不同的函数中可以使用相同名字的变量,它们在内存中占用不同的单元
(C)在一个函数中定义的变量只在本函数范围内有效(D)在一个函数内的复合语句中定义的变量只在本函数范围内有效 ·试题讲评
在一个函数内的复合语句中定义的变量只在本复合语句范围内有效 146 在一个源程序文件中定义的全局变量的作用域为
(A)从定义该变量的位置开始至本文件结束(B)本程序的全部范围(C)本文件的全部范围(D)本函数的全部范围 147 下面叙述中不正确的是(A)函数可以没有形参,可是函数名后的一对括号却不能省略(B)在C语言中,不能在一个函数的内部再定义函数
(C)在没有声明函数返回值类型时,函数返回值的类型默认为int(D)函数的类型可以是整型、实型、字符型,但不可以是指针型 148 下面程序的输出结果是 #include int function(int a, int b);
int main(void){ int x=5, y=3, s;
s = function(x, y);
printf(”%dn“, s);return 0;}
int function(int a, int b){ return a*a-b*b;}(A)2(B)8(C)16(D)32 149 下面程序的输出结果是 #include long func(int n);
int main(void){ printf(”%ldn“, func(5));return 0;}
long func(int n){ if(n > 2){ return func(n-1)+ func(n-2);} else { return 1;} }(A)5(B)6(C)7(D)8 150 下面程序的输出结果是 #include int zdgys(int x, int y);
int main(void){ int a=27, b=15, c;
c = zdgys(a, b);
printf(”%dn“, c);return 0;}
int zdgys(int x, int y){ int w;
while(y)
{
w = x % y;
x = y;
y = w;
} return x;}(A)2(B)3(C)4(D)5 151 下面程序的输出结果是 #include double func(int x, int y, int z);
int main(void){ double x;int a=3, b=4, c=5;
x = func(a, b, c);
printf(”%fn“, x);return 0;}
double func(int x, int y, int z){ double t;
t = x % y * z;return t;}(A)3(B)3.000000(C)15(D)15.000000 152 下面程序的输出结果是 #include int func(void);
int main(void){ int i, s;
for(i = 0;i
int func(void){ static int x = 6;x++;return x;}(A)7(B)8(C)9(D)10 153 下面程序中应该补充(填写在横线位置)的代码是 #include int max(int x, int y);
//函数功能:求两数中的较大数
int main(void){ int a, b, c;
scanf(”%d, %d“, &a, &b);
c = __________________;printf(”max is %d“, c);return 0;}
int max(int x, int y){ int z;
if(x > y)z = x;else z = y;return z;}(A)max(a, b)(B)max(&a, &b);(C)max(x, y)(D)int max(int a, int b)154 下面程序中应该补充(填写在横线位置)的代码中,有错的是 #include ______________________________
int main(void){ int a, b, c;
scanf(”%d, %d“, &a, &b);c = min(a, b);printf(”min is %d“, c);return 0;}
//函数功能:求两数中的较大数 int min(int x, int y){ int z;
z = x
int x1=30, x2=40;void sub(int x, int y);
int main(void){ int x3=10, x4=20;
sub(x3, x4);
sub(x2, x1);printf(”%d,%d,%d,%dn“, x3, x4, x1, x2);return 0;}
void sub(int x, int y){ x1 = x;
x = y;
y = x1;}(A)10,20,40,40(B)20,10,40,30(C)20,10,40,40(D)10,20,30,40 156 下面程序的输出结果是 #include void increment(void);
int main(void){ increment();
increment();
increment();return 0;}
void increment(void){ int x = 0;
x += 1;printf(”%d “, x);}(A)1 1 1(B)1 2 3(C)1(D)3 3 3 157 在C语言中,下面关于文件的存取方式正确的叙述是(A)只能从文件的开头存取(B)可以顺序存取,但不可以随机存取
(C)不可以顺序存取,但可以随机存取(D)可以顺序存取,也可以随机存取 158 下列关于C语言数据文件的叙述中正确的是
(A)文件由ASCII码字符序列组成,C语言只能读写文本文件(B)文件由二进制数据序列组成,C语言只能读写二进制文件
(C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件(D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 159 在C语言中,读写操作时需要进行转换的文件是(A)二进制文件(B)文本文件
(C)二进制文件和文本文件都需要转换(D)二进制文件和文本文件都不需要转换 160 在C语言中,下面关于文件操作正确的叙述是
(A)对文件操作时,必须先检查文件是否存在,然后再打开文件(B)对文件操作时需要先打开文件
(C)对文件操作时需要先关闭文件(D)对文件操作时打开和关闭文件的顺序没有要求 161 为了进行写操作而打开二进制文件wr.dat的正确写法是(A)fp = fopen(”wr.dat“, ”r“);(B)fp = fopen(”wr.dat“, ”w“);(C)fp = fopen(”wr.dat“, ”rb“);(D)fp = fopen(”wr.dat“, ”wb“);162 下面的语句中,将fp定义为文件型指针的是(A)file fp;(B)file *fp;(C)FILE fp;(D)FILE *fp;163 以下要作为fopen函数中第一个参数的正确格式是(A)”c:usertext.txt“(B)”c:usertext.txt“(C)”usertext.txt“(D)”c:user ext.txt“ ·试题讲评
字符常量反斜线()的书写形式是''(转义符方式)164 若执行fopen函数时发生错误,则函数的返回值是(A)0(NULL)(B)1(C)-1(EOF)(D)地址值 165 当顺利执行了文件关闭操作时,fclose函数的返回值是(A)-1(B)1(C)TRUE(D)0 166 如果不能实现文件“打开”的任务,fopen函数将会带回一个出错信息。以下对出错原因描述错误的是
(A)用”r“方式打开一个并不存在的文件(B)磁盘出故障
(C)磁盘已满无法建立新文件(D)用”w“方式打开文件时,没有先建立文件 167 在C语言中,标准库函数fread(buf, size, count, fp)中参数buf的含义是
(A)一个指针,指向要读入数据的存放地址(B)一个文件指针,指向要读的文件(C)一个整型变量,代表要读入的数据总数(D)一个存储区,存放要读的数据项 ·试题讲评
size:要读写的字节数;count:要读写多少个数据项(每个数据项的长度为size)。168 在C语言中,标准库函数fwrite(buf, size, count, fp)的功能是
(A)从buf所指向的文件中读取长度为size的count个数据项存入fp起始的内存(B)从fp所指向的文件中读取长度为size的count个数据项存入buf起始的内存
(C)把buf起始的内存中长度为size的count个数据项输出到fp所指向的文件中(D)把fp起始的内存中长度为size的count个数据项输出到buf所指向的文件中 169 下面程序的功能是 #include #include int main(void){
FILE *fp1, *fp2;
fp1 = fopen(”c:xxxfile.c“, ”r“);if(NULL == fp1)
{ printf(”cannot open file in disk c!n“);
exit(1);
}
fp2 = fopen(”d:file.c“, ”w“);if(NULL == fp2)
{ printf(”cannot open file in disk d!n“);
fclose(fp1);exit(2);
}
while(!feof(fp1))fputc(fgetc(fp1), fp2);printf(”copy succe!n“);
fclose(fp1);
fclose(fp2);return 0;}(A)将c盘xxx子目录下file.c文件复制到d盘xxx子目录下file.c文件中(B)将d盘xxx子目录下file.c文件复制到c盘xxx子目录下file.c文件中
(C)将c盘根目录下file.c文件复制到d盘xxx子目录下file.c文件中(D)将c盘xxx子目录下file.c文件复制到d盘根目录下file.c文件中 170 当已存在一个abc.txt文件时,执行函数fopen(”abc.txt“, ”r+“)的功能是
(A)打开abc.txt文件,清除原有的内容(B)打开abc.txt文件,只能写入新的内容
(C)打开abc.txt文件,只能读取原有内容(D)打开abc.txt文件,可以读取和写入新的内容 171 fopen(filename, mode)函数的mode取值”r“和”w“时,它们之间的差别是
(A)”r“可向文件输入,”w“不可向文件输入(B)”r“不可向文件输入,”w“可向文件输入(C)”r“不可由文件输出,”w“可由文件输出(D)文件不存在时,”r“建立新文件,”w“出错 172 若用fopen函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是(A)”ab+“(B)”wb+“(C)”rb+“(D)”ab“ ·试题讲评 ”rb+“:为了读和写,打开一个二进制文件,若指定文件不存在则出错;”wb+“:为了读和写,打开一个新的二进制文件,若指定文件不存在,则建立新文件。173 fread(buf, 64, 2, fp)的功能是
(A)从fp文件流中读出整数64,并存放在buf中(B)从fp文件流中读出整数64和2,并存放在buf中
(C)从fp文件流中读出64字节的字符,并存放在buf中(D)从fp文件流中读出2个64字节的字符,并存放在buf中 174 以下程序的功能是 #include #include int main(void){
FILE *fp;char str[] = ”HELLO“;
fp = fopen(”CON“, ”w“);if(NULL == fp)
{ printf(”file open error!n“);
exit(1);
}
fputs(str, fp);fclose(fp);return 0;}(A)在屏幕上显示HELLO(B)在打印机上打印出HELLO(C)把HELLO存入CON文件中(D)都不对
..作为输出设备时,CON是标准输出设备显示器的文件名,是dos的保留字。175 C语言中文件的格式化输入输出函数对是(A)fscanf/fprintf(B)fread/fwrite(C)fgets/fputs(D)fgetc/fputc 176 C语言中文件的数据块输入输出函数对是(A)fread/fwrite(B)fscanf/fprintf(C)fgetc/fputc(D)fgets/fputs 177 feof(fp)函数用来判断文件是否结束,如果未遇到文件结束,函数值为(A)0(B)1(C)非零(D)false 178 fgetc函数的作用是从指定文件读入一个字符,关于对应文件的打开方式,不正确的是(A)只读(B)只写(C)”r“(D)读写 179 若调用fputc函数输出字符成功,则其返回值是(A)0(B)1(C)EOF(D)输出的字符 180 fseek函数的功能是
(A)改变文件位置的指针位置(即下一次读写操作从文件的什么位置开始)(B)使文件位置指针重新置于文件开头(C)返回文件位置指针的当前值(D)关闭文件 181 以下程序的功能是 #include #include int main(void){
FILE *fp;char ch;
fp = fopen(”filename.txt“, ”w“);if(NULL == fp){ printf(”file open error!“);
exit(1);}
while((ch=getchar())!= '@')
{ fputc(ch ,fp);
putchar(ch);
}
fclose(fp);
return 0;}(A)把从键盘输入的字符依次输出到名为filename.txt的磁盘文件中(用@作为输入结束标志),同时在屏幕上显示这些字符。(B)把从键盘输入的字符依次输出到名为filename.txt的磁盘文件中(用@作为输入结束标志)。
(C)把从键盘输入的字符输出到屏幕(用@作为输入结束标志)。(D)从名为filename.txt的磁盘文件中读入字符(用@作为输入结束标志),并在屏幕上显示这些字符。182 下面程序的功能是将数组str的4个元素写到名为filename.dat的二进制文件中。程序中需要补充的语句是 #include #include int main(void){
FILE *fp;char str[] = ”abcd“;
fp = fopen(”filename.dat“, ”wb“);if(NULL == fp){ printf(”file open error!“);
exit(1);}
____________________________ fclose(fp);
return 0;}(A)fwrite(str, sizeof(char), 4, fp);(B)fwrite(fp, sizeof(char), 4, str);(C)fread(str, sizeof(char), 4, fp);(D)fwrite(str[0], sizeof(char), 1, fp);183 下面的程序执行后,文件file.txt中的内容是 #include #include #include void fun(char *fname, char *st);int main(void){ fun(”file.txt“, ”How are you!“);
fun(”file.txt“, ”Fine, thank you!“);return 0;}
void fun(char *fname, char *st){
FILE *fp;int len, i;
fp = fopen(fname, ”w“);if(NULL == fp){ printf(”file open error!“);
exit(1);}
len = strlen(st);for(i=0;i
变量的指针即变量的地址,是指变量所占内存单元的首地址。185 如果已经定义int x;,则对指针变量pointer进行说明和初始化正确的是(A)int pointer = x;(B)int pointer = &x;(C)int *pointer = &x;(D)int *pointer = *x;186 如果已经定义int x, *pointer;,则下面赋值语句正确的是(A)pointer = &x;(B)pointer = x;(C)*pointer = &x;(D)*pointer = *x;187 即使两个指针变量的类型相同,它们也不能(A)相减(B)相加(C)比较(D)指向同一地址 188 在C语言中,对变量的访问方式是
(A)能直接访问,能间接访问(B)能直接访问,不能间接访问(C)不能直接访问,能间接访问(D)不能直接访问,不能间接访问 189 在C程序说明语句int(*pointer)[5];中,pointer表示的是一个
(A)指向整型变量的指针(B)指针数组的名字,包含5个指向整型数据的指针(C)指向包含5个整型元素的一维数组的指针(D)指向函数的指针 190 在C程序说明语句int *pointer[5];中,pointer表示的是一个
(A)指向整型变量的指针(B)指针数组的名字,包含5个指向整型数据的指针(C)指向包含5个整型元素的一维数组的指针(D)指向函数的指针 191 在C程序说明语句int(*pointer)();中,pointer表示的是一个(A)指向整型变量的指针(B)指向数组的指针
(C)返回值为指针的函数名字(D)指向函数的指针,函数返回值为一个整数 192 在C程序说明语句int *pointer();中,pointer表示的是一个(A)指向整型变量的指针(B)指向数组的指针
(C)返回值为指针(指向的对象为int)的函数名字(D)指向函数的指针,函数返回值为一个整数 193 设有定义int a=3, b, *p=&a;,则下列语句表达有错的是(A)b = *a;(B)b = *&a;(C)b = *p;(D)b = a;·试题讲评
a不是指针变量,不能使用指针运算符*。194 若有说明int i, j=7, *p=&i;,则与i = j;等价的语句是(A)i = p;(B)*p = j;(C)p = &j;(D)*p = &j;195 若有说明int a[10], *p=a;,则对数组元素引用不正确的是(A)*(a + 2)(B)p[2](C)*(p + 2)(D)p + 2 196 若有如下说明语句,则下面叙述中不正确的是 struct student { long num;char name[20];char sex;int age;} stu;(A)struct是结构体类型关键字(B)struct student是结构体类型(C)num,name,sex,age都是结构体成员名(D)stu是结构体类型名 197 若有如下说明语句,则定义了 union student { long num;char name[20];char sex;int age;};(A)结构体类型(B)结构体变量(C)共用体类型(D)共用体变量 198 当定义一个结构体变量时,系统分配给它的内存空间字节数是
(A)各成员所需内存字节数的总和(B)结构体中第一个成员所需内存字节数(C)结构体中最后一个成员所需内存字节数(D)成员中占内存字节数最大的 199 有以下三种形式可供选择,则为了表示结构体变量中的成员,各选项中叙述正确的是
1、结构体变量.成员名
2、(*结构体指针变量).成员名
3、结构体指针变量->成员名(A)只能用1或2表示(B)只能用1或3表示(C)只能用2或3表示(D)三种形式均可 200 以下程序在VC6.0下运行后的输出结果为 #include
struct dt { char a[4];int b;double c;} data;
int main(void){ printf(”%dn“, sizeof(struct dt));
return 0;}(A)4(B)8(C)16(D)3 201 若有以下定义,则对变量student1中“生日”的正确赋值方式是 struct student { int num;char name[20], sex;struct
{ int year, month, day;
} birthday;};
struct student student1;(A)student1.birthday.year = 2003;student1.birthday.month = 5;student1.birthday.day = 1;(B)year = 2003;month = 5;day = 1;(C)birthday.year = 2003;birthday.month = 5;birthday.day = 1;(D)student1.year = 2003;student1.month = 5;student1.day = 1;202 若有以下定义,则下面各输出语句中能输出字母J的是 struct student { int num;char name[20];};
struct student school[10000] = {{1001, ”Mike“}, {1002, ”James“}, {1003, ”Tom“}};(A)printf(”%c“, school[0].name[0]);(B)printf(”%c“, school[1].name[0]);(C)printf(”%c“, school[2].name[0]);(D)printf(”%c“, school[1].name);203 若有以下定义,则下面各输入语句中不正确的是 struct student { int num;char name[20];char sex;float score;} student1,*p = &student1;(A)scanf(”%d“, &student1.num);(B)scanf(”%s“, &student1.name);(C)scanf(”%c“, &(*p).sex);(D)scanf(”%f“, &(p->score));204 以下程序的输出结果是: #include
struct student { int num;
float score;};
void fun(struct student tmp);int main(void){ struct student stu[2] = {{1001,650}, {1002,550}};fun(stu[0]);printf(”%d,%4.0fn“, stu[0].num, stu[0].score);return 0;}
void fun(struct student tmp){ struct student stu[2] = {{1003, 450}, {1004, 250}};
tmp.num = stu[1].num;}(A)1001, 650(B)1002, 550(C)1004, 650(D)1004, 250 205 以下程序的输出结果是: #include
struct student { int num;
float score;
char name[20];};
void fun(struct student *p);int main(void){ struct student stu[2] = {{1003, 450, ”Liu“}, {1004, 250, ”Tao“}};fun(stu);printf(”%d,%3.0f,%sn“, stu[0].num, stu[0].score, stu[0].name);return 0;}
void fun(struct student *p){ struct student stu[2] = {{1001,650, ”He“}, {1002,550, ”Li“}},*q=stu;
++q;
*p = *q;}(A)1002,550,Li(B)1004,250,Tao(C)1001,650,He(D)1003,450,Liu 206 以下程序的输出结果是: #include
struct student { long num;
char name[10];
int age;};
void func(struct student *p);int main(void){ struct student stu[3] = {{1101, ”Liu“, 21}, {11102, ”Tao“, 22}, {1103, ”Xu“, 23}};func(stu + 1);
return 0;}
void func(struct student *p){ printf(”%s“, p->name);}(A)Tao(B)Liu(C)Xu(D)11102 207 以下程序的输出结果是: #include
struct student { int num;int *q;};
int main(void){ int age[3] = {16, 17, 18};struct student stu[3] = {{1001, &age[0]}, {1003, &age[1]}, {1005, &age[2]}};struct student *p = stu;
printf(”%d,%d",(p+1)->num, *((p+1)->q));return 0;}(A)1003,17(B)1001,16(C)1005,18(D)1003,16