3C语言循环+数组习题.docx
- 文档编号:15730372
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:42
- 大小:30.01KB
3C语言循环+数组习题.docx
《3C语言循环+数组习题.docx》由会员分享,可在线阅读,更多相关《3C语言循环+数组习题.docx(42页珍藏版)》请在冰点文库上搜索。
3C语言循环+数组习题
第一部分循环题目
大纲:
while语句。
do—while语句。
for语句。
循环的嵌套。
break语句和continue语句。
循环语句程序举例。
一:
选择题
1.下面有关for循环的正确描述是()
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判定表达式
C.在for循环中,不能用break语句跳出循环体
D.for循环体语句中,可以包含多条语句,但要用花括号括起来
[解答]:
D。
2.对于for(表达式1;;表达式3)可理解为()
A.for(表达式1;1;表达式3)
B.for(表达式1:
1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
[解答]:
B。
3.以下正确的描述是()。
A.continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
[解答]:
B。
4.C语言中()。
A.不能使用do-while语句构成的循环
B.do-while语句构成的循环必须用break语句才能退出
C.do—whiLe语句构成的循环,当while语句中的表达式值为非零时结束循环
D.do—while语句构成的循环,当while语句中的表达式值为零时结束循环
[解答]:
D。
5.C语言中while和do-while循环的主要区别是()
A.do—while的循环体至少无条件执行一次
B.while的循环控制条件比do—while的循环控制条件严格
C.do—while允许从外部转到循环体内
D.do-while的循环体不能是复合语句
[解答]:
A。
6.下面程序段不是死循环的是()。
A.intI=100;B.for(;;);
while
(1)
{I=I%100+1;
if(I>100)break;
}
C.intk=0;D.ints=36;
do{++k;}while(s);
while(k>=0);--s;
[解答]:
A。
7.下面程序的运行结果是()。
#include
voidmain()
{inty=10;
do{y--;}
while(--y);
printf("%d\n",y--);}
A.-1B.1C.8D.0
[解答]:
D。
8、有以下程序段
intk=0;
while(k=1)k++;
while循环执行的次数是(A)
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
9、在C程序中,与while(m)中表达式m完全等价的是(B)
A)m==0B)m!
=0C)m==1D)m!
=1
10、有以下程序,程序运行后的输出结果是(D)。
main()
{inti=1,sum=0;
while(i<=4)
sum=sum+i;
i=i+1;
printf(“%d\n”,sum);
}
A)4B)5C)10D)死循环
11、执行以下程序段时
x=-1;
do
{x=x*x;}
while(!
x);
则下面描述正确的是(A)
A)循环体将执行一次B)循环体将执行两次
C)循环体将执行无限次D)系统将提示有语法错误
12、有以下程序段其输出结果是(C)
intx=3;
do
{printf("%d",x-=2);}
while(!
(--x));
A)1B)30C)1-2D)死循环
13、有如下程序
main(){
intx=23;
do
{
printf(“%d”,x);
x--;
}while(!
x);
}
该程序的执行结果是(B)
A)321B)23C)不输出任何内容D)陷入死循环
14、有以下程序段
intn=0,p;
do{scanf(“%d”,&p);n++;}while(p!
=12345&&n<3);
此处do—while循环的结束条件是(D)
A)P的值不等于12345并且n的值小于3
B)P的值等于12345并且n的值大于等于3
C)P的值不等于12345或者n的值小于3
D)P的值等于12345或者n的值大于等于3
15、若i为整型变量,则以下循环执行的次数是(B)
for(i=2;i==0;)printf(“%d”,i--);
A)无限次B)0次C)1次D)2次
16、执行语句for(i=1;i++<4;)后,变量i的值是(C)
A)3B)4C)5D)不定
17、有以下程序
main()
{
inty=9;
for(;y>0;y--)
if(y%3==0)printf("%d",--y);
}
程序的运行结果是(C)
A)741B)963C)852D)875421
18、以下程序执行后sum的值是(C)
A)15B)14C)不确定D)0
main()
{inti,sum;
for(i=1;i<6;i++)sum+=i;
printf(“%d\n”,sum);
}
19、有如下程序
main()
{inti,sum=0;
for(i=1;i<=3;sum++)sum+=i;
printf(“%d\n”,sum);
}
该程序的执行结果是(C)
A)6B)3C)死循环D)0
20、执行语句for(i=3;i>0;i--);i--;后,变量i的值是(C)
A)0B)10C)-1D)1
21、执行下面程序片段的结果是(A)。
intx;
for(x=3;x<6;x++)
printf((x%2)?
(“**%d”):
(”##%d\n”),x);
A)**3##4B)##3
**5**4##5
C)##3**4D)**3##4
**5##5
22、有以下程序,执行后输出的结果是(A)。
main()
{inti;
for(i=0;i<3;i++)
switch(i)
{case1:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);
}
}
A)011122B)012C)012020D)120
23、有以下程序,程序运行后的输出结果是(C)。
main()
{intk=4,n=0;
for(;n {n++; if(n%3! =0)continue; k--; } printf("%d,%d\n",k,n); } A)1,1B)2,2C)3,3D)4,4 24、设变量已正确定义,则以下能正确计算f=n! 的程序段是(D) A)f=0; for(i=1;i<=n;i++)f*=i; B)f=1; for(i=1;i C)f=1; for(i=n;i>1;i++)f*=i; D)f=1; for(i=n;i>=2;i--)f*=i; 25、执行下面程序片段的结果是(B)。 main() {inta,b; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3;continue; } b-=5; } printf(“%d\n”,a); } A)7B)8C)9D)10 26、有以下程序 main() { inti,j; for(i=3;i>=1;i--) { for(j=1;j<=2;j++) printf("%d",i+j); printf("\n"); } } 程序的运行结果是(D) A)234B)432C)23D)45 3455433434 4523 27、有以下程序 main() {inti=5; do { if(i%3==1) if(i%5==2) {printf("*%d",i);break;} i++; }while(i! =0); printf("\n"); } 程序的运行结果是(A) A)*7B)*3*5C)*5D)*2*6 28.运行下面程序 #include main() {intk=0,a=1; while(k<10) {for(;;) {if((k%10)==0)/*当循环开始的时候时,k=0,此时和10取3余的结果就等于0,就跳出了for循环开始下面的循环*/ break; else k--; } k=k+11; a=a+k; } printf(“k=%d\na=%d\n”,k,a); } 则输出的结果是() A2132B2133C1112D1011 29.若i为整型变量,则以下循环执行的次数是() for(i=2;i==0;)printf(“%d”,i--); A.无限次B0次C1次D2次 30以下程序的输出结果是: main() {inta,b; for(a=1,b=1;a<=100;a++) {if(b>=10)break; if(b%3==1){b=b+3;continue;} }printf(“%d”,a);}A101B3C4D5 二、程序阅读题(共10题) 1、设有以下程序: main() { intn1,n2; scanf(“%d”,&n2); while(n2! =0) { n1=n2%10; n2=n2/10; printf(“%d”,n1); } } 程序运行后,如果从键盘上输入1298;则输出结果为8921。 2、以下程序的输出结果是5。 main() {ints,i; for(s=0,i=1;i<3;i++,s+=i); printf("%d\n",s); } 3、阅读下面程序,程序的结果是2,1,0。 main() {inti=7; for(i=2;i>0;i--) printf(”%d,”,i); printf(”%d”,i);} 4、阅读下面程序,程序的结果是14,4。 main() {inti,j,m=0; for(i=2;i<=10;i+=4) for(j=3;j<=4;j++) {m++;i++;} printf("%d,%d",i,m);} 5、阅读下面程序,程序的结果是1978。 main() {intj,a=2,n=4; longs=0,t=0; for(j=0;j t=t*10+a; s=t; for(j=1;j {t=t/10; s=s-t;} printf(”%d”,s); } 6、以下程序运行后的输出结果是0918273645 main() { charc1,c2; for(c1='0',c2='9';c1 printf("%c%c",c1,c2); printf("\n"); } 7、以下程序的输出结果是5。 main() { ints,i; for(s=0,i=1;i<3;i++,s+=i); printf("%d\n",s); } 8、执行以下程序后,输出'#'号的个数是6。 main() {inti,j; for(i=1;i<5;i++) for(j=2;j<=i;j++)putchar('#'); } 9、以下程序的输出结果是x=4 main() {inti,j,x=0; for(i=1;i<2;i++) {x++; for(j=0;j<=3;j++) {if(j%2)continue; x++;} x++;} printf(“x=%d\n”,x);} 三、程序填空题 1、以下程序的功能是计算: m=1-2+3-4+…+9-10,并输出结果。 请填空。 main() {intm=0,f=1,i,n; scanf(“%d”,&n); for(i=1;i<=n;i++) {m+=i*f; f=-f; } printf(“m=%d”,m) } 2、以下程序的功能是计算s=1+1/2! +1/3! +1/4! +…+1/n! ,请填空。 main() { doubles=0.0,fac=1.0;inti; intn; scanf(“%d”,&n); for(i=1,i<=n;i++) {fac=fac*1.0/i; s=s+fac; } printf(“s=%lf”,s); } 3、以下程序的功能是计算: s=1+12+123+1234+12345。 请填空。 main() {intt=0,s=0,i; for(i=1;i<=5;i++) {t=i+t*10;s=s+t;} printf("s=%d\n",s); } 4、要使以下程序段输出10个整数,请填入一个整数。 for(i=0;i<=18;printf(“%d\n”,i+=2)); 5、以下函数的功能是: 求x的y次方,请填空。 doublefun(doublex,inty) {inti; doublez; for(i=1,z=x;i returnz; } 6、以下程序的功能是根据以下近似公式求π值: (π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n) 现在请你在下面的函数中填空,完成求π的功能。 main(){ doubles=0.0;longi,n; scanf(“%ld”,&n); for(i=1;i<=n;i++)s=s+1.0/(i*i); printf(“%lf”,sqrt(6*s)); } 7、以下用来输出两整数M和N之间的所有素数(质数),请填空,使程序能正确运行。 #defineM4 #defineN30 main() { inti,j,k,s=0; for(i=M;i<=N;i++) {for(j=2;j if(i%j==0)break; if(j>=i) {printf("%5d",i); s=s+1; if(s%5==0)printf("\n"); } } printf("\n"); } 8、以下程序实现: 从键盘输入一位整数,计算其各位数字之和。 比如输入整数31421,则打印结果为11。 请填空。 main(){ inti,sum=0,a; scanf("%d",&i); while(i>0){ a=i%10; sum+=a; i=i/10; } printf("%d\n",sum); } 9、以下程序实现: 计算1~10之间(不含10)的奇数之和以及偶数之和 main() { inta,b,i; a=b=0; for(i=0;i<10;i+=2) { a=a+i; b=b+i+1; } printf("偶数为: %d,奇数和为: %d\n",a,b); } 10、以下程序的功能是: 输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。 main() { inti,j; for(i=0;i<10;i++){ j=i*10+6; if(j%3==0)continue; printf(“%d”,j); } } 四、编程题 1.根据公式Π²/6≈1/1²+1/2²+1/3²+…+1/n²,求Π的近似值,直到最后一项的值小于10的负六次方为止。 [解答]: #include #include main() {longi=1; double pi=0; while(I*I<=10e+6) {pi=pi+1.0/(i*i); i++; } pi=sqrt(6.0*pi); printf(“pi=%10.6f\n”,pi); } 2.编写程序输出下面图形 * *** ***** ******* ***** *** * #include voidmain() {inti,j,m,n; for(i=0;i<3;i++)/显示总共有几行符号 {for(m=2;m>=i;m--) printf("");//输入相应的空格数,使每一行的符号相应相应的减少 for(n=6;n>5-i*2;n--) printf("*");//输入相应的*个数 printf("\n"); }for(j=0;j<4;j++)//显示总共有几行符号 {for(m=1;m<=j;m++) printf("");///输入相应的空格数,使每一行的符号的减少 for(n=0;n<7-j*2;n++) printf("*");/输入相应的*个数 printf("\n"); } }/ 3、求出用数字0至9可以组成多少个没有重复的三位偶数。 [解答]: #include main() {intn,i,j,k; n=0; for(i=1;i<=9;i++) if(k=0;k<=8;k+=2) if(k! =i) for(j=0;j<=9;j++) if(j! =i&&j! =k) n++; printf(“n=%d\n”,n); } 第二部分数组 一维数组的定义和引用;二维数组的定义和使用;字符数组。 一选择题 1.以下关于数组的描述正确的是()。 A.数组的大小是固定的,但可以有不同的类型的数组元素 B.数组的大小是可变的,但所有数组元素的类型必须相同 C.数组的大小是固定的,所有数组元素的类型必须相同 D.数组的大小是可变的,可以有不同的类型的数组元素 2.以下对一维整型数组a的正确说明是()。 A.inta(10);B.intn=10,a[n]; C.intn;D.#defineSIZE10 scanf("%d",&n);inta[SIZE]; inta[n]; 3.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。 A.整型常量 B.整型表达式 C.整型常量或整型表达式 D.任何类型的表达式 4.以下对一维数组m进行正确初始化的是()。 A.intm[10]=(0,0,0,0);B.intm[10]={}; C.intm[]={0};D.intm[10]={10*2}; 5.若有定义: intbb[8];。 则以下表达式中不能代表数组元bb[1]的地址的是()。 A.&bb[0]+1B.&bb[1]C.&bb[0]++D.bb+1 6.假定int类型变量占用两个字节,其有定义: intx[10]={0,2,4};,则数组x在内存中所占字节数是()。 A.3B.6C.10D.20 7.若有以下说明: inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; charc='a',d,g; 则数值为4的表达式是() A.a[g-c]B.a[4]C.a['d'-'c']D.a['d'-c] 8.以下程序段给数组所有的元素输入数据,请选择正确答案填入()。 #include main() { inta[10],i=0; while(i<10)scanf("%d",________); ┇ } A.a+(i++)B.&a[i+1]C.a+iD.&a[++i] 9.执行下面的程序段后,变量k中的值为()。 intk=3,s[2]; s[0]=k;k=s[1]*10; A.不定值B.33C.30D.10 10.若说明: inta[2][3];则对a数组元素的正确引用是()。 A.a(1,2)B.a[1,3]C.a[1>2][! 1]D.a[2][0] 11.若有定义: intb[3][4]={0};则下述正确的是()。 A.此定义语句不正确 B.没有元素可得初值0 C.数组b中各元素均为0 D.数组b中各元素可得初值但值不一定为0 12.若有以下数组定义,其中不正确的是()。 A.inta[2][3]; Bintb[][3]={0,1,2,3}; C.intc[100][100]={0}; D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}}; 13.若有以下的定义: intt[5][4];能正确引用t数组的表达式是()。 A.t[2][4]B.t[5][0]C.t[0][0]D.t[0,0] 14.在定义intm[][3]={1,2,3,4,5,6};后,m[1][0]的值是()。 A.4B.1C.2D.5 15.在定义intn[5][6]后第10个元素是()。 A.n[2][5]B.n[2][4]C.n[1][3]D.n[1][4] 16.若二维数组c有m列,则计算任一元素c[i][j]在数组中的位置的公式为()。 (假设c[0][0]位于数组的第一个位置) A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+1 17.若有以下定义语句,则表达式“x[1][1]*x[2][2]”的值是()。 floatx[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}}; A.0.0B.4.0C.5.0D.6.0 18.以下程序运行后,输出结果是()。 main() { inta[4][4]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 循环 数组 习题