二级C语言111Word文件下载.docx
- 文档编号:19145418
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:24.98KB
二级C语言111Word文件下载.docx
《二级C语言111Word文件下载.docx》由会员分享,可在线阅读,更多相关《二级C语言111Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
continue;
--x);
则程序的运行结果是______。
A.7,4,2,
B.8,7,5,2,
C.9,7,6,4,
D.8,5,4,2,
[解析]coutinue的作用是跳出循环体中剩余的语句而进行下一次循环。
第一次循环,x的值为8,循环体中if条件成立,打印x的值8后将x减1,再执行continue语句,跳出本次循环。
第二次判断循环条件时,x的值变为6,不满足循环体内if条件,执行打印--x的操作,即打印5后跳出循环。
第三次判断循环条件时x的值为4,满足循环体中if条件。
执行打印x--的操作,即打印4后将x值减1,执行continue语句,跳出本次循环。
第四次判断循环条件时x的为2,满足循环体中if条件,打印x--,即打印2后将x减1,执行continue语句,跳出本次循环。
在进行for条件表达式中第三个表达式x--的操作后x的值为0,不满足条件结束循环。
所以打印结果为8,5,4,2,。
3.若有以下程序:
{inta=6,b=0,c=0;
for(;
a;
){b+=a;
a-=++c;
}
%d,%d,%d/n"
a,b,c);
则程序的输出结果是______。
2.50)
A.1,14,3
B.0,14,3
C.0,18,3
D.0.14,6
[解析]本循环的条件判断时,只要a为0就退出循环体,初始a的值为6,满足条件,执行完循环体后b的值为6,a-=++c即a=a-(++c),所以a的值为5,c的值为1;
第二次循环后b的值为11,a的值为3,c的值为2;
第三次也是最后循环后,a的值为0,b的值14,c的值为3。
4.若有以下程序:
{inta=6,b=0,c=0;
for(;
a&
&
(b==0);
)
{b+=a;
a-=c++;
A.5,6,0
B.6,0,0
C.6,6,1
D.5,6,1
[解析]本题重点考查C语言中for语句和逻辑表达式,for语句的一般形式为:
fbr(表达式1;
表达式2;
表达式3)语句
其循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺省,但“;
”不能缺省。
该题目中省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。
(b==0);
){b+=a;
a-=c++;
}相当于while(a&
(b==0)){b+=a;
}。
因此C选项正确。
5.若有以下程序:
{inti,sum;
for(i=1;
i<6;
i++)sum+=1;
%d/n"
sum);
A.随机值
B.0
C.15
D.16
[解析]本题重点考查for语句,变量没有初始化的情况下,默认值与编译器有关系,不同的编译器有不同的值。
因此A选项正确。
6.若有以下程序:
inti,j;
i<4;
i++)
for(j=i;
j<4;
j++)pfinff("
%d*%d=%d"
i,j,i*j);
/n"
);
A.1*1=11*2=21*3=32*2=42*3=63*3=9
B.1*1=11*2=21*3=32*1=22*2=43*1=3
C.1*1=11*2=22*2=41*3=32*3=63*3=9
D.1*1=12*1=22*2=43*1=33*2=63*3=9
[解析]外循环第一次i的值为1,内循环第一次的初值为1,打印1*1=1;
内循环第二次j的值为2,打印1*2=2;
内循环第三次j的值为3,打印1*3=3,打印回车换行,退出内循环。
外循环第二次i的值为2,内循环第一次j的初值为2,打印2*2=4;
内循环第二次j的值为3,打印2*3=6,打印回车换行,退出内循环。
外循环第3次,i的值为3,内循环第一次j的初值为3,打印3*3=9,打印回车换行,退出内循环。
7.若有以下程序:
{inti=5;
do
{if(i%3==1)
if(i%5==2)
{printf("
%*d"
i);
break;
i++;
}while(i!
=0);
pnnff("
A.*2*6
B.*3*5
C.*5
D.*7
[解析]do…while语句是先执行后判断,所以第一次先执行循环体,判断i%3==1的条件,由于i为5,所以余数为2,条件不成立,执行i++,i的值为6,判断while条件为真,第二次执行循环体,同第一次循环体的执行过程一样,i的值变为7,判断while条件为真,第三次执行循环体,此时i%3==1条件成立,判断i%5==2也成立,打印*与i的值,即*7,然后执行break语句,跳出循环。
8.若有以下程序:
#inelude<stdio.h>
{inti,j;
for(i=3;
i>=1;
i--)
{for(j=1;
j<=2;
j++)printf("
%d"
i+j);
A.432543
B.453423
C.233423
D.233423
[解析]第一次执行外循环,i的值为3;
第一次执行内循环,j的值为1,j<=2条件成立,打印i+j的值,即4。
第二次执行内循环,j的值为2,j<=2条件成立,打印i+j的值,即5;
再判断条件不成立,打印回车换行符,跳出内循环。
第二次执行外循环,i的值为2,内循环的执行同第一次一样,所以打印3和4,打印回车换行,结束内循环。
第三次执行外循环i的值为1,同理内循环中打印2和3,打印回车换行符,结束内循环。
9.若有以下程序:
{inti,j,m=1;
i<3;
i++)
{for(j=3;
j>0;
j--)
{if(i*j>3)break;
m*=i*j;
m=%d/n"
m);
A.m=4
B.m=2
C.m=6
D.m=5
[解析]第一次外循环i的值为1,第一次内循环j的值为3,不满足条件,执行m*=i*j,即m的值为3;
第二次j的值为2,不满足条件,执行m*=i*j,即m的值为6;
第三次j的值为1,不满足条件,执行m*=i*j,即m的值仍为6。
第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。
10.若有以下程序:
{intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;
j<=i;
j++)t+=b[i][b[j][i]];
t);
A.3
B.4
C.1
D.9
[解析]每次内循环只循环一次就结束,第一次外循环时,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;
第二次外循环时t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;
第三次外循环时,t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。
11.若有以下程序:
{inti;
i<=40;
i++)
{if(i++%5==0)
if(++i%8==0)printf("
则执行后的输出结果是______。
A.5
B.24
C.32
D.40
[解析]本题的含义是在1-40的整数的范围中,只有当i的值能被5整除,且i+2的值能被8整除时,打印i的值,满足这个条件的只有32,选择C选项。
12.以下叙述中正确的是______。
A.continue语句的作用是使程序的执行流程跳出包含它的所有循环
B.break语句只能用在循环体内和switch语句体内
C.在循环体内使用break语句和continue语句的作用相同
D.break语句只能用于switch语句体中
[解析]continue语句的作用是:
跳过循环体中剩余的语句而进行下一次循环,所以A选项错误。
Break语句的作用是终止正在执行的switch流程,跳出switch结构或者强制终止当前循环,从当前执行的循环中跳出.所以C、D选项错误。
13.以下叙述中正确的是______。
A.continue语句使得整个循环终止
B.break语句不能用于提前结束for语句的本层循环
C.使用break语句可以使流程跳出switch语句体
D.在for语句中,continue与break的效果是一样的,可以互换
[解析]break语句通常用在循环语句和开关语句中。
当break用手开关语句switch中时,可使程序跳出switch而执行switch以后的语句;
当break语句用于do…while、for、while循环语句中肘,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。
continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。
A、B和D三个选项中均有错误。
14.若有以下定义:
intx[10],*pt=x;
则对x数组元素的正确引用是______。
A.pt+3
B.*&
x[10]
C.*(pt+10)
D.*(x+3)
[解析]没有A选项的引用形式。
*与&
放在一起作用抵消,所以B选项错误。
*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。
因此D选项正确。
15.若有以下程序:
{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};
i<9;
i+=2)a+=*(t+i);
s);
则程序执行后的输出结果是______。
A.20
B.25
C.45
D.36
[解析]统计1~9中的奇数和,此题考查指向数组的指针。
C语言规定数组名代表数组的首地址,也就是第一个元素的地址。
因此*(t+i)代表数组的第i+1个元素。
程序运行的结果是1+3+5+7+9=25。
16.若有以下程序:
voidfun(int*s,intn1,intn2)
inti,j,t;
i=n1;
j=n2;
while(i<j)
t=s[i];
s[i]=s[j];
s[j]=t;
i++;
j--;
inta[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);
fun(a,4,9);
fun(a,0,9);
for(k=0;
k<10;
k++)
a[k]);
A.4321098765
B.5678901234
C.0987654321
D.0987651234
[解析]该程序首先给一维数组赋值,然后三次调用fun函数,其中fun(a,0,3);
的功能是将一维数组中的第1个元素和第4个元素互换,第2个元素和第3个元素互换;
fun(a,4,9);
的功能是将一维数组中的第5个元素和第10个元素互换,第6个元素和第9个元素互换,第7个元素和第8个元素互换;
fun(a,0,9);
的功能是将将一维数组中的第1个元素和第10个元素互换,第2个元素和第9个元素互换……依次类推。
因此B选项正确。
17.若有以下程序:
ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
i<12;
c[s[i]]++;
i<5;
c[i]);
A.2344
B.4332
C.1234
D.1123
[解析]在for(i=0;
i++)c[s[i]]++;
语句中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。
18.若有以下程序:
voidfun(inta[],intn)
{intt,i,j;
i<n;
i+=2)
for(j=i+2;
j<n;
j+=2)
if(a[i]>a[j]){t=a[i];
a[i]=a[j];
a[j]=t;
{intc[10]={10,9,8,7,6,5,4,3,2,1},i;
fun(c,10);
i<10;
i++)printf("
A.1,10,3,8,5,6,7,4,9,2,
B.10,9,8,7,6,5,4,3,2,1,
C.2,9,4,7,6,5,8,3,10,1,
D.10,1,8,3,6,5,4,7,2,9,
[解析]本题主要考查for的嵌套循环。
该题首先对一维数组进行初始化,c[0]到c[9]依次赋值为10到1;
fun(c,10);
语句调用fun函数,fun函数的功能是将一维数组偶数位元素的数值由小到大排序;
最后将排好序的新的一维数组进行输出。
19.若有以下程序:
{intc[6]={10,20,30,40,50,60},*p,*s;
P=c;
s=&
c[5];
s-P);
A.5
B.50
C.6
D.60
[解析]本题主要考查数组和指针。
首先初始化一维数组c[6],语句p=c;
指将c[0]元素的地址赋给指针变量p,语句s=&
c[5];
指将c[5]元素的地址赋给指针变量s。
程序最后输出s-p,即结果为5。
20.若有以下程序:
{inta[3]={0},i,j,k=2;
i<k;
for(j=0;
j<k;
j++)a[j]=a[i]+1;
a[1]);
A.0
B.2
D.3
[解析]该题首先初始化一维数组a[3]所有元素都为0;
执行嵌套循环for语句,当i=0、j=0时,a[0]=a[0]+1=1;
当i=0、j=1时,a[1]=a[0]+1=2;
当i=1、j=0时,a[0]=a[1]+1=3;
当i=1、j=1时,a[1]=a[1]+1=3;
21.有以下程序:
{inta[5]={2,4,6,8,10},*p,**k;
P=a;
k=&
p;
%"
*(p++));
**k);
程序运行后的输出结果是______。
A.46
B.44
C.22
D.24
[解析]本题主要考查指针。
首先通过p=a使p指向数组的第1个元素,所以输出2;
在输出2以后,由于p++,即p就指向数组的第2个元素,**k就是取出p所指向元素的值,而p指向的是数组的第2个元素,即输出4:
22.以下叙述中正确的是______。
A.一条语句只能定义一个数组
B.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
C.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D.在引用数组元素时,下标表达式可以使用浮点数
[解析]A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;
C选项中,数组说明符的一对方括号中可以是整型常量,也可以是整型常量表达式;
D选项中,在引用数组元素时,下标表达式必须是整型的。
23.以下叙述中正确的是______。
A.数组下标的下限是1
B.数组下标的下限由数组中第一个非零元素的位置决定
C.数组下标的下限由数组中第一个被赋值元素的位置决定
D.charc1,c2,*c3,c4[40];
是合法的变量定义语句
[解析]C语言规定,数组下标值的下限一律为0,对于一维数组a[max](max是一个编译时可知的值)来说,它的第一个和最后一个元素分别是a[0]和a[max-1]。
所以,数组下标值的下限与数组中元素的位置无关,故A、B、C选项错误。
24.有以下程序:
#defineN4
voidfun(inta[][N],intb[])
{inti;
i<N;
i++)b[i]=a[i][i];
{intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
y[i]);
程序的运行结果是______。
A.1,0,7,0,
B.1,2,3,4,
C.1,4,5,9,
D.3,4,8,10,
[解析]该程序首先在定义变量时,对二维数组x[][N]进行赋值操作;
调用函数fun,函数fun的功能是将=维数组中的a[0儿0]、a[1][1]、a[2][2]和a[3][3]赋值给一维数组。
最后将输出一维数组1,0,7,0,。
25.有以下程序:
intfun(int(*s)[4],intn,intk)
{intm,i;
m=s[0][k];
if(s[i][k]>m)
m=s[i][k];
returnm;
{inta[4][4]={{1,2,3,4},
{11,12,13,14},
{21,22,23,24},
{31,32,33,34}};
fun(a,4,0));
A.4
B.34
C.31
D.32
[解析]本题重点考查二维数组名作为实参进行参数传递。
在主函数中调用了fun函数,买参为二维数组名a和两个整数4、0,这样对应定义fun函数首部也有三种形式,这里采用第一种形式,也就是行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用,其是求二维数组第0列中最大的那个元素。
26.有以下程序:
inta[4][4]={{1,4,3,2},
{8,6,5,7},
{3,7,2,5},
{4,8,6,1}};
inti,j,k,t;
i<4;
j<3;
j++)
for(k=j+1;
k<4;
k++)
if(a[j][i]>a[k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 111