11自动化C程序设计复习资料.docx
《11自动化C程序设计复习资料.docx》由会员分享,可在线阅读,更多相关《11自动化C程序设计复习资料.docx(29页珍藏版)》请在冰豆网上搜索。
11自动化C程序设计复习资料
C程序设计辅导资料
一、填空题
1、C语言程序是函数构成的,其中有且只有1个主函数,程序的的执行总是从该函数开始。
2、在C语言中,正确的标识符是由字母、数字和下划线组成的。
3、定义一个符号常量PI,其值为3.1415926,格式是#definePI3.1415926。
4、结构化程序设计的三种基本结构是顺序结构、选择结构和循环结构。
5、下面运算符 < % ++ = 按照优先级从高到低排列顺序为_++,%,<,=________。
6、设整型变量X=5,Y=6,Z=7,执行X%=Y+Z后,X=5。
7、设x=4,y=(++x)+(++x);表达式执行后,变量x的值为6。
8、写出表达式25>15&&65<25||88>75的值1。
9、写出表达式66>65&&65<85||85>95的值1
10、表达式(int)(20+2.5*3+6+5.3)的值是38。
11、表达式m=a>b?
a+b:
b+5当a=15,b=11时,m的值为:
26;
12、用条件运算符写出求两个整数x,y中大数的表达式z=x>y?
x:
y。
13、写出下面表达式的值
3*5/7+7%3___3_________________
3+4>=7-10____1_________________
x=2,y=2;++x||++y____1___________
14、执行语句“for(j=15;j>=5;j--);”后,变量j的值为4。
15、执行语句“for(s=0,j=5;j<=25;j=j+5)s=s+j;”后,变量s的值为75。
16、C语言中解决嵌套if语句的else问题使用最近匹配原则,即规定else是和离它最近且未和任何else配对的if进行配对的,和代码的缩进无关。
17、函数的传值调用中,实际参数把它的值传递给形式参数参数。
18、函数形式参数的作用域是函数体。
19设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为_0-65535____。
20、能够构成一个数组,其元素满足的特点是___具有相同数据类型____________;
21、定义一个长度为10的整形一维数组a,且前5个元素的初值为3,6,9,12,15,定义的格式为:
inta[10]={3,6,9,12,15}。
22、定义一个长度为2行3列的整形二维数组a,元素的初值为6,12,18,24,30,36定义的格式为:
inta[2][3]={6,12,18,24,30,36}
23、若有inta[3]={10,12,30};则a+1是a[1]的地址。
24、C语言采用编译方式将源程序转换为二进制的目标代码,编写好一个C程序到完成运行一般经过以下几个步骤:
编辑、编译、连接、执行;
25、一个变量的指针是指______变量的地址_______________________。
26、在一个函数中有定义inta=21,*p=&a;执行*p=*p+15+a;后,a的值为57。
二、选择题
1、以下说法中正确的是( C )。
A.C语言程序总是从第一个函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
2、设整型变量a为5,使b不为2的表达式是( C )。
A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=a>3?
2:
1
3、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:
C程序中的else总是与( C )组成配对关系。
A.缩排位置相同的if B.在其之前未配对的if
C.在其之前未配对的最近的if D.同一行上的if
4、下列语句不具有赋值功能的是( C )
A.a*=b B.x=1 C.a+b D.a++
5、若有以下定义和语句:
inta,b,c;scanf(“%d%d%d”,&a,&b,&c);为了使1,3,2分别赋给a,b,c,从键盘上输入数据的正确形式是(A)
A132B1,3,2Ca=1b=3c=2Da=1,b=3,c=2
6、设a为存放整型的一维数组,如果a的首地址为P,那么a中第i个元素的地址为( C )。
A.P+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i
7、在C程序中有如下语句:
charfunc(intx,inty);它是( C )。
A.对函数func的定义。
B.对函数func的调用。
C.对函数func的原型说明。
D.不合法的。
8、下列描述中不正确的是( C )。
A.字符型数组中可以存放字符串。
B.可以对字符型数组进行整体输入、输出。
C.可以对整型数组进行整体输入、输出。
D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。
9、不能把字符串:
Hello!
赋给数组b的语句是( B )。
A.charb[10]={'H','e','l','l','o','!
'}; B.charb[10]; b="Hello!
";
C.charb[10]; strcpy(b,"Hello!
"); D.charb[10]="Hello!
";
10、表达式y=(132>122?
152:
6>7?
18:
9)的值为__C__________。
A 9 B 7 C 152 D. 18
11、以下程序的输出结果是(D)
#include
main()
{inti,j,k,a=3,b=2;
i=(--a==b++)?
--a:
++b;
j=a++;k=b;
Printf(“i=%d,j=%d,k=%d\n”,i,j,k);
}
(A)i=2,j=1,k=3(B)i=i,j=1,k=2
(C)i=4,j=2,k=4(D)i=1,j=1,k=3
12、一个C语言的源程序中(C)
(A)必须有主函数和其它函数(B)可以有多个主函数
(C)必须有一个主函数(D)可以没有主函数
13、有下列结构体,对该结构体变量stu的成员项引用正确的是( B )
struct student
{ int m;
float n;
}stu,*p;
A.stu.nm B.p->m C.*p.m D.p.stu.n
14、写出程序的运行结果(A)
voidmain()
{intn;
for(n=1;n<=10;n++)
{if(n%3==0)continue;
printf("%d",n);
}
}
(A)12457810(B)369
(C)12(D)12345678910
15、若输入ab,程序运行结果为(c)
voidmain()
{staticchara[2];
scanf("%s",a);
printf("%c,%c",a[1],a[2]);
}
(A)a,b(B)a,
(C)b,(D)程序出错
17、 在函数内,定义变量时存储类型符可省略的是 ( A)
A. auto B. static C. extern D. register
18、以下对二维数组a进行初始化不正确的是( C )
A.inta[2][3]={{1,2,3},{3,4,5}}; B.inta[][3]={1,2,3,4,5,6};
C.inta[2][]={1,2,3,4,5,6}; D.inta[2][3]={{1,2},{3,4}};
19、设有如下定义:
intx=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y));的输出结果是( D )。
A.1 B.0 C.4 D.3
20、若有说明:
inti,j=7,*p=&i;,则与i=j;等价的语句是( B )。
A.i=*p; B.*p=j; C.i=&j; D.i=**p;
21、函数调用strcat(strcpy(str1,str2),str3)的功能是(A)
A.将串str2复制到串str1中后,再将串str3连接到串str1之后
B.将串str1复制到串str2中后,再连接到串str3之后
C.将串str1复制到串str2中后,再复制到串str3之后
D.将串str2连接到串str1中后,再将串str1复制到串str3中
22、执行下列程序
int a[3][3]={{1},{2},{3}};
int b[3][3]={1,2,3};
voidmain()
{printf(″﹪d \ n″,a[1][0] + b[0][0]);}
后输出的结果是 (D )
A. 0 B. 1 C. 2 D. 3
23、执行下列程序
int a = 3, b = 4;
void fun(int x1, int x2)
{printf(″﹪d, ﹪d \ n″, x1 + x2, b);}
voidmain()
{int a = 5, b = 6;fun(a, b);}
后输出的结果是 (C )
A. 3,4 B. 11,1 C. 11,4 D. 11,6
24、设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,,&f);
为了把100和765.12分别赋给i和f,则正确的输入为(B)
A)100765.12B)i=100,f=765.12C)100765.12D)x=100y=765.12
25、为表示关系x≥y≥z,应使用C语言表达式__A_______
A)(x>=y)&&(y>=z)B(x>=y)AND(y>=z)
C)(x>=y>=z)D)(x>=y)&(y>=z)
26、设有如下定义:
intx=10,y=3,z;
则语句
printf("%d\n",z=(x%y,x/y));
的输出结果是____D__________
A)1B)0
C)4D)3
27、以下关于if语句的错误描述是(A)
A)条件表达式可以是任意的表达式
B)条件表达式只能是关系表达式或逻辑表达式
C)条件表达式的括号不可以省略
D)与else配对的if语句是其之前最近的未配对的if语句
28、以下程序的输出结果是(B)
voidmain()
{intm=5;
if(m++>5)printf("%d\n",m);
elseprintf("%d\n",m--);
}
A、7B、6C、5D、4
29、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是(C)
A、c=b=a;B、(a=c)||(b=c);C、(a=c)&&(b=c);D、a=c=b;
30、当执行以下程序段时(A )
x=-1;
do
{x=x*x;} while(!
x);
A、循环体将执行一次B、循环体将执行两次
C、循环体将执行无限次D、系统将提示有语法错误
31、已知有语句:
for(x=0,y=0;(y!
=123)&&(x<4);x++);则此for循环(C)
A、是无限循环B、循环次数不定C、执行4次D、执行3次
32、以下程序的输出结果是(A)
voidmain()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));
}
A、6B、5C、4D、不确定
33、以下程序段循环体的执行次数是(B)
voidmain()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)
printf("%d\n",i);
}
A、0B、1C、2D、3
34、在说明语句中有:
float(*fp)();则fp代表的是:
(C)
A一个用于指向一维数组的行指针;B一个返回值为实型的函数名;
C一个用于指向函数的指针变量;D一个指向实型数据的指针;
35、break语句的正确的用法是( B )。
A.无论在任何情况下,都中断程序的执行,退出到系统下一层。
B.在多重循环中,只能退出最靠近的那一层循环语句。
C.跳出多重循环。
D.只能修改控制变量。
36在函数中默认存储类型说明符的变量应该是__C____存储类型。
A.内部静态 B.外部 C.自动 D.寄存器
37.以下叙述中正确的是__A____。
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其它函数之前
D)所有被调用的函数一定要在调用之前进行定义
38以下选项中合法的用户标识符是__B____。
A)longB)_2TestC)3DmaxD)A.dat
39已知i、j、k为int型变量,若从键盘输入:
1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是__C____。
A)scanf("%2d%2d%2d",&i,&j,&k);
B)scanf(""%d%d%d",&i,&j,&k);
C)scanf("%d,%d,%d",&i,&j,&k);
D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);
40已知小写字母a的ASCII码值是97,大写字母A的ASCII码值是65,下列语句中不能输出大写字母B的是D。
A)putchar('A'+1);B)putchar('b'-32);C)putchar(98-32);D)putchar(B);
41下列程序段的输出结果是A。
floatx;
x=1+1%3*5/2;
printf("%f",x);
A)3.000000B)3C)3.500000D)8
42设inta=1,b=2,c=3,d=4,z;则表达式(a>b)?
(z=c):
(z=d)的值是C。
A)3B)0C)4D)1
43下列程序段的输出结果是B。
inta=5;
if(a++>5)printf("%d\n",a);
elseprintf("%d\n",a--);
A)7B)6C)5D)4
44运行下列程序段,输入AaBbDd并以回车键结束输入,则输出结果是B。
charch;ints=0;
while((ch=getchar())!
='\n')
switch(ch)
{case'A':
s++;
case'B':
s++;break;
case'D':
s++;
default:
s++;
}
printf("%d\n",s);
A)6B)8C)10D)12
45.下列程序段的输出结果是A。
inti,s=0;
for(i=1;i<=10;i++)
{if(i%2)continue;
s+=i;}
printf("%d\n",s);
A)30B)25C)0D)1
46.使用如下语句定义一个char型二维数组str,用来存放字符串"Pascal"、"Basic"、"C++",
charstr[M][N];
则M和N最合理取值应该是A。
A)3和7B)2和7C)2和6D)3和6
47下列程序段的输出结果是B。
inta[]={1,2,3,4},s=0,i;
for(i=3;i>=0;i-=2)
s=s*10+a[i];
printf("%d\n",s);
A)4321B)42C)1234D)13
48.用数组名作为函数调用时的实参,实际上传送给形参的是A
A)数组首地址B)数组的第一个元素值
C)数组中全部元素的值D)数组元素的个数
49.已知一个函数定义为:
voidfunc()
{
}
则void的含义是A。
A)执行该函数后没有返回值B)执行该函数后不返回
C)该函数可以返回任意类型的数据D)该函数返回整型数据
50定义函数时,如果省略函数的存储类型和数据类型,则默认的存储类型和数据类型分别是A。
A)auto和intB)extern和intC)auto和viodD)extern和void
51.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是D。
A)a,point,*&a
B)&*a,&a,*point
C)*&point,*point,&a
D)&a,&*point,point
52.若定义函数float*f(intx),则函数的返回值是B。
A)一个实数
B)一个指向实型变量的指针
C)一个指向实型函数的指针
D)一个指向整型变量的指针
53.根据下面的定义,能打印出字母M的语句是(C)。
structperson{charname[9];intage;};
structpersonc[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};
A)printf("%c",c[3].name);B)printf("%c",c[3].name[1]);
C)printf("%c",c[2].name[0]);D)printf("%c",c[3].name[0]);
54.若有以下的说明。
structperson
{intname[20];
intage;
charsex;
}a={"lining",20,'m'},*p=&a;
则对字符串lining的引用方式不可以是(B)
A)(*p).nameB)p.nameC)a.nameD)p->name
55、以下正确的描述是B。
在C语言程序中:
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套D)函数的定义和函数的调用均可以嵌套
56、以下正确的说法是B。
建立函数的目的之一是:
A)提高程序的执行效率B)提高程序的可读性C)减少程序的篇幅D)减少程序文件所占内存
57以下错误的描述是__B___。
A、break语句不能用于循环语句、switch语句外的任何其它语句
B、在switch语句中使用break语句或continue语句的作用相同
C、在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环
D、在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环
58.已知有声明“char*s=”happybirthday”,t[10];”,要求将s指向的字符串中“birthday”子串复制到t数组中并输出t数组中的字符串,正确的操作的是B。
A.puts(strcpy(t,s)); B.puts(strcpy(t,s+6));
C.puts(strcat(t,s)); D.puts(strcat(t,s+6));
59.已知有数据类型定义及变量声明如下:
struct
{int a;
struct{charname[10];}b;
}s={1,”mark”},*ps=&s;
则以下选项中能够输出“mark”的语句是 C 。
A.puts(name); B.puts(b.name) C.puts(s.b.name); D.puts(*p.b.name);
三、阅读程序题
(1)阅读下列程序:
voidmain()
{staticinta[][3]={9,7,5,3,1,2,4,6,8};
inti,j,s1=0,s2=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{if(i==j)s1=s1+a[i][j];
if(i+j==2)s2=s2+a[i][j];
}
printf(“%d\n%d\n”,s1,s2);}
程序的输出结果:
18
10
(2)阅读下列程序:
voidmain()
{intx,y=25;
x=-5+5*5+y;
printf("x=%dy=%d\n",x,y);
x=10+2*3-7;
y=y+10+2*3;
printf("x=%dy=%d\n",x,y);
x=(y+6)%5+y;
y=x+y;
printf("x=%dy=%d\n",x,y);
}
程序的输出结果:
x=45y=25
x=9y=41
x=43y=84
(3)阅读下列程序:
#include“stdio.h”
voidmain()
{
inti;
intcount(inti);
for(i=10;i<16;i=i+2)
count(i);
}
intcount(intn)
{staticintx=