c语言习题及答案.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
28
积分
还剩页未读,继续阅读
关 键 词:语言
习题
答案
资源描述:
校园网.新视野教育全国计算机等级考试二级C语言教程课后习题解析
说明:
1、原先的少部分题目有错,请用红色的部分替换掉;
2、如果红色部分有文字“删除该行”,就直接删除该行;
第一章 C语言的基础知识
第一节 对C语言的初步认识
习题
1. 下列叙述中错误的是 B
A)任何一个C程序都必须有且仅有一个main函数,C语言总是从main函数开始执行。
B)C语言中的变量,可以先使用后定义。
C)所有的C语言语句最后都必须有一个分号
D)C程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。
第二节 熟悉Visual C++
习题
1. C语言源程序名的后缀是 B
A).exe B).c C).obj D).cp
2. 下列叙述中错误的是 D
A)计算机不能直接执行用C语言编写的源程序
B)C程序经C编译后,生成后缀为.obj的文件是一个二进制文件
C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件
D)后缀为.obj和.exe的二进制文件都可以直接运行
3. 用C语言编写的代码程序 B
A)可立即执行B)是一个源程序
C)经过编译即可执行D)经过编译解释才能执行
第三节标识符
习题
1. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是 B
A)大写字母 B)连接符 C)数字字符 D)下划线
2. 以下选项中不合法的标识符是 C
A)print B)FOR C)&a D)_00
3. 以下叙述中错误的是 A
A)用户所定义的标识符允许使用关键字
B)用户所定义的标识符应尽量做到“见名知意”
C)用户所定义的标识符必须以字母或下划线开头
D)用户定义的标识符中,大、小写字母代表不同标识
4. 可在C程序中用作用户标识符的一组标识符是 A
A)and B)Date C)Hi D)case
_2007 y-m-d Dr.Tom Bigl
5. 以下不合法的用户标识符是 C
A)j2_KEY B)Double C)4d D)_8_
6. 以下不能定义为用户标识符的是 D
A)MainB)_0C)_intD)sizeof
7. 下列选项中,不能用作标识符的是 D
A)_1234_B)_1_2C)int_2_ D)2_int_
8. 以下4组用户定义标识符中,全部合法的一组是 A
A)_main B)If C)txtD)int
enclude -max REAL k_2
sin turbo 3COM _001
第四节 数制转换
习题
1.十进制整数360的八进制为__________,十六进制为_____________。 550 168
第五节 整数和实数
习题
1.以下选项中正确的整型常量是 C
A)10110BB)0386C)0Xffa D)x2a2
2.以下关于long、int和short类型数据占用内存大小的叙述中正确的是 D
A)均占4个字节 B)根据数据的大小来决定所占内存的字节数
C)由用户自己定义 D)由C语言编译系统决定
3.以下选项中不属于C语言的类型的是 D
A)signed short int B)unsigned long int
C)unsigned int D)long short
4.以下选项中合法的实型常数是C
A)5E2.0 B)E-3C).2E0 D)1.3E
5.以下选项中,不能作为合法常量的是 B
A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0
6.以下选项中可作为C语言合法常量的是 A
A)-80.B)-080C)-8e1.0D)-80.0e
7.以下符合C语言语法的实型常量是 C
A)1.2E0.5 B)3.14.15 9EC).5E-3D)E15
8.以下不合法的数值常量是 C
A)011 B)lel C)8.0E0.5 D)0xabcd
9.以下选项中,合法的一组C语言数值常量是 B
A)028 B)12. C).177 D)0x8A
5e-3 OXa23 4c1.5 10,000
-0xf 4.5e0 Oabc 3.e5
10.下列定义变量的语句错误的是 D
A)int _int ;B)double int_;C)long For;D)float US$;
第六节 算术表达式与赋值表达式
习题
1.表达式3.6-5/2+1.2+5%2的值是 D
A)4.3 B)4.8 C)3.3 D)3.8
2.设有定义:float x=123.4567;,则执行以下语句后输出的结果是 _____。123.46
printf("%f\n",(int)(x*100+0.5)/100.0);
3.设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式 h 计算结果不相符的是 B
A)(a+b)*h/2 B)(1/2)*(a+b)*h
C)(a+b)*h*1/2 D)h/2*(a+b)
第七节 自加自减运算符、逗号表达式
习题
1.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为______。3
2.设有定义:int k=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是 A
A)k++ B)k+=1 C)++k D)k+1
3.有以下程序 B
main()
{
char a1=M, a2=m;
printf("%c\n", (a1, a2) );
}
以下叙述中正确的是
A)程序输出大写字母M B)程序输出小写字母m
C)格式说明符不足,编译出错D)程序运行时产生出错信息
4.有以下程序:B
main( )
{int a=0,b=0;
a =10; /*给a赋值
b=20; 给b赋值 */
printf("a+b=%d\n",a+b); /*输出计算结果*/
}
程序运行后的结果是
A)a+b=30 B)a+b=10 C)30 D)程序出错
第八节 字 符
习题
1.以下选项中不属于字符常量的是( )。B
A)C B)"C" C)0 D)\072
2.已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是( )。B
A)kk>=A&&kk<=Z B)!(kk>=A‖kk<=Z)
C)(kk+32)>=a&&(kk+32)<=z D)kk>=48 && kk<91
3.已知字符A的ASCⅡ代码值是65,字符变量c1的值是A,c2的值是D。执行语句printf("%d,%d",c1,c2-2);后,输出结果是( )。C
A)A,B B)A,68 C)65,66D)65,68
4.以(25)以下合法的字符型常量是
A)\x13B)\018C)65 D)\n
5.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是( )。D
A)c=c-Z + z B)c=c+32
C)c=c-A + a D)c=A+ c-a
第九节 位运算
习题
1.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是 A
A)a^bB)a|bC) a&bD)a<<4
2.有以下程序
#include main()
{
int a=1,b=2,c=3,x;
x=(a^b)&c; printf("%d\n",x);
}
程序的运行结果是 D
A)0B)1C)2D)3
3.有以下程序
main()
{
unsigned char a=2,b=4,c=5,d;
d=a|b; d&=c; printf("%d\n",d);
}
程序运行后的输出结果是 B
A)3 B)4C)5D)6
4.若变量已正确定义,则以下语句的输出结果是( )。 B
s=32; s^=32; printf("%d",s);
A)-1B)0C)1D)32
5.设有以下语句
int a=1,b=2,c;
c=a^(b<<2);
执行后,c的值为 D
A)6 B) 7 C) 8 D) 9
第二章 数据输出与输入
第一节 第二节 数据输出 2节合在一起只有1个课件
习题
1.有以下程序段
char ch;
int k;
ch=a;
k=12;
printf("%c,%d,",ch,ch,k);
printf("k=%d\n",k);
已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是 D
A)因变量类型与格式描述符的类型不匹配输出无定值
B)输出项与格式描述符个数不符,输出为零值或不定值
C)a,97,12k=12
D)a,97,k=12
2.若变量已正确定义,有以下程序段 删除该题
int a=3,b=5,c=7;
if(a>b) a=b; c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是 B
A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7
3.有以下程序,其中%u表示按无符号整数输出
main()
{
unsigned short x=0xFFFF;/* x的初值为十六进制数 */
printf("%u\n",x);
}
程序运行后的输出结果是 B
A)-1 B)65535 C)32767 D)0XFFFF
4.以下叙述中不正确的是 A
A)调用printf函数时,必须要有输出项
B)使用putchar函数时,必须在之前包含头文件stdio.h
C)在C语言中,整数可以以十进制、八进制或十六进制的形式输出
D)使用putchar函数可以不要输出项
5.设有以下程序
main()
{
int c=35; printf("%d", c&c);
}
程序运行后的输出结果是 C
A)0 B)70 C)35 D)53
6.以下程序运行后的输出结果是______________。88
main()
{
int x=0210; printf("%X\n",x);
}
第三节 数据输入
习题
1.以下程序运行时若从键盘输入:10 20 30。输出结果是____。A
#include main()
{
int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d,%d,%d",i,j,k);
}
A)10,30,0 B)10,20,30 C)0,0,0 D)程序出错
2.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33。输出结果是 A
#include "stdio.h"
main()
{
char a,b;
a=getchar(); scanf("%d",&b);
a=a-A+0;
b=b*2;
printf("%c %c",a,b);
}
A)程序段有语法错 B)1 B C)1 65 D)1 b
3.有以下程序
main()
{
int m=0256,n=256;
printf("%o %o\n",m,n);
}
程序运行后的输出结果是( )。
A)0256 0400B)0256 256C)256 400D)400 400
4.有以下程序
main()
{
int a=666, b=888;
printf("%d\n",a,b);
}
程序运行后的输出结果是( )。B
A)错误信息 B)666 C)888 D)666,888
5.设有以下程序
main( )
{
int x=102,y=012;
printf("%2d,%d\n",x,y);
}
执行后输出结果是C
A)10,01 B)02,12 C)102,10 D)02,10
6.执行以下程序时输入1234567,则输出结果是________。
#include main()
{
int a=1,b;
scanf("%2d%2d",&a,&b);printf("%d %d\n",a,b);
}
第三章 选择结构
第一节 关系运算与逻辑运算
习题
1.已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是 B
A) kk>=A&&kk<=Z B) !(kk>=A‖kk<=Z)
C) (kk+32)>=a&&(kk+32)<=z D) isalpha(kk)&&(kk<91)
2.当变量c的值不为2、4、6时,值也为“真”的表达式是 B
A) (c==2)‖(c==4)‖(c==6) B) (c>=2&&c<=6)‖(c!=3)‖(c!=5)
C) (c>=2&&c<=6)&&!(c%2) D) (c>=2&&c<=6)&&(c%2!=1)
3.以下选项中,当x为大于1的奇数时,值为0的表达式 D
A) x%2==1 B) x/2 C) x%2!=0 D) x%2==0
4.以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。D
A)只能是整数0和1 B)只能是整数0或非0整数
C)可以是结构体类型的数据 D)可以是任意合法的表达式
5.设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是C
A)k=k>=k B)-k++ C)k%int(f) D)k>=f>=m
6.设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是A
A)(!a==1)&&(!b==0)B)(!a==1)||(!b==0)
C)a && b D)a||(b+b)&&(c-a)
第二节 if语句
习题
1.若变量已正确定义,有以下程序段
int a=3,b=5,c=7;
if(a>b) a=b; c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是 B
A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7
2.当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是 D
A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==1
3.下列条件语句中,功能与其他语句不同的是 D
A) if(a) printf("%d\n",x); else printf("%d\n",y);
B) if(a==0) printf("%d\n",y); else printf("%d\n",x);
C) if (a!=0) printf("%d\n",x); else printf("%d\n",y);
D) if(a==0) printf("%d\n",x); else printf("%d\n",y);
4.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是 C
A)if(x++) ; B)if(x>y&y!=0);
C)if(x>y)x- - D)if(y<0) {;}
else y++: else x++;
第三节 嵌套的if语句
习题
1.在嵌套使用if语句时,C语言规定else总是 C
A)和之前与其具有相同缩进位置的if配对 B)和之前与其最近的if配对
C)和之前与其最近的且不带else的if配对 D)和之前的第一个if配对
2.有以下程序
main( )
{inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2)
}
执行后输出结果是 D
A)2 B)3 C)4 D)编译时有错,无结果
3.以下程序的输出结果是 C
main( )
{ int a=5,b=4,c=6,d;
printf("%d\n",d=a>b?(a>c?a:c):(b));
}
A)5B) 4 C) 6 D) 不确定
第四节 条件表达式、switch语句、goto语句
习题
1.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是 A
A)if((a>b) &&(b>c) ) k=1; B)if((a>b) ||(b>c) ) k=1;
else k=0; else k=0;
C)if(a<=b) k=0; D)if(a>b) k=1;
else if(b<=c) k=1; else if(b>c) k=1;
else k=0;
2.下列叙述中正确的是 D
A)beak语句只能用于switch
B)在switch语句中必须使用default
C)break语句必须与switch语句中的case配对使用
D)在switch语句中,不一定使用break语句
3.有以下程序段 B
int k=0,a=1,b=2,c=3;
k=ac?c:k;
执行该程序段后,k 的值是
A)3 B)2 C)1 D)0
4.有以下程序 D
#include 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++;
}
printf("a=%d,b=%d\n",a,b);
}
程序的运行结果是
A)a=1,b=0 B)a=2,b=2C)a=1,b=1 D)a=2,b=1
5.以下叙述中正确的是 C
A)break语句只能用于switch语句题中
B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环
C)break 语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
6.有以下程序
main()
{
int k=5,n=0;
do
{
switch(k)
{case 1: case 3:n+=1; break;
default :n=0;k--;
case 2: case 4:n+=2;k--;break;
}
printf(“%d”,n);
}while(k>0&&n<5);
}
程序运行后的输出结果是
A)235 B)0235 C)02356 D)2345
第四章 循环结构
第一节 while语句
习题
1.有以下程序
main()
{int y=10;
while(y--); printf("y=%d\n",y);
}
程序执行后的输出结果是 B
A) y=0 B)y=-1 C)y=1 D)while构成无限循环
2.有以下程序
main()
{
int k=5;
while(--k) printf("%d",k-=3);
printf("\n");
}
执行后的输出结果是 A
A)1 B)2C)4D)死循环
第二节 do-while语句
习题
1.若变量已正确定义,有以下程序段
i=0;
do
printf("%d,",i);
while(i++);
printf("%d\n",i)
其输出结果是 B
A)0,0 B)0,1 C)1,1 D)程序进入无限循环
2.有以下程序段 D
int n,t=1,s=0;
scanf("%d",&n);
do{ s=s+t; t=t-2; }while (t!=n);
为使此程序段不陷入死循环,从键盘输入的数据应该是
A)任意正奇数 B)任意负偶数 C)任意正偶数 D)任意负奇数
3.以下程序的功能是:将输入的正整数按逆序输出。例如,若输入135,则输出531,请填空。n/=10
#include main()
{
int n,s;
printf("Enter a number:"); scanf("%d",&n);
printf("Output: ");
do
{
s=n%10; printf("%d",s);
_____;
} while(n!=0);
printf("\n");
}
第三节 for语句
习题
1.有以下程序
#include main()
{
int x=8;
for( ; x>0; x--)
{
if(x%3)
{
printf("%d, ",x--);
continue;
}
printf("%d, ",--x);
}
}
程序的运行结果是 D
A)7,4,2 B)8,7,5,2C)9,7,6,4D)8,5,4,2
2.以下不构成无限循环的语句或者语句组是 A
A)n=0; B)n=0;
do{++n;}while(n<=0); while(1){n++;}
C)n=10; D)for(n=0,i=1; ;i++) n+=i;
while(n); {n--;}
第四节 循环结构的嵌套
习题
1.有以下程序
main( )
{
int i,n=0;
for(i=2;i<5;i++)
{
do
{
if(i%3) continue;
n++;
} while(!i);
n++;
}
printf("n=%d\n",n);
}
程序执行后的输出结果是 D
A)n=5 B)n=2 C)n=3 D)n=4
2.有以下程序
main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2) continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序执行后的输出结果是 B
A)x=4 B)x=8 C)x=6 D)x=12
3.下面程序的功能是输出以下形式的金字塔图案
*
***
*****
*******
main( )
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++) printf(" ");
for(j=1;j<=_______;j++) printf("*");
printf("\n");
}
}
在下划线处应填入的是 B
A)i B)2*i-1 C)2*i+1 D)i+2
第五节 循环结构的分析方法
习题
1.以下程序段中的变量已正确定义
for(i=0;j<4;i++,i++)
for(k=1;k<3;k++); printf("*");
程序段的输出结果是( ) D
A)********B)****C)**D)*
第五章 函 数
第一节 函数的定义、库函数
习题
1.在C语言中,函数返回值的类型最终取决于A
A)函数定义时在函数首部所说明的函数类型
B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型
D)函数定义时形参的类型
2.有以下函数
int fun(char *s)
{
char *t=s;
while(*t++);
return(t-s);
}
该函数的功能是 B
A)比较两个字符的大小 B)计算s所指字符串占用内存字节的个数
C)计算s所指字符串的长度 D)将s所指字符串复制到字符串t中
3.程序中对fun函数有如下说明 C
void *fun();
此说明的含义是
A)fun函数无返回值
B)fun函数的返回值可以是任意的数据类型
C)fun函数的返回值是无值型的指针类型
D)指针fun指向一个函数,该函数无返回值
第二节 函数的调用与函数说明
习题
1.有以下程序
#include int f(int x)
{
int y;
if(x==0||x==1) return (3);
y=x*x-f(x-2);
return y;
}
main()
{
int z;
z=f(3);
printf("%d\n",z);
}
程序的运行结果是 C
A)0 B)9 C)6 D)8
2.以下叙述中错误的是 C
A)改变函数形参的值,不会改变对应实参的值
B)函数可以返回地址值
C)可以在函数内部定义函数
D)调用sin函数需要包含头文件math.h
3.若程序中定义了以下函数
double myadd(double a, double b)
{
return (a+b);
}
并将其放在调用语句之后,则在调用之前应进行函数声明,以下选项中错误的是 A
A)double myadd(double a, b); B)double myadd(double, double);
C)double myadd(double b, double a); D)double myadd(double x, double y);
第三节 函数的数据传递
习题
1.有以下程序
void f(int v , int w)
{
int t;
t=v;v=w;w=t;
}
main( )
{
int x=1,y=3,z=2;
if(x>y)
f(x,y);
else if(y>z)
f(y,z);
else
f(x,z);
printf("%d,%d,%d\n",x,y,z);
}
执行后输出结果是 C
A)1,2,3 B)3,1,2 C)1,3,2 D)2,3,1
2.以下程序的输出结果是_________。 1 3
#includevoid fun(int x)
{
if(x/2>0)
fun(x/2);
printf("%d ",x);
}
main()
{
fun(3);
printf("\n");
}
第六章 指 针
第一节 变量的地址和指针
习题
1.以下叙述中错误的是 C
A)改变函数形参的值,不会改变对应实参的值
B)函数可以返回地址值
C)可以给指针变量赋一个整数作为地址值
D)当在程序的开头包含文件stdio.h时,可以给指针变量赋NULL
2.以下定义语句中正确的是 D
A) int a=b=0 ; B) char ‘A’=65+1,b=b;
C) float a=1,*b=&a,*c=&b ; D) double a=0.0,b=1.1;
3.设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是D
A) float *p=1024; B) int *p=(float x);
C) float p=&x; D) float *P=&x;
第二节 指针变量赋值及运算
习题
1.设有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是 D
A)p=1;B)*q=2; C)q=p;D)*p=5;
2.有以下程序
main()
{
int a=1,b=3,c=5;
int *p1=&a, *p2=&b, *p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是 C
A)1 B)2 C)3 D)4
3.设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是 A
A)*p=*q; B)p=q; C)*p=&n1; D)p=*q;
4.有以下程序
#include main()
{
int n,*p=NULL;
*p=&n;
printf("Input n: "); scanf("%d",&p);
printf("output n: "); printf("%d\n",p);
}
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是A
A)int n,*p=NULL; B)*p=&n;
C)scanf("%d",&p) D)printf("%d\n",p);
第三节 函数之间地址值的传递
习题
1.以下程序的功能是:利用指针指向3个整型变量,并通过指针运算找出3个数中的最大值,输出到屏幕上,请填空:*pmax=x; (或者max=x)
main()
{
int x,y,z,max,*px,*py,*pz,*pmax;
scanf("%d%d%d",&x,&y,&z);
px=&x;
py=&y;
pz=&z;
pmax=&max;
__________________
if(*pmax
void swap(int *a,int *b)
{
int *t;
t=a; a=b; b=t;
}
main()
{
int i=3, j=5, *p=&i, *q=&j;
swap(p,q);
printf("%d %d\n",*p,*q);
}
第七章 数 组
第一节 一维数组
习题
1.有以下程序段
int j; float y; char name[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入55566 7777abc后,y的值为 B
A)55566.0 B)566.0 C)7777.0 D)566777.0
2.有以下程序
main()
{
char ch[]="uvwxyz",*pc;
pc=ch; printf("%c\n",*(pc+5));
}
程序运行后的输出结果是 A
A)z B)0 C)元素ch[5]地址D)字符y的地址
3.有以下程序
#include main()
{
int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++) c[s[i]]++;
for(i=1;i<5;i++) printf("%d",c[i]);
printf("\n");
}
程序的运行结果是 C
A)1 2 3 4 B)2 3 4 4 C)4 3 3 2 D)1 1 2 3
第二节 二维数组
习题
1.以下错误的定义语句是 C
A)int x[][3]={{0},{1},{1,2,3}};
B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)int x[][3]={1,2,3,4};
2.若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是 D
A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][ !1]
3.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是B
A)a[0][4] B)a[1][3] C)a[0][3] D)a[1][4]
第三节 数组应用举例
习题
1.有以下程序
main()
{int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0; i<3; i++)
printf("%d", t[2-i][i]);
}
程序执行后的输出结果是B
A) 7 5 3 B) 3 5 7 C) 3 6 9 D) 7 5 1
2.有以下程序
main()
{
int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,k,t;
for(i=0;i<3;i++)
for(k=i+i;k<4;k++)
if(a[ i ][ i ]< a[ k ][ k ])
{t = a[ i ][ i ];
a[ i ][ i ]= a[ k ][ k ];
a[ k ][ k ]=t;
}
For(i=0;i<4;i++)
printf("%d,",a[0][ i ]);
}
程序运行后的输出结果是 B
A)6,2,1,1, B)6,4,3,2, C)1,1,2,6, D)2,3,4,6,
3.有以下程序
main()
{
int a[4][4]={{1,4,3,2,},{8,6,5,7,},{3,7,2,5,},{4,8,6,1,}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][ i]>a[k][ i])
{t=a[j][ i];a[j][ i ]=a[k][ i ];a[k][ i]=t;}/*按列排序*/
for(i=0;i<4;i++)
printf("%d, ",a[ i ][j]);
}
程序运行后的输出结果是 A
A)1,2,5,7, B)8,7,3,1, C)4,7,5,2, D)1,6,2,1,
第八章 字符串
第一节 字符串与字符串数组
习题
1.以下关于字符串的叙述正确的是 D
A)C语言中有字符串类型的常量和变量
B)两个字符串中的字符个数相同时才能进行字符串大小的比较
C)可以用关系运算符对字符串的大小进行比较
D)空串一定比空格打头的字符串小
2.以下正确的字符串常量是 D
A)"\\\" B)abc C) OlympicGames D)""
3.设有如下程序段 A
char s[20]= "Bejing",*p;
p=s;
则执行p=s;语句后,以下叙述正确的是
A)可以用*p表示s[0]
B)s数组中元素的个数和p所指字符串长度相等
C)s和p都是指针变量
D)数组s中的内容和指针变量p中的内容相等
4.以下能正确定义字符串的语句是D
A)char str[]={ \064}; B)char str="\x43";
C)char str="; D)char str[]="\0";
第二节 字符串的输入输出
习题
1.当用户要求输入的字符串中含有空格时,应使用的输入函数是B
A) scanf() B) getchar() C) gets() D) getc()
2.有以下程序
#include void fun(char *a,char *b)
{
while(*a==*) a++;
while(*b=*a) {b++;a++;}
}
main()
{
char *s=”****a*b****”,t[80];
fun(s,t); puts(t);
}
程序的运行结果是 C
A) *****a*b B) a*b C) a*b**** D) ab
第三节 对字符串的操作
习题
1.若有定义:char *x="abcdefghi";,以下选项中正确运用了strcpy函数的是 D
A)char y[10]; strcpy(y,x[4]);
B)char y[10]; strcpy(++y,&x[1]);
C)char y[10],*s; strcpy(s=y+5,x);
D)char y[10],*s; strcpy(s=y+1,x+1);
2.有以下程序
#include main()
{
char p[20]={ a, b, c, d},q[]="abc", r[]="abcde"
strcat(p,r);
strcpy(p+strlen(q),q);
printf("%d \n",strlen(p));
}
程序运行后的输出结果是
A) 9 B) 6 C) 11 D) 7
3.有以下程序
#include void f(char p[][10], int n ) /* 字符串从小到大排序 */
{
char t[10]; int i,j;
for(i=0; i<9; i++)改成for(i=0;i0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[i],t); 改成strcpy(p[j],t);
}
}
main()
{
char p[5][10]={ "abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
程序运行后的输出结果是 D改成C
A) 2 B) 4 C) 6 D) 3
第九章 文 件
第一节 文件的基础知识
习题
1.以下叙述中正确的是 D
A)C语言中文件是流式文件,因此只能顺序存取数据
B)打开一个已存在的文件进行了写操作后,原有文件中的全部数据必定被覆盖
C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D)当对文件的读(写)操作完成之后,应关闭文件,否则可能导致数据丢失
2.以下叙述中错误的是 C
A)C语言中对二进制文件的访问速度比文本文件快
B)C语言中,随机文件以二进制代码形式存储数据
C)语句 FILE fp; 定义了一个名为fp的文件指针
D)C语言中的文本文件以ASCII码形式存储数据
第二节文件的操作
习题
1.以下叙述中错误的是 B
A)gets函数用于从终端读入字符串
B)getchar函数用于从磁盘文件读入字符
C)fputs函数用于把字符串输出到文件
D)fwrite函数用于以二进制形式输出数据到文件
2.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp); ,其中buffer代表的是C
A)一个文件指针,指向待读取的文件
B)一个整型变量,代表待读取的数据的字节数
C)一个内存块的首地址,代表读入数据存放的地址
D)一个内存块的字节数
3.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为 B
A)EOF B)非0值 C) 0 D)NULL
第三节 文件例题
习题
1.有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)
#include main( )
{
FILE *fp; int i,a[4]={1,2,3,4},b;
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:c语言习题及答案.doc
链接地址:https://www.renrendoc.com/p-61373819.html