c语言练习试题及答案
选择题
(1)算法的空间复杂度是指
A)算法程序的长度
B)算法程序中的指令条数
C)算法程序所占的存储空间
D)执行过程中所需要的存储空间
(2)用链表表示线性表的优点是
A)便于随机存取
B)花费的存储空间较顺序存储少
C)便于插入和删除操作
D)数据元素的物理顺序与逻辑顺序相同
(3)数据结构中,与所使用的计算机无关的是数据的
A)存储结构
B)物理结构
C)逻辑结构
D)物理和存储结构
(4)结构化程序设计主要强调的是
A)程序的规模
B)程序的效率
C)程序设计语言的先进性
D)程序易读性
(5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指
A)模块间的关系
B)系统结构部件转换成软件的过程描述
C)软件层次结构
D)软件开发过程
(6)检查软件产品是否符合需求定义的过程称为
A)确认测试
B)集成测试
C)验证测试
D)验收测试
(7)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
A)控制流
B)加工
C)数据存储
D)源和潭
(8)应用数据库的主要目的是
A)解决数据保密问题
B)解决数据完整性问题
C)解决数据共享问题
D)解决数据量大的`问题
(9)在数据库设计中,将E-R图转换成关系数据模型的过程属于
A)需求分析阶段
B)逻辑设计阶段
C)概念设计阶段
D)物理设计阶段
(10)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是
A)数据库系统
B)文件系统
C)人工管理
D)数据项管理
(11)以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)C函数定义的格式是K&R格式
(12)结构化程序所规定的三种最基本控制结构是
A)输入、处理、输出
B)树形、网形、环形
C)顺序、选择、循环
D)主程序、子程序、函数
(13)一个C语言程序是由
A)一个主程序和若干子程序组成
B)函数组成
C)若干过程组成
D)若干子程序组成
(14)请选出可用作C语言用户标识符的是
A)void,define,WORD
B)a3_b3,_123,IF
C)FOR,--abc,Case
D)2a,Do,Sizeof
(15)下列各数据类型不属于构造类型的是
A)枚举型
B)共用型
C)结构型
D)数组型
(16)在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是
A)a=20000+20000;
B)a=4000*10;
C)a=30000+10000;
D)a=4000L*10L
(17)以下不正确的叙述是
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
(18)sizeof(float)是
A)一个双精度型表达式
B)一个整型表达式
C)一种函数调用
D)一个不合法的表达式
(19)若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为
A)4
B)16
C)32
D)52
(20)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。
#include
main()
{ int i=0,j,k;
do{i++;k=316-13*i;}while(______);
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
A)k/11
B)k
C)k/11==0
D)k==0
(21)设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
(22)下面程序的运行结果是
#include
main()
{ int y=10;
do{y--;}while(--y);
printf("%d\n",y--);
}
A)-1
B)1
C)8
D)0
(23)下面程序的输出结果是
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
A)3
B)4
C)1
D)2
(24)有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=&a[3],b;b=p[5];
则b的值是
A)5
B)6
C)9
D)8
(25)设有int x=11;则表达式(x++*1/3)的值是
A)3
B)4
C)11
D)12
26)请选出以下语句的输出结果
printf("%d\n",strlen("\t\"\065\xff\n"));
A)5
B)14
C)8
D)输出项不合法,无正常输出
(27)下列程序的输出结果是
main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf("%d\n", d*y);
}
A)3
B)3.2
C)0
D)3.07
(28)下列程序的输出结果是
int b=2;
int func(int *a)
{ b += *a; return(b);}
main()
{ int a=2, res=2;
res += func(&a);
printf("%d\n",res);
}
A)4
B)6
C)8
D)10
(29)下面能正确进行字符串赋值操作的是
A)char s[5]={"ABCDE"};
B)char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};
C)char *s;s="ABCDE";
D)char *s;char a; scanf("%s",&s);
(30)执行以下程序后,a,b的值分别为
main()
{ int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
A)-1,5
B)1,6
C)0,7
D)4,10
(31)设有数组定义: char array[]="China"; 则数组 array所占的空间为
A)4个字节
B)5个字节
C)6个字节
D)7个字节
(32)若已定义:
int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;
其中 0≤i≤9, 则对a数组元素不正确的引用是
A)a[p-a]
B)*(&a[i])
C)p[i]
D)a[10]
(33)以下不正确的定义语句是
A)double x[5]={2.0,4.0,6.0,8.0,10.0};
B)int y[5]={0,1,3,5,7,9};
C)char c1[]={′1′,′2′,′3′,′4′,′5′};
D)char c2[]={′\x10′,′\xa′,′\x8′};
(34)若有以下程序
#include
int a[]={2,4,6,8};
main()
{ int i;
int *p=a;
for(i=0;i<4;i++)a[i]=*p;
printf("%d\n",a[2]);
}
上面程序输出结果是
A)6
B)8
C)4
D)2
(35)下面程序段的运行结果是
char *format="%s,a=%d,b=%d\n";
int a=11,b=10;
a+=b;
printf(format,"a+=b",a,b);
A)for,"a+=b",ab
B)format,"a+=b"
C)a+=b,a=21,b=10
D)以上结果都不对
(36)C语言允许函数类型缺省定义,此时函数值隐含的类型是
A)float
B)int
C)long
D)double
(37)以下程序有语法错误,有关错误原因的正确说法是
main()
{ int G=5,k;
void prt_char();
...
k=prt_char(G);
...
}
A)语句 void prt_char();有错,它是函数调用语句,不能用void说明
B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾
D)函数名不能使用下划线
(38)以下叙述中不正确的是
A)在不同的函数中可以使用相同的名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
(39)有以下程序:
#include
union pw
{ int i;
char ch[2];}a;
main()
{a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}
程序的输出结果是
A)13
B)14
C)208
D)209
(40)在16位IBM-PC机上使用C语言,若有如下定义
struct data
{ int i;
char ch;
double f;
} b;
则结构变量b占用内存的字节数是
A)1
B)2
C)7
D)11
(41)下面程序的运行结果是
#include
main()
{ int a=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("a=%d,b=%d\n",a,b);
}
A)a=3,b=11
B)a=2,b=8
C)a=1,b=-1
D)a=4,b=9
(42)以下程序的输出结果是
void reverse(int a[],int n)
{ int i,t;
for(i=0;i
{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf(" %d\n ",s);
}
A)22
B)10
C)34
D)30
(43)有如下程序:
long fib(int n)
{ if(n>2)return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{ printf("%d\n",fib(3));}
该程序的输出结果是
A)2
B)4
C)6
D)8
(44)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:
PROG ABCDEFGH IJKL<回车>,则输出结果为
main( int argc, char *argv[])
{ while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
A)ABCDEFG
B)IJHL
C)ABCDEFGHIJKL
D)IJKLABCDEFGH
(45)以下程序有错,错误原因是
main()
{ int *p,i;char *q,ch;
p=&i;
q=&ch;
*p=40;
*p=*q;
......
}
A)p和q的类型不一致,不能执行*p=*q;语句
B)*p中存放的是地址值,因此不能执行*p=40;语句
C)q没有指向具体的存储单元,所以*q没有实际意义
D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
(46)函数 rewind 的作用是
A)使文件位置指针重新返回文件的开始位置
B)将文件位置指针指向文件中所要求的特定位置
C)使文件位置指针指向文件的末尾
D)使文件位置指针自动移至下一个字符位置
(47)设有以下说明语句
struct ex
{ int x ; float y; char z ;} example;
则下面的叙述中不正确的是
A)struct结构体类型的关键字
B)example是结构体类型名
C)x,y,z都是结构体成员名
D)struct ex是结构体类型名
(48)设有以下语句:
char x=3,y=6,z;
z=x^y<<2;
则z的二进制值是
A)00010100
B)00011011
C)00011100
D)00011000
(49)阅读以下程序及对程序功能的描述,其中正确的描述是
#include
main()
{
FILE *in,*out;
char ch,infile[10],outfile[10];
printf("Enter the infile name:\n");
scanf("%s",infile);
printf("Enter the outfile name:\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{
printf("cannot open infile\n");
exit(0);
}
if((out=fopen(outfile,"w"))==NULL)
{
printf("cannot open outfile\n");
exit(0);
}
while(! feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
A)程序完成将磁盘文件的信息在屏幕上显示的功能
B)程序完成将两个磁盘文件合二为一的功能
C)程序完成将一个磁盘文件复制到另一个磁盘文件中
D)程序完成将两个磁盘文件合并并在屏幕上输出
(50)C语言中,能识别处理的文件为
A)文本文件和数据块文件
B)文本文件和二进制文件
C)流文件和文本文件
D)数据文件和二进制文件
参考答案:
01-05 D C C D B
06-10 A A C B A
11-15 A C B B A
16-20 D D B C B
21-25 D D A C A
26-30 A C B C C
31-35 C D B D C
36-40 B C D A D
41-45 B A B D D
46-50 A B B C B
【c语言练习试题及答案】相关文章: