C语言复习资料答案Word文档格式.docx
- 文档编号:20607160
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:26
- 大小:28.80KB
C语言复习资料答案Word文档格式.docx
《C语言复习资料答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言复习资料答案Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
3D)2
2.设变量定义为inta,b;
执行下列语句时,输入(B),则a和b的值都是10
scanf(“%d,%d”,&
a,&
b);
A)1010B)10,10C)a=10b=10D)a=10,b=10
3.有以下程序
main()
{intm,n,p;
scanf("
m=%dn=%dp=%d"
&
n,&
p);
printf("
%d%d%d\n"
m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是( A )
A)m=123n=456p=789 B)m=123n=456p=789
C)m=123,n=456,p=789 D)123456789
1.有如下程序段:
inta=3,b=15;
floatf=7.5;
printf(“%.1f”,(float)a+b/2+(int)f%3);
执行该程序段后,运算结果为:
(B)
A)11.5B)11.0C)11D)12.0
三、选择结构
一)关系表达式、逻辑表达式和条件表达式
1.在C程序中,用(B)表示逻辑”真”。
A)1B)非0的数C)非1的数D)大于0的数
2.若有定义:
intx=2,y=3,z=4;
则表达式!
(x+y)+z-1&
&
y+z%2的值为( C )
A)4B)0C)1D)2
3.设inta=0,b=0,c=0;
c=++a||b++;
则a、b、c值分别为(d)
A)010B)111C)110D)101
4.执行语句:
inta=1,b=0,c;
c=a>
0||++b;
后,b的值为(a)
A)0B)1C)2D)不确定
5.设intx,y,z=4;
x=y=++z;
x=(y>
z)?
x+2:
x++;
则x的值是(C)
A)4B)5C)6D)7
6.为表示关系x>
y>
=z,则正确的c语言表达方式为( C )。
A)(x>
=z)B)(x>
y)and(y>
=z)
C)(y<
x)&
(y>
=z)D)(x>
y)&
7.若变量ch为char类型,能正确判断出ch为大写字母的表达式是(D)
A)’A’<
=CH<
=‘Z’B)(ch>
=’A’)||(ch<
=’Z’)
C)(‘A’<
=ch)and(‘Z’>
=ch)D)(ch>
=’A’)&
(ch<
二)if语句
1.有以下程序
main()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2;
elsed=3;
printf(%d,%d,%d,%d\n,a,b,c,d);
程序输出( D )
A)0,1,2,0 B)0,0,0,3 C)1,1,2,0 D)编译有错
2.以下程序运行后的输出结果是 4599
{
inta=3,b=4,c=5,t=99;
if(b<
a&
a<
c)t=a;
a=c;
c=t;
if(a<
c&
b<
c)t=b;
b=a;
a=t;
a,b,c);
三)switch语句
(1)switch的执行过程
(2)break的用法
1.#include<
stdio.h>
main()
{intx=1,y=1,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;
case1:
b++;
case2:
break;
}
case3:
printf(“a=%d,b=%d\n”,a,b);
输出结果:
a=1,b=3
2.#include<
输入:
3210
{charc;
while((c=getchar())!
=’\n’)
{switch(c-‘1’)
{case0:
case1:
putchar(c+2);
case2:
putchar(c+3);
case3:
putchar(c+4);
default:
putchar(c+1);
printf(“\n”);
6
45
34
1
四)算法
输入出租车里程S,输出应付车费F。
S和F的关系如下:
#include<
voidmain()
{floatS,F;
scanf(“%f”,&
S);
if(S<
=3)F=8;
elseF=8+(S-3)*2;
printf(“F=%f\n”,F);
四、循环结构
一)循环条件均以条件为真(非0)进行循环,以条件为假(0)结束循环)
1.以下叙述正确的是(D)
A)do-while语句构成的循环不能用其它语句构成的循环来代替
B)do-while语句构成的循环只能用break语句退出
C)do-while语句构成的循环,在while后的表达式为非零时结束循环
D)do-while语句构成的循环,在while后的表达式为零时结束循环
2.设有程序段:
intk=10;
while(k=0)k=k-1;
则循环体执行的次数为( C)
A)10次 B)9次 C)0次 D)1次
3.下列(D)循环不是无限循环
A)for(y=0;
x=1;
++y);
B)for(;
;
x=0);
C)while(x=1){x=1;
}D)for(y=0,x=1;
x>
++y;
x++)
二)三种循环的执行流程
1.设变量y值为3,执行下列循环语句后,变量y的值的是(C)
doy++;
while(y++<
4);
A)3B)4C)5D)6
2.执行语句for(I=1;
I++<
4;
);
后变量I的值是(C)
A)3B)4C)5D)0
三)循环嵌套的执行次数
1.#include“stdio.h”
voidmain()
{intI,j;
for(I=0;
I<
=3;
I++)
{for(j=0;
j<
I;
j++)
printf(”%d”,I);
printf(“*\n”);
*
1*
22*
333*
四)break和continue的用法
voidmain()
{inta=1,b;
for(b=1;
=10;
b++)
{if(a>
=8)break;
if(a%2==1){a+=5;
continue;
a-=3;
}
printf("
%d\n"
b);
4
2.#include<
voidmain()
{intI,m=0,n=0,k=0;
for(I=5;
=7;
I++)
switch(i/6)
{case0:
m++;
n++;
case6:
break;
default:
k++;
}
printf(“%d,%d,%d\n”,m,n,k);
1,4,2
算法略
五、数组
一)数组语法
1.数组定义为inta[10][10];
,则数组a有(A)个数组元素。
A)100B)81C)20D)121
2.以下一维数组a的正确定义是(D)
A)inta(10);
B)intn=10,a[n];
C)intn;
D)#defineN10
Scanf(“%d”,&
inta[N];
Inta[n];
3.设有语句”inta[]={3,4,5,9,8,7};
”则表达式a[1]-a[4]的值是(C)
A)-6B)6C)-4D)2
4.以下不能正确定义二维数组的是( D )
A)inta[2][2]={{4},{5}};
B)inta[][2]={4,5,6,7};
C)inta[2][2]={{4},5,6};
D)inta[2][]={{4,5},.{6,7}};
二)字符串
1.以下程序的输出结果是(B)
#include<
string.h>
{charst[20]=”2000\0\t\\”;
printf(“%d,%d\n”,strlen(st),sizeof(st));
A)7,7B)4,20C)10,20D)20,20
2.要将字符串a连接到字符串b后面,使用下面(D)语句
A)strcpy(a,b);
B)strcat(a,b);
C)strcpy(b,a);
D)strcat(b,a)
三)算法
1.已知字符串chars[50]=”Iamstudent.”,请编写程序将字符a插入到student之前,结果为“Iamastudent”。
程序如下:
cars[50]=”Iamstudent.”;
intj,len;
len=strlen(s);
s[len+1]=’\0’
for(j=len-1;
j>
j--)
s[j+1]=s[j];
s[3]=’\0’
puts(s);
2.有一个3×
4的矩阵,要求编程以求出其中值最大的那个元素,以及它所在的行号和列号。
inti,j,row,col,max;
staticinta[3][4]={{3,5,1,8},{6,4,11,7},{9,3,10,2}};
max=a[0][0];
for(i=0;
i<
_3_;
i++)/*$BLANK1$*/
for(j=0;
if(a[i][j]>
max)/*$BLANK2$*/
{
max=_a[i][j]__;
/*$BLANK3$*/
row=i;
col=j;
printf("
max=%d,row=%d,col=%d\n"
max,row,col);
六、函数
一)函数语法
1.在C程序中,若对函数类型未加说明,则函数的隐含类型为(A)
A)intB)doubleC)voidD)char
2.C语言中的函数(D)
A)可以嵌套定义B)不可以嵌套调用
C)可以嵌套定义,但不能递归调用D)嵌套调用和递归调用都可以。
3.有以下函数定义:
voidfun(intn,doublex){…………}
下面函数调用正确的是( A )
A)fun(x,n)B)k=fun(10,12.5)
C)fun(intx,doubley)D)voidfun(n,x)
4.有以下程序
#defineN20
fun(inta[],intn,intm)
{inti,j;
for(i=m;
i>
=n;
i--)
a[i+1]=a[i];
{inti,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;
5;
i++)
printf("
%d"
a[i]);
程序运行后的输出结果是(C)
A)10234B)12344C)12334D)12234
5.有以下程序
voidsum(inta[])
{a[0]=a[-1]+a[1];
main()
{inta[10]={1,2,3,4,5,6,7,8,9,10};
sum(&
a[2]);
printf("
a[2]);
}
程序运行后的输出结果是(A)
A)6B)7C)5D)8
6.以下程序运行后的输出结果是:
43
34
二)递归函数
【程序1】#include”stdio.h”
intfun(intn)
{if(n<
10)returnn;
else
return(n%10)*fun(n/10);
{printf(“%d”,fun(218));
运行结果:
16
【程序2】
#include<
longfun(intn)
{longs;
if(n==1||n==2)s=2;
elses=n+fun(n-1);
returns;
voidmain()
{printf(“\n%ld”,fun(5));
14
三)变量的作用域和存储类型(见课件)
1.C语言auto型变量是(A)
A)存储在动态存储区中B)存储在静态存储区中
C)存储在外存储器中D)存储在计算机CPU的寄存器中
【程序1】intw=2;
intf(intx)
{inty=1;
staticintz=3;
y++;
z++;
return(x+y+z);
{intk;
for(k=0;
k<
3;
k++)
printf(“%4d”,f(w++));
81012
【程序2】以下程序运行后的输出结果是:
fun(inta)
{intb=0;
staticintc=3;
b++;
c++;
return(a+b+c);
{inti,a=5;
%d%d"
i,fun(a));
\n"
010111212
七、指针
1.设有定义:
ints[]={1,3,5,7,9},*p=&
s[0];
则值为7的表达式是(C)
A)*p+3B)*p+4C)*(p+3)D)*(p+4)
2.若有以下定义,则值为4的表达式是(A)
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;
A)p+=3,*(p++)B)p+=3,*++pC)p+=4,*p++D)p+=4,++*p
3.若有定义及赋值:
inta[10]={0,1,2,3,4,5,6,7,8,9},*p;
p=a;
则引用a中的值是5的元素的表达式为(C)
A)a[4]B)*(p+4)C)*(a+5)D)*p[5]
4.设intx[]={1,2,3,4,5,6},*p=x;
则值为3的表达式是(A)
A)p+=2,*p++B)p+=2,*++p
C)p+=3D)p+=2,++*p
5.若有定义及赋值:
inta[5][5],(*p)[5];
则下列各式中表示地址的表达式为(C)
A)a[3][3]B)*(*(p+1))C)a[2]+2D)*(*(a+3)+1)
6.设有一下语句
inta[4][2]={1,2,3,4,5,6,7,8};
则*(*(a+2)+1)( D)
四)字符串及字符串数组涵义
1.不正确的赋值或赋初值方式是(B)
A)charstr[]=”Hell02006”B)charstr[20];
str=”Hell02006”;
C)char*p=”Hell02006”D)char*p;
p=”Hell02006”
2.下列语句中合法的数组定义是( D)
A)chara[3][]={‘abc’,’12’,”fox”}
B)chara[][3]={‘abc’,’12’,”cd”}
C)chara[3][]={‘a’,”12”,”fox”}
D)chara[][3]={“a”,”12”,”cd”}
3.以下语句或语句组中,能正确进行字符串赋值的是(D)
A)char*sp;
*sp="
right!
"
;
B)chars[10];
s="
C)chars[10];
*s="
D)char*sp="
八、宏定义、结构体与共用体
一)宏定义
1.运行程序:
#defineTap(X)2*X+1
{inta=6,k=2,m=1;
a+=Tap(k+m);
printf(“%d\n”,a);
}则输出结果是(A)
A)12B)13C)7D)6
2.对于以下宏定义
#defineM(x)x*x
#defineN(x,y)M(x)+M(y)
宏调用N(2,2+5)执行后,值为(A)
A)21B)16C)9D)19
二)结构体
1.设有结构体及其数组和指针变量的定义语句
struct{intx;
}y[2],*p=y;
则下列表达式中不正确的表示结构体成员的是(B)
A)(*p).xB)(p+1).xC)y[0].xD)(&
y[1])->
x
2.设有定义structst{intx;
floaty;
}time,*t;
t=&
time;
则对于time中成员x的正确引用是(C)
A)w.time.xB)t.xC)(*t).xD)time->
x
三)共用体
1.若定义unionex{intI;
floatf;
chara[10];
}x;
则sizeof(x)的值是(C)
A)4B)6C)10D)16
2.设有下列结构型变量w的定义,则表达式”sizeof(w)”的值是( C )
struct
{longnum;
charname[15];
union{floaty;
shortz;
}yz;
}w;
A)19B)20C)23D)25
四)typedef
1.以下语句中,指针p的data域正确的引用方式为(B)
typedefstructnode
{intdata;
structnodelchile,rchild;
}Btree;
Btree*p;
A)p.dataB)p->
dataC)(*p)->
dataD)p[data]
2.设有如下说明
typedefstructST
{longa;
intb;
charc[2];
}NEW;
则下面叙述中正确的是(C)
A)以上的说明形式非法B)ST是一个结构体类型
C)NEW是一个结构体类型D)NEW是一个结构体变量
3.以下对结构体类型变量td的定义中,错误的是(C)
A)typedefstructaaB)structaa
{{
intn;
floatm;
}AA;
};
AAtd;
structaatd;
C)structD)struct
}aa;
}td;
stru
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习资料 答案