C语言程序设计A复习资料一Word文档下载推荐.docx
《C语言程序设计A复习资料一Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计A复习资料一Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
4.表达式(float)25/4的值为________。
5.若x=5,y=10,则x=y的逻辑值为________。
6.作为语句标号使用的case和default只能用于________语句的定义体中。
7.在程序中执行到________语句时,将结束所在函数的执行过程,返回到调用该函数的位置。
8.假定二维数组的定义为“chara[M][N];
”,则该数组所含元素的个数为________。
9.存储字符'
a'
需要占用存储器的________个字节空间。
10.用于存储一个长度为n的字符串的字符数组的长度至少为________。
11.假定p所指对象的值为25,p+1所指对象的值为46,则执行表达式(*p)++后,p所指对象的值为________。
12.假定p是一个指向整数对象的指针,则用________表示该整数对象。
13.假定一个结构类型的定义为“structB{inta;
char*b;
”,则该类型的理论长度为________。
三、写出下列每个程序运行后的输出结果
1.#includestdio.h
voidmain(){
inti,s1=0,s2=0;
for(i=0;
ii++)
if(i%2)s1+=i;
elses2+=i;
printf("
%d%d\n"
s1,s2);
}
2.#includestdio.h
constintM=20;
voidmain()
{
inti=2;
while
(1){
if(iM/2)break;
if(M%i==0)printf("
%d"
i);
i++;
\n"
);
3.#includestdio.h
inta={4,5,6,15,20,12};
inti,s1,s2;
s1=s2=0;
ii++){
switch(a[i]%2){
case0:
s2+=a[i];
break;
case1:
s1+=a[i];
4.#includestdio.h
inta={{3,5,7},{9,11,13},{6,8,20}};
inti,*p=a;
ii++){
if(*p10)printf("
*p);
p++;
5.#includestdio.h
#includestring.h
structWorker{charname;
intage;
floatpay;
structWorkerx;
char*t="
liouting"
intd=38;
floatf=400;
strcpy(,t);
x.age=d;
x.pay=f;
x.age++;
x.pay*=2;
%s%d%6.2f\n"
,x.age,x.pay);
四、写出下列每个函数的功能
intSA(inta,intb){
if(ab)return1;
elseif(a==b)return0;
elsereturn-1;
函数功能:
2.voidOutput(structIntNode*f)//f为单链表的表头指针
if(!
f)return;
while(f){
f-data);
f=f-next;
假定structIntNode的类型定义为:
structIntNode{intdata;
structIntNode*next;
五、按题目要求编写程序或函数
6.编写一个程序,计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
6.根据函数原型“intFF(inta[],intn)”,编写函数定义,计算并返回数组a[n]中所有元素之和。
参考答案
1.B2.C3.C4.A5.D
6.B7.B8.A9.D10.C
1.函数头2.D3.44.6.25
5.16.switch或开关或分情况
7.return或返回8.M*N
9.110.n+111.2612.*p13.24
评分标准:
根据答案正确程度酌情给分。
1.2520
2.24510
3.2042
4.111320
5.liouting39800.00
根据答案叙述的正确与完善程度酌情给分。
1.比较两个整数a和b的大小,若ab则返回1,若a==b则返回0,若ab则返回-1。
2.遍历并输出由f所指向的单链表中每个结点的值。
按程序或函数编写的正确与完整程度酌情给分。
1.
#includestdio.h
inti;
intp=1;
ints=1;
for(i=1;
ii++){p*=3;
s+=p;
}
%d\n"
s);
2.intFF(inta[],intn)
inti,sum=0;
ii++)sum+=a[i];
returnsum;
C语言程序设计A复习资料二
一、选择题
1.由C语言源程序文件编译而成的目标文件的缺省扩展名为()。
A.cppB.exeC.objD.C
2.C语言程序的基本模块为()。
A.表达式B.标识符C.语句D.函数
3.x0||y==5的相反表达式为()。
A.x=0||y!
=5B.x=0y!
=5
C.x0||y!
=5D.x0y==5
4.枚举类型中的每个枚举常量的值都是一个()。
A.整数B.浮点数
C.字符D.逻辑值
5.循环语句“for(inti=0;
ii++)S;
”中循环体S被执行的次数为()。
A.1B.n-1C.nD.n+1
6.在下面的while循环语句中,其循环体被执行的次数为()。
inti=0,s=0;
while(s20){i++;
s+=i;
A.4B.5C.6D.7
7.若定义了函数double*function(),则返回值类型为()。
8.若用数组名作为函数调用的实参,传递给形参的是()。
A.数组的首地址B.数组中第一个元素的值
C.数组中全部元素的值D.数组元素的个数
9.假定a为一个整型数组名,则元素a的地址比该数组的首地址大()个字节。
A.4B.8C.16D.32
10.下列给字符数组赋初值时,正确的是()。
A.chars1[]="
abcdef"
B.chars2="
abcd"
C.chars3={"
abc"
"
xyz"
D.chars4[]={'
x'
s'
t'
A.char*p=s;
B.char*p=C.char*p;
p=*s;
D.char*p;
p=
11.要使p指向二维整型数组a,p应定义为()。
A.int*p=a;
B.int**p=a;
C.int*p=a;
D.int(*p)=a;
12.标准输入设备的文件流标识符是()。
A.stdinB.stdoutC.stderrD.stdio
13.若要以读/写操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符串为()。
A."
r+"
B."
ab+"
C."
rb+"
D."
wb+"
1.单行或多行注释的开始标记符为__________。
2.使用#include命令可以包含一个头文件,也可以包含一个______文件。
3.执行“printf("
%s%s%d"
wei"
rong"
18);
4.执行“printf("
A'
+2);
5.short类型的大小为________个字节。
6.十进制数3.26f的类型为________。
7.假定y=10,则表达式++y*3的值为________。
8.关系表达式(x==0)的等价表达式为________。
9.若x=5,y=10,则x!
=y的逻辑值为________。
10.在if语句中,每个else关键字与它前面同层次并且最接近的________关键字相配套。
11.当在程序中执行到________语句时,将结束所在循环语句中循环体的一次执行。
12.假定二维数组的定义为“chara[M][N];
”,则该数组所占存储空间的字节数为________。
13.存储字符串"
a"
14.strlen函数用于计算一个字符串的________。
15.函数中的形参变量的初值由调用该函数时对应的________值决定。
16.程序的编译是以__________为单位进行的。
17.假定a是一个一维数组,则a[i]的指针访问方式为________。
18.执行int*p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为________。
19.假定要动态分配一个类型为structWorker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句表达式为________________=malloc(n*sizeof(structWorker))。
20.与结构成员访问表达式p-name等价的表达式是____________。
inti,s=0;
i++){
if(s50)break;
if(i%2==0)s+=i;
i,s=%d,%d\n"
i,s);
charch='
*'
inti,n=5;
ii++)printf("
ch);
if(--n==0)break;
intx=24,y=88;
inti=2,p=1;
do{
while(x%i==0y%i==0){
p*=i;
x/=i;
y/=i;
}while(x=iy
p*x*y);
inta={36,25,48,24,55,40,18,66,20};
inti,b1,b2;
a=a?
(b1=a,b2=a):
(b1=a,b2=a);
for(i=2;
ii++)
if(a[i]b1){b2=b1;
b1=a[i];
elseif(a[i]b2)b2=a[i];
b1,b2);
inta=10,b=20;
a,b);
{intb=a+25;
a*=4;
6.#includestdio.h
voidSelectSort(inta[],intn)
inti,j,k,x;
ii++){//进行n-1次选择和交换
k=i-1;
for(j=i;
jj++)
if(a[j]a[k])k=j;
x=a[i-1];
a[i-1]=a[k];
a[k]=x;
inta={20,15,32,47,36,28};
SelectSort(a,6);
ii++)printf("
a[i]);
7.#includestdio.h
voidLE(int*a,int*b){
intx=*a;
*a=*b;
*b=x;
intx=15,y=26;
x,y);
LE(x,
8.#includestdio.h
structWorker{
charname;
//姓名
//年龄
//工资
};
intEqual(structWorker*r1,structWorker*r2)
if(strcmp(r1-name,r2-name)==0)return1;
elsereturn0;
structWorkera={{"
25,420},{"
defa"
58,638},
{"
ghin"
49,560},{"
jklt"
36,375}};
structWorkerx={"
if(Equal(a+i,x))break;
if(i=4)printf("
没有查找所需要的记录!
elseprintf("
a[i].name,a[i].age,a[i].pay);
1.intSE(intn){//n为大于等于1的整数
intx,s=0;
输入%d个整数:
"
n);
scanf("
%d"
if(n==1)returnx;
s=x;
while(--n){scanf("
s+=x;
returns;
voidWA(inta[],intn){
inti,k,j,x;
k=i;
for(j=i+1;
x=a[i];
a[i]=a[k];
int*LJ(inta[],intn){
inti,k=0;
if(a[i]a[k])k=i;
returna[k];
4.intOutput(structIntNode*f)
intsum=0;
f)return-9999;
//用返回特定值-9999表示空表
sum+=f-data;
structIntNode{
intdata;
//结点值域
//结点指针域
5.intwr4(FILE*fptr)
charch;
intc=0;
fseek(fptr,0,SEEK_SET);
ch=fgetc(fptr);
if(ch!
=EOF)c++;
elsebreak;
returnc;
五、根据下列每个题目要求编写程序
1.编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a中,接着求出主对角线上元素之和,最后返回求和结果。
2102.编写一个主函数,计算1+3+3+...+3的值并输出,假定分别用i,p,s作为循环变
量、累乘变量和累加变量的标识符。
3.编写一个主函数,已知6≤a≤40,15≤b≤30,求出满足不定方程2a+5b=120的全部整数组解。
如(13,20)就是其中的一组解。
1.C2.D3.B4.A5.C
6.C7.B8.A9.C10.A
11.D12.A13.C
1./*2.程序
3.weirong184.C
5.26.float
7.338.(!
x)
9.110.if
11.continue12.M*N
13.214.长度
15.实参16.程序文件
17.*(a+i)18.*p
19.structWorker*r20.(*p).name
i,s=15,56
2.
*****
****
***
**
*
3.
264
4.
1820
5.
1020
4035
4020
6.
152028323647
7.
1526
2615
8.
defa58638.00
1.求出从键盘上输入的n个整数之和并返回。
2.采用选择排序的方法对数组a中的n个整数按照从大到小的次序重新排列。
3.求出数组a中n个元素的最大值元素,返回该元素的地址
4.对于以表头指针为f的链表,求出并返回所有结点中data域的值之和。
5.求出一个以fptr为文件流的所对应文件的长度,即所存字符的个数。
1.doublefun()
doublea;
doubles=0;
inti,j;
输入一个4*4的数值矩阵:
for(j=0;
jj++)scanf("
%lf"
a[i][j]);
ii++)s+=a[i][i];
//用i作为循环变量
//用p作为累乘变量
//用s作为累加循环变量
inta,b;
for(a=6;
aa++)
for(b=15;
bb++)
if(2*a+5*b==120)printf("
(%d,%d)\n"