C语言单元复习题 第06部份 循环
C语言习题 循环1

循环1一、单项选择题1、以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是__A____。
A. if((a>b)&&(b>c)) k=1;B. if((a>b)||(b>c)) k=1else k=0; else k=0;C. if(a<=b) k=0;D. if(a>b) k=1;else if(b<=c) k=1; else if(b>c) k=1;else k=0;2、C语言的do_while循环中,循环由do开始,用while结束;而且在while表达式后面的___B___不能丢,它表示do_while循环的结束。
A. \nB. “;”C. “%”D. “,”3、执行程序段:x=-1; do { x=x*x;} while(!x); 的结果是__C____。
A. 死循环B. 循环执行2次C. 循环执行一次D. 有语法错误4、下面程序段的输出结果是__D____。
int i,sum;for(i=1;i<=10;i++)sum+=sum;printf("%d\n",i);A. 10B. 9C. 15D.不确定5、以下叙述正确的是___C___。
A. for循环中设置for(条件)break,当条件成立时中止程序执行。
B. for循环中设置for(条件)continue,当条件成立时中止本层循环。
C. for循环中设置for(条件)break,当条件成立时中止本层循环。
D. for循环中设置for(条件)break,当条件成立时暂停本次循环。
6、下面有关for循环的正确描述是__D____。
A. for循环只能用于循环次数已经确定的情况。
B. for循环是先执行循环体语句,后判断表达式。
C. 在for循环中,不能用break语句跳出循环体。
D. for循环的循环体语句中,可以包含多条语句。
C语言单元复习题 第06部份 循环解析

一、单选题
1.以下关于循环的描述中,错误的是:( )。
A.可以用for语句实现的循环一定可以用while语句实现
B.可以用while语句实现的循环一定可以用for语句实现
C.可以用do...while语句实现的循环一定可以用while语句实现
D.do...while语句与while语句的区别仅仅是关键字while的位置不同
for(i=0,j=0; (j!=10)&&(i<5); i++);
A.无限次B.4次C.5次D.6次
(知识点:for语句; 难度系数:1; 答案:C )
18.下述语句执行后,变量i的值是:( )。
int i;
for(i=1;i++<3;);
printf("%d",i);
A.1B.2C.3D.4
(知识点:for语句; 难度系数:2; 答案:D )
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
(知识点:for语句; 难度系数:1; 答案:D )
15.对于for(表达式1;;表达式3)可理解为:( )。
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
(知识点:循环的基本概念; 难度系数:1; 答案:B )
3.以下关于循环体的描述中,错误的是:( )。
A.循环体中可以出现break语句
B.循环体中可以出现continue语句
C.循环体中不能出现switch语句
D.循环体中还可以出现循环语句
C语言循环习题答案

循环习题集锦一.选择题1.for(i=0;i<10;i++);结束后,i的值是;(10)A 9B 10C 11D 122.下面程序的循环次数是:(D)int k=0;while(k<10){if(k<1) continue;if(k==5) break;k++;}A. 5 B 6 C 4 D 死循环,不能确定循环次数3.下面程序的输出结果是(10)main(){int s,k;for(s=1,k=2;k<5;k++)s+=k;printf(“%d\n”,s);}A 1B 9C 10D 154.要使下面程序输出10个整数,则在下画线处填入正确的数是:(c)for(i=0;i<= ;)printf(“%d\n”,i+=2);A 9B 10C 18D 205.运行下面程序:(B)main(){ int i=10,j=0;do{ j=j+i;i--;}while(i>5);printf(“%d\n”,j);}输出结果是:A 45B 40C 34D 55 6.运行下面程序#include “stdio.h”main(){ int k=0,a=1;while(k<10){for( ; ;){ if((k%10)==0)break;elsek--;}k+=11;a+=k;}printf(“%d %d\n”,k,a);}则输出的结果是(C)A 21 32B 21 33C 11 12D 10 117.以下叙述正确的是:(D)A.do---while语句构成的循环不能用其他语句构成的循环来代替。
B.do---while语句构成的循环只能用break语句退出。
C.用do---while语句构成的循环,在while 后的表达式为非零时结束循环。
D.用do---while语句构成的循环,在while后的表达式为零时结束循环。
8.有如下程序:main(){ int x=3;do{printf(“%d”,x--);}while(!x);}该程序的执行结果是:(C)A 3 2 1B 2 1 0C 3D 29.若k为整型变量,则下面while循环执行的次数为:(A)k=10;while(k==0) k=k-1;A 0B 1C 10 D无限次10.下面有关for循环的正确描述是(D)A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体。
广技师C语言复习题4. 练习(循环结构)(有答案)

一、选择题1. 设有如下程序段,则下面描述正确的是int k=10;while (k=0) k=k-1;A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次2. 下面程序段的运行结果是a=1; b=2; c=2;while(a<b<c) { t=a; a=b; b=t; c--;}pirntf(“%d, %d, %d”,a,b,c);A.1,2,0 B.2,1,0 C.1,2,1 D.2,1,1 3. 下面程序段的运行结果是。
int n=0;while(n<=2) n++; printf(“%d”,n);A.2 B.3 C.4 D.有语法错误4. 设有如下程序段,则描述正确的是。
t=0;while (printf(“*”)){t++; if(t<3) break;}A.其中循环控制表达式与0等价B.其中循环控制表达式与‘0’等价C.其中循环控制表达式是不合法的D.以上说法都不对5. 下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对等数时结束循环,请选择填空。
#include<stdio.h>int main(){int a,b,t;scanf("%d%d",&a,&b);while( ){if(a>b) {t=a;a=b;b=t;}printf("%d,%d\n",a,b);scanf("%d%d",&a,&b);}return 0;}A.!a=b B.a!=b C.a==b D.a=b8. 下面程序的功能是在输入的一系列正整数中求出最大者,输入0结束循环,请选择填空。
#include<stdio.h>int main(){int a,max=0;scanf("%d",&a);while( ){if(max<a) max=a;scanf("%d",&a);}printf("%d\n",max);return 0;}A.!a=0 B.a!=0 C.a= =0 D.a=09. 下面程序的运行结果是。
C语言第六章复习题(含答案)

1.t为int类型,进入下面的循环之前,t的值为0while( t=l ){ ……}则以下叙述中正确的是( B )(A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1(C) 循环控制表达式不合法(D) 以上说法都不对2.有以下程序main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是 ( D )。
(A) 自然数1~9的累加和 (B) 自然数1~10的累加和(C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和3.以下程序段的输出结果是( C )。
int x=3;do{ printf("%3d",x-=2); }while(!(- -x));(A)1 (B)30 (C)1 -2 (D)死循环4.以下程序中,while循环的循环次数是( D)。
main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}(A) 1 (B) 10(C) 6 (D) 死循环,不能确定次数5.下面程序的输出是( B )。
(A)741 (B)852 (C)963 (D)875421main(){int y=9;for(;y>0;y--){if(y%3==0){printf("%d",--y);continue;}}}6.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( A)。
for (i=5;i;i--)for(j=0;j<4;j++){...}(A)20 (B)25 (C)24 (D)307.执行语句: for(i=l;i++<4;;);后,变量i的值是(C)。
(A) 3 (B) 4 (C) 5 (D) 不定8.假定a和b为int型变量,则执行以下语句后b的值为( D )。
C语言程序设计 – 第 06 章课后习题

C语言程序设计– 第六章课后习题电子13-02班王双喜一、选择题1. C语言中一维数组的定义方式为:类型说明符数组名(C)A. [整型常量]B. [整型表达式]C. [整型常量]或[整型常量表达式]D. [常量表达式]2. C语言中引用数组元素时,下标表达式的类型为(C)A. 单精度型B. 双精度型C. 整型D. 指针型3. 若有定义:int a[3][4];,则对a数组元素的非法引用是(D)A. a[0][3*1]B. a[2][3]C. a[1+1][0]D. a[0][4](解释:A、B、C均正确,D看起来引用不太妥当,但其亦有其意义(a[0][4]等价于a[1][0]))4. 若有定义:int a[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};,则a数组的第一维大小是(C)A. 1B. 2C. 3D. 4(解释:共9个元素,除以3即可得第一维大小是3;若有余数,则应加1)5. 若有定义:int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};,则值为5的表达式是(C)A. a[5]B. a[a[4]]C. a[a[3]]D. a[a[5]]6. 要求定义包含8个int类型元素的一维数组,以下错误的定义语句是(A)A. int N = 8;int a[N]; B. #define N 3while (a[2*N+2];C. int a[] = {0, 1, 2, 3, 4, 5, 6, 7};D. int a[1+7] = {0};(解释:数组的大小必须是整型常量或整型常量表达式)7. 若二维数组a有m列,则在a[i][j]前的元素个数为(A)A. i * m + jB. j * m + iC. i * m + i - 1D. i * m + j - 18. 下面是对数组s的初始化,其中不正确的是(D)A. char s[5] = {"abc"};B. char s[5] = {'a', 'b', 'c'};C. char s[5] = "";D. char s[5] = "abcdef";(解释:D中元素个数太多,算上'\0'共六个,非法)9. 下面程序段的运行结果是(B)char c[] = "\t\v\\\0will\n";printf("%d", strlen(c));A. 14B. 3C. 9D. 字符串中有非法字符,输出值不确定(解释:字符串中第四个是'\0'即结束标志,因此字符串长度是3)10. 判断字符串s1是否等于s2,应当使用(D)A. if (s1 == s2)B. if (s1 = s2)C. if (strcpy(s1, s2))D. if (strcmp(s1, s2) == 0)(解释:对于字符串来讲,其名字的内容是该字符串的起始地址,不能通过比较名字来比较相等,而应该用专用的函数进行逐字符匹配)二、写出程序的执行结果1. 程序一:# include <stdio.h>main(){int a[3][3] = {1, 3, 5, 7, 9, 11, 13, 15, 17};int sum = 0, i, j;for (i = 0; i < 3; i++)for (j = 0; j < 3; j++){a[i][j] = i + j;if (i == j) sum = sum + a[i][j];}printf("sum = %d", sum);}执行结果:打印sum = 6.(解释:a中各个元素的值是其行和列数字之和,sum内保存a中对角线元素之和,即sum = 0 + 2 + 4)2. 程序二:# include <stdio.h>main(){int i, j, row, col, max;int a[3][4] = {{1, 2, 3, 4}, {9, 8, 7, 6}, {-1, -2, 0, 5}};max = a[0][0]; row = 0; col = 0;for (i = 0; i < 3; i++)for (j = 0; j < 4; j++)if (a[i][j] > max){max = a[i][j];row = i;col = j;}printf("max = %d, row = %d, col = %d\n", max, row, col);}执行结果:打印max = 9, row = 1, col = 0.(解释:此程序的功能是逐行逐列扫描元素,总是将最大的元素赋给max,并保存该元素的行数和列数;因此执行完毕后,max是最大的元素(9),row是其行数(1),col是其列数(0))3. 程序三:# include <stdio.h>main(){int a[4][4], i, j, k;for (i = 0; i < 4; i++)for (j = 0; j < 4; j++)a[i][j] = i - j;for (i = 0; i < 4; i++){for (j = 0; j <= i; j++)printf("%4d", a[i][j]);printf("\n");}}执行结果:第一行打印0;第二行打印1 0;第三行打印2 1 0;第四行打印3 2 1 0。
国家开放大学C语言试题及答案

1.C语言中的循环类语句有3条,它们是()。
选择一项:A. for,if,whileB. for,while,doC. while,do,switchD. for,break,do正确答案是:for,while,do2.C语言中的跳转类语句有四条,它们是goto,return和()。
A. break,constB. static,continueC. break,continueD. while,extern正确答案是:break,continue3.当不需要函数返回任何值时,则所使用的返回类型为()。
A. IntB. unionC. voidD. Void 正确答案是:void4.在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和()。
选择一项:A. 表达式B. 语句C. 函数体D. 参数表正确答案是:参数表5.在一个程序文件的开始,若需要使用一个包含命令包含一个头文件时,则命令标识符为A. #cludeB. #constC. #includeD. #defile正确答案是:#include6.在#include预处理命令中,不可以包含()。
A. 系统头文件B. 程序文件C. 用户头文件D. 目标文件正确答案是:目标文件7.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据占用的字符位置个数为()。
选择一项:A. 5B. 6C. 4D. 2正确答案是:68.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据中,其小数部分占用的字符位置个数为()。
选择一项:A. 5B. 6C. 4D. 2正确答案是:29.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据中,其整数部分占用的字符位置个数为()。
A. 6B. 4C. 3D. 2正确答案是:310.在scanf()函数调用的格式字符串中,若使用格式符为“%f”,则对应输入的数据类型为()。
C语言复习题库(1)

一、填空题(每空 1 分,共20 分)1.程序的三种基本结构为(顺序)、(选择)和(循环)。
2.在C 语言中,用(;)表示语句的结束。
3.语句printf("%%d%d",123);将输出:(“%d123 )。
4.逻辑运算的结果值是(0 )或( 1 )。
5.数组 int a[3][4];共定义了(12 )个数组元素。
6.在 C 语言中,正确的标识符是由(数字、字母、下划线)组成的,且由(字母和下划线)开头的。
7.一个算法应具有的特点有:(有穷性)、(确定性)、有零个或多个输入、有一个或多个输出、有效性。
8.在程序执行过程中,其值不发生改变的量称为(常量),其值可变的量称为(变量)。
9.若有定义:int m=5,y=2;则执行表达式y+=y-=m*=y 后的y 值是(-16 )。
10.在三种正规循环中,当条件表达式的值为(0 )时,就结束循环。
11.C 语言中函数的参数分为(形式参数)和(实际参数)。
12.当函数的数据类型省略时,默认的数据类型为(int 型或者整数型)型。
13.按变量地址访问变量的方法叫(直接访问),通过存放变量地址的变量去访问变量的方法叫(间接访问)。
14.若有定义:int [3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是(0 ),a[2][1]得到的初值是( 6 )。
15.文件包含的一般形式为(#include <文件名> )。
16.宏定义中宏名一般用大写字母表示,容易做到(一改全改)。
17.结构体是一种(构造)数据类型用途是把(不同类型)的数据组合成一个整体。
18.位运算的运算对象只能是(整型)或(字符型)数据,而不可以是其他类型的数据。
19.(文件)是存储在外部介质上数据的集合,是操作系统数据管理的单位。
20.设有“int x=2,y”说明,则逗号表达式“y=x+5,x+y”的值是(9 )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C.用do...while语句构成循环时,在while后的表达式为零时不一定结束循环
D.用do...while语句构成循环时,在while后的表达式为零时结束循环
(知识点:do...while语句; 难度系数:1; 答案:D )
10.以下关于do...while语句的叙述中,正确的是:( )。
(知识点:循环的基本概念; 难度系数:1; 答案:D )
2.以下关于循环的描述中,错误的是:( )。
A.while、do...while和for语句的循环体都可以是空语句
B.for和do...while语句都是先执行循环体,后进行循环条件判断
C.while语句是先进行循环条件判断,后执行循环体的
D.使用while和do...while语句时,循环变量初始化的操作应在循环语句之前完成
A.break语句和continue语句都只能用于循环结构
B.break语句和continue语句都只能用于switch结构
C.break语句用于跳出循环体,continue语句用于跳出当次循环
D.continue语句用于跳出循环体,break语句用于跳出当次循环
(知识点:continue语句; 难度系数:1; 答案:C )
A.x==0B.x==1C.x!=lD.x!=0
(知识点:while语句; 难度系数:1; 答案:D )
5.在C语言中,当while语句构成的循环中的条件为( )时,结束循环。
A.0B.1C.真D.非0
(知识点:while语句; 难度系数:1; 答案:A )
6.有以下程序段:
int k=0;
while(k=1) k++;
B.do...while的循环体至少执行一次,而while的循环体可能一次都不会执行
C.对于while、do...while和for循环,都可以用continue语句跳出当次循环
D.for循环只能用于循环次数已经确定的情况,而while和do...while没有这种限制
(知识点:几种循环的比较; 难度系数:1; 答案:D )
for(i=0,j=0; (j!=10)&&(i<5); i++);
A.无限次B.4次C.5次D.6次
(知识点:for语句; 难度系数:1; 答案:C )
18.下述语句执行后,变量i的值是:( )。
int i;
for(i=1;i++<3;);
printf("%d",i);
A.1B.2C.3D.4
(知识点:for语句; 难度系数:2; 答案:D )
则以下说法正确的是:( )。
A.程序段执行无限次B.程序段中的do...while表达式不合法
C.程序段运行后输出0D.程序段运行后输出1
(知识点:do...while语句; 难度系数:1; 答案:A )
13.有以下程序段:
int x=-1;
do
{
x=x*x;
}while(!x);
则以下说法正确的是:( )。
30.列举出所有可能的情况,逐个判断有哪些符合问题所要求的条件,从而得到问题的解答。这种方法称为:( )。
A.递归法B.穷举法C.迭代法D.归纳法
(知识点:常用算法(穷举、递推、迭代)的基本应用; 难度系数:1; 答案:B )
31.为了得到问题的解,把它推到比原问题简单的问题求解。这种方法称为:( )。
A.递归法B.穷举法C.迭代法D.归纳法
(知识点:常用算法(穷举、递推、迭代)的基本应用; 难度系数:1; 答案:A )
32.对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。这种方法称为:( )。
A.递归法B.穷举法C.迭代法D.归纳法
(知识点:常用算法(穷举、递推、迭代)的基本应用; 难度系数:1; 答案:C )
A.do...while的循环体至少无条件执行一次
B.while的循环控制条件比do...while的循环控制条件严格
C.do...while允许从外部转到循环体内
D.do...while的循环体不能是复合语句
(知识点:do...while语句; 难度系数:1; 答案:A )
11.该程序段的输出结果是:( )。
二、多选题
1.以下关于循环的描述中,正确的有:( )。
A.可以用for语句实现的循环一定可以用while语句实现
B.可以用while语句实现的循环一定可以用for语句实现
C.for循环表达式的括号内的3个表达式均不可以省略
D.可以用do...while语句实现的循环一定可以用while语句实现
E.do...while语句与while语句的区别仅仅是关键字while的位置不同
E.当while语句构成的循环中的条件为真时,结束循环
(知识点:while语句; 难度系数:1; 答案:BD )
3.以下关于do...while语句的描述中,错误的有:( )。
A.用do...while语句构成循环时,在while后的表达式为零时不一定结束循环
B.用do...while语句构成循环时,在while后的表达式为零时结束循环
B.do...while允许从外部跳到循环体内
C.while的循环体至少无条件执行一次
D.while的循环控制条件比do...while的严格
(知识点:几种循环的比较; 难度系数:1; 答案:A )
25.以下关于C语言中几种循环的描述,错误的是:( )。
A.while和for是先判断表达式,后执行语句;而do...while是先执行语句,后判断表达式
(知识点:for语句; 难度系数:1; 答案:B )
16.以下循环体的执行次数是:( )。
main()
{
int i,j;
for(i=0,j=1;i<=j+1;i++,j--)
printf("%d\n",i);
}
A.3B.2C.1D.0
(知识点:for语句; 难度系数:1; 答案:B )
17.以下for语句运行时循环次数是:( )。
(知识点:while语句; 难度系数:1; 答案:B )
8.下述语句执行后,变量k的值是:( )。
int k=0;
while(k++<2);
printf("%d",k);
A.2B.3C.01D.12
(知识点:while语句; 难度系数:2; 答案:B)
9.以下叙述正确的是:( )。
A.do...while语句构成的循环不能用其他语句构成的循环代替
A.是无限循环B.循环执行两次
C.循环执行一次D.循环条件不合法
(知识点:do...while语句; 难度系数:1; 答案:C )
14.下面有关for循环的正确描述是:( )。
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
{
m=0;
for(j=k;j<=5;j++)
m=m+k*j;
}
printf(“%d\n”,m);
}
A.124B.25C.36D.15
(知识点:循环的嵌套; 难度系数:1; 答案:D)
22.下面程序的输出结果是:( )。
main()
{
int k=0,m=0;
int i,j;
for(i=0;i<2;i++)
B.continue语句可用于while循环
C.在循环体中使用break语句可以跳出循环体,提前结束循环
D.在循环体中使用continue语句是为了跳出循环,提前结束循环
(知识点:continue语句; 难度系数:1; 答案:D)
29.关于break语句和continue语句的区别,说法正确的是:( )。
main()
{
int n=9;
do
{
n--;
printf("%d",n);
}while(n>6);
}
A.987B.876C.8765D.9876
(知识点:do...while语句; 难度系数:1; 答案:B )
12.有以下程序段:
int i=0,s=0;
do
{
s=++i;
}while(i!=0);
printf("%d",s);
26.以下关于break语句的描述中,正确的是:( )。
A.在switch语句中必须使用break语句
B.reak语句只能用于switch语句体中
C.在switch语句中可以使用break语句
D.break语句只能用于循环语句中
(知识点:break语句; 难度系数:1; 答案:C )
27.以下描述中,错误的是:( )。
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)
m++;
printf("%d\n",m);
}
A.12B.15C.20D.25
(知识点:循环的嵌套; 难度系数:1; 答案:C)
21.下面程序的输出结果是:( )。
main()
{
int k,j,m;
for(k=5;k>=1;k--)
(知识点:循环的基本概念; 难度系数:1; 答案:B )
3.以下关于循环体的描述中,错误的是:( )。