电大《c语言程序设计》期末复习题docWord文件下载.docx
《电大《c语言程序设计》期末复习题docWord文件下载.docx》由会员分享,可在线阅读,更多相关《电大《c语言程序设计》期末复习题docWord文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
p=*s;
D.char*p;
p=s;
10.从一个数据
D.n-115.在下列的字符数组定义中,存在语法错误的是()o
A.chara[20]=ttabcdefg,\B.chara[]="
x+y=55C.
chara[15]={'
l'
'
2'
};
D.chara[10]=t5,;
16.若有一个
函数原型为"
double^function"
则它的返回值类型为()。
A.实
数型B.实数指针型C.函数指针型D.数组型
17.在C语言中,所有预处理命令都是以()符号开头的。
A.
*B.#C.D.@18.假定整数
指针p所指数据单元的值为30,p+1所指数据单元的值为40,则执行冷p++后,p所指数据单元的值为()。
A.40B.30
C.70D.1019.若要使p指向二维整型数组
a[10]f2()l,则p的类型为()。
A.int*B.int**C.
int*120]D.int(*)l20]20.表示文件结束符的符号常量
为()A.eofB.EofC.EOF
D.feof21.程序运行小需要从键盘上输入多于一个数据时,各数据之
间默认使用()符号作为分隔符。
A.空格或逗号B.逗号
或回年C.逗号或分号D.空格或回车22.逻辑表达
式(x0x=10)的相反表达式为()oA.x=0IIx10
B.x=0xlOC.x=0IIx=10D.xOxlO23.
当处理特定问题时的循环次数己知时,通常采用()循环來解决。
24.假定i的初值为0,则在循环语句"
while(in){s+=i*i;
i++;
}"
中循环体被执行的总次数为()。
A.B.n
C.n+1D.n/225.假定一个二维数组的定义语句为“int
滅3][4]二{{3,4},{2,8,6}};
”,则元索a[l][2]的值为()。
A.2
B.4C.6D.826.在下列选项中,不正
确的函数原型格式为()。
A.intFunction(inta);
B.voidFunction(char);
C.intFunction(a);
D.void
int(double*a);
27.假定p是一个指向float型数据的指针,则p+1所指
数据的地址比P所指数据的地址大(
)个字节。
D.828.
1
假定有定
B.2
C.4
义为“int
m=7,则给p赋值的正确表达式为()。
.
A・p=m
B・p=m
C.*p=m
D.p=
*m29.假定指
针变量
P
定义为r
int*p=malloc(sizeof(int));
要释放
p所指向的动态存储空间,
应
调用的函数为()。
free(p)
B.delete(p)
C.
free(*p)
D.free(p)
30.C语
言中的系统函数
fopen
是
)一个数据文件的函数。
A.读
取
B.写
入
C.关闭
D.打开
参考解答:
1.A2.B
B
4.B
5.D6・C7.A
8.C
9.A10.Bl1.
12.C
13.C14.A
15.
D16.B
17.
18.A
19.D20.C
21.D
22.A
23.
A
24.B
25.C26・C
27.C
28.B
29.
30.D
二、填空题1.C
语言中的每条简单语句以
作为结
束符。
2.C程序中的所有预处理命令均以字符开头。
3.
当不需要函数返回任何值时,则应使用标识符來定义函数类型。
4.十进制数25表示成符合C语言规则的十六进制数为o
5.假定不允许使用逻辑非操作符,则逻辑表达式abIIb==5的相反
表达式为。
6.执行“typedefintDataType;
?
语句后,
在使用int定义整型变量的地方也可以使用来定义整型变量。
7.假定一维数组的定义为“char*a[8];
”,则该数组所占存储空间的字节数为。
8.假定二维数组的定义为“doublea[M][N];
J则
该数组的列下标的取值范围在Z间。
9.存储一个空字符串
需要山用个字节。
10.strcpy函数用于把一个字符串
到另一个字符数组空间中。
11.程序的编译单位是一个。
12.假定a是一个一维数组,则a[i]的指针访问方式为o13.执行ini*p=malloc(sizeof(int))操作得到的一个动态
分配的整型对彖为。
14.执行“printf(“%c:
A,+2);
”语句后得
到的输出结果为。
15.shortint类型的长度为。
16.用类型关键字表示十进制常数3.26f的类型为。
17.假定y=10,则表达式++y*3的值为。
18.逻辑表达
式(x==0y5)的相反表达式为。
19.若x=5,y=10,则x!
=y
的逻辑值为。
2().假定二维数组的定义为“infa[3][5];
”,则
该数组所占存储空间的字节数为。
21.使用“typedefchar
BB[10][50];
M语旬定义为含有10行50列的二维字符数组类型。
22.字符串”a:
//xxk〃数据'
'
的长度为。
23.假定p所
指对象的值为25,p+1所指对象的值为46,则*++p的值为。
24.假定一个数据对彖为iM*类型,则指向该对彖的指针类型为o25.假定一个结构类型的定义为“structA{inta,b;
A*c;
”,
则该类型的长度为。
26.假定要访问一个结构对象x中的数
据成员a,则表示方式为。
27.用于输出表达式值的标
准输出函数的函数名是。
28.每个C语言程序文件在编译
时可能出现有致命性错误,其对应的标识符为。
29.已
知,的ASCII码为65-90,当执行“intx=tC,+3;
M语旬后x的值为。
30.表达式(int)14.6的值为。
31.假定不允许使用逻辑非操作符,则关系表达式x+y5的相反表达式为o32.假定x=5,则执行<
<
a=(x?
10:
20)r,语句后a的值为o33.假定一维数组的定义为"
char*a[M];
J则该数组所占存储空间的字节数为。
34.存储字符串”a”需要至少占用
存储器的个字节。
35.strlen函数用于计算一个字符串的
。
36.在C语言中,一个函数由函数头和这两
个部分组成。
37•假定p所指对象的值为25,p+1所指对象的值为46,
则执行表达式*(p++)后,p所指对彖的值为。
38.假定p是
一个指向整数对象的指针,则用表示指针变量p的地址。
39.
与结构成员访问表达式p-name等价的访问表达式为。
1.;
(或分
号)
2.#
3.void
4.0x19
5.a=bb!
=5
6.DataType
7.32
8.0~N・l9.
10.拷贝(复制)
11.程序文件
12
.*(a+i)13.
*p
14.C
16.float
17.33
18.(x!
=0IIy=5)
或:
(xIIy=5)
19.1
20.60
21.BB
22.11
46
24.int**
25.12
26.x.a27.
printf
28.
error
29.70
30.1431.x+y=5
32.10
33.
4*M
34.235.
360.函数
体
37.46
38.p39.
(*p).name
三、写出下
列每个程序运行后的输出结果1.#includestdio.h
voidmain
{intx=5;
switch(2*x-1)
{case4:
printfC'
%d"
x);
break;
case
7:
printf(<
4%d
2*x);
case10:
printf(u%d"
3
*x);
default:
printf(t4%s
“/default”);
}
printf(‘‘%s/n"
"
switchend.”);
}2.
#includestdio.h
voidmain{
intfl,f2,i;
fl=l;
printf(u%d
“,fl);
for(i=2;
i=5;
i++){
f2=3*fl+l;
printf(^%d<
4,f2);
fl=f2;
}printf(“/n'
);
}3.
#includestdio.hvoidmain{inta[10]={12,39,26,41,55,63,72,40,83,95};
inti,il=0,i2=0;
for(i=0;
i10;
i++)if(a[i]%2==1)il++;
elsei2++;
printf(4t%d%d/n'
\i1,i2);
}4.#includestdio.h#includestring.h
voidmain(){chars[15]="
567891234”;
inti,n=strlen(s);
in/2;
i++){charc=s[i];
s[i]=s[n-l-i];
s[n-1-i]=c;
}printf(44%s/n,,,s);
5.#includestdio.hintLB(int*a,intn){inti,s=1;
in;
i++)
$*=*&
++;
returns;
}voidmain{inta[]={1,2,3,4,2,4,5,2};
int
b=LB(a,4)+LB(a+3,3);
printf(t4b=%d/n,,,b);
}6.#includestdio.h
voidmain{inti,s=0;
for(i=1;
i6;
i++)s+=i*i;
printf(“s=%d/n"
s);
}
7.#includestdio.h#defineN6voidmain{int
i,a[N]={2,5,8,10,15,21};
iN;
i++)if(a[i]%5)printf(tt%d“,a[i]);
printf(47n^);
}8.#includestdio.h#includestring・hvoidmain
{inti;
unsignedintlen;
char*
a[5]={"
student”,”worker”,”cadre”「soldier”,”zzeasan123”};
len=strlen(a[O]);
for(i=1;
i5;
i++)if(strlen(a[i])len)len=strlen(a[i]);
printfC'
%d/n5\len);
}9.#includestdio.hvoidmain{inta,b;
for(a=2,b=3;
b20;
){printf(4*%d%d“,a,b);
a=a+b;
b=a+b;
)printf(<
t%d%d/n"
a,b);
}10.#includestdio.hvoidLE(int*a,int*b)
{intx=*a;
*a=*b;
*b=x;
}voidmain{intx=15,y=26;
printf(<
4%d%d/n'
x,y);
LE(x,y);
}11.
#includestdio.hvoidmain{inti,s=0;
;
i++){if(s30)break;
if(i%2==0)s+=i;
)printfC'
s=%d/n^,s);
}12.#includestdio.h
voidmain{inta[9]={36,25,48,24,55,40,18,66,20};
inti,b1,b2;
bl=b2=a[0];
i9;
i++){if(a[订bl)b1=a[iJ;
if(a[i]b2)b2=a[订;
}printf(<
4%d%d/n,,,b1,b2);
}13.#includestdio.hvoidSB(char
ch){switch(ch){case4A"
case'
a'
printf("
WW“);
case,B'
b'
4GG"
default:
printf(4*BBbreak;
}}
main{
{x=a[i];
voidmain{charal='
a2='
B'
a3=f;
SB(al);
SB(a2);
SB(a3);
14.#includestdio.h#defineM6void
inti,x;
inta[M]={10,15,22,37,46,58};
for(i=0;
iM/2;
i++)
a[i]=a[M-l-i];
a[M-1-i]=x;
}for(i=0;
i6;
i++)printf(“%d
x=60;
inti=2,p=1;
while
(1){if(x%i==0){p*=i;
x/=i;
}if(ix)i++;
else
18.
break;
}printfC'
%d/n'
\p);
#includestdio.hvoidmain{int
voidmain{int
i,s=0;
i++)s+=a[ij;
printf(“%d%d/n"
b,c);
1•defaultswitch
end.
2.
14
1340
121
3.644.4321987655.b=566.s=557.
28
218.
.10
9.
23
5813
21
10.1526
26
1511.s=42
12.6618
13
.WW
GG
BB
14.58
37221510
15
.1042370.0016.
30
18.
767590
19
.1119
20.
43
36
四、
写
出下列每个函数的功能
1.
#includemath・h
int
SG(int
x)
c=LA(a+2,3);
〃x为人于等于2的整数
a=(int)sqrt(x);
a[5]={3,4610,20};
intb=LA(a,5);
//sqrt(x)取x的平方根int
i=2;
wh订e(i=a){if(x%i==0)break;
i++;
//f为一个单链表的表头指针{intx;
if(!
f){printf(u单链表为空
x二f-data;
/n"
),exit
(1);
}x=f-data;
彳二仁next;
while(f){if(f-datax)
3.#includcstdio.h
structIntNode{intdata;
structIntNode*next;
intSA(inta,intb){if(ab)return1;
elseif(a==b)return0;
elsereturn-1;
}4.voidOutput(structIntNode*f)//f为单链表的表头指针{
if(!
f)return;
while(f){printf(4C%d<
4,f-data);
f=f-next;
}printf("
/n”);
}假定structIntNode的类型定义为:
structIntNode{intdata;
5・iniSC(inta,intb,intc){if(a=ba=c)returna;
if(b=ab=c)returnb;
returnc;
}6.int*LI(intn)
returna;
7.intWC(inta[],intn,intk){int
i,c=0;
8.voidQA(struct
{int*a=malloc(n*sizeof(int));
inti;
i++)scanf("
%d"
a+i);
for(i=0;
i++)if(a[i]=k)C++;
%d
Workera[],intn){inti;
in;
i++)scanf(“%s
a[i].name,a[i].age,a[i].pay);
}假定结构类型structWorker的定义如
下:
structWorker{charnamel15J;
intage;
floatpay;
参考解答:
1.判断x是否为一个素数,若是则返I叫1,否则返回0。
2.求出由
f所指向的单链表中所有结点的最大值。
3.比较两个整数a和b的大小,若ab则返回1,若a==b则返回0,若ab则返回-1。
4.遍历并输出ill
f所指向的单链表中每个结点的值。
5.求Hla,b,c三个数中的最大值并返回。
6.首先建立一个动态整型数组alnj,接着从键盘上输入n个整数到a[n]中,最后返回数组a[n]的首地址。
7.统计并返回一维整型数组a[n]中大于等于k的值的个数。
8.从键盘上为具有structWorker类型的数组a[n]输入n个记录。
五、按题目要求编写程序或函数1.编写一
个程序,输出5()以内(含50)的、能够被3或者5整除的所有整数。
2.编写一个递归函数"
intFF(inta[],intn)"
求出数组a中所有n个元
素之积并返I叫。
3.编写一个程序,利用while循环,计算并打印输
出的值,其小正整数n值由键盘输入。
假定求和变量用sum表示,计数变量用i表示,sum>
i和n均定义为全局变量,sum和i的初值分别被赋了0和1。
4.根据函数原型“voidDD(inta[],intn,intMM)”编写函数定
义,利用双重循环查找并打印输出数组a[n]中任何两个元素的值等于MM值的元素值。
假定a[i]+a[j]等于MM,则输出格式为:
(a[i],a[j])05.
编写一个程序,计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
6.根据函数原型“int
FF(inta[],intn)"
编写函数定义,计算并返回数组a[n]中所有元素之和。
7.根据函数原型"
doubleMean(doublea[M][N],intm,intn)”,编写函数定义,要求返I叫二维数组a[m][n]中所有元素的平均值。
假定在计算过程小采用变量v存放累加值和最后的平均值。
8.根据函数原型“int
MM(inta[],intm)”,编写函数定义,计算并返回数组a[m]中元索最大值和最小值之,差。
1.#includestdio.hvoidmain{inti;
for(i=3;
i=50;
i++)if(i%3==0IIi%5==0)printf(u%d“,i);
7n,,>
}2.intFF(inta[],intn){if(n=0){printf(<
4n值非法/nM),exit
(1);
if(n==1)returna[n-1];
elsereturna[n-l]*FF(a,n-l);
for(i=1;
i=10;
i++){p*=3;
s+=p;
)printf(“%d/n”,s);
inti,j;
doublev二0.0;
6.intF