当前位置:文档之家› 第六章 循环控制

第六章 循环控制

第六章 循环控制
第六章 循环控制

第七章数组

实验目的:

掌握一维数组的定义和引用

二维数组的定义和引用

字符数组的定义,初始化和引用。及字符串和运用。实验内容:

用筛选法求100之内的素数。

#include

main()

{ int i,j,a[100];

for(i=2;i<100;i++)

{ a[i]=i;

for(j=2;j<=i;j++)

{if(j

if(a[i]%j==0)

break;

if(a[i]-j==0)

printf("%5d",a[i]);

}

}

printf("\n");

}

#include"math.h"

main()

{static int i,j,k,a[98];

for(i=2;i<100;i++)

{a[i]=i;k=sqrt(i);

for(j=2;j<=a[i];j++)

if(j

break;

if(j>=k+1)

printf("%5d",a[i]);

}

printf("\n");

}

7.2用选择法对10个整数从小到大排序。#include

main()

{ int i,j,a[10],t;

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(j=1;j<10;j++)

for(i=0;i<=9-j;i++)

if(a[i]>a[i+1])

{t=a[i+1];a[i+1]=a[i];a[i]=t;}

for(i=0;i<10;i++)

printf("%5d",a[i]);

}

7.3求一个3×3矩阵对角线元素之和。

#include

main()

{int i=0,j=0,a[3][3],s1,s2;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

s1=a[0][0]+a[1][1]+a[2][2];

s2=a[0][2]+a[1][1]+a[2][0];

printf("s1=%d,s2=%d\n",s1,s2);

}

7.4已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。

#include

main()

{ static int a[10]={1,7,8,17,23,24,59,62,101};int i,j,t;

scanf("%d",&a[9]);

for(i=9;i>0;i--)

if(a[i]

{t=a[i-1];a[i-1]=a[i];a[i]=t;}

for(i=0;i<10;i++)

printf("%5d",a[i]);printf("\n");

}

7.5将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。

#include

main()

{ int i,b[10];

for(i=0;i<10;i++)

scanf("%d",&b[i]);

for(i=9;i>-1;i--)

printf("%5d",b[i]);

printf("\n");}

7.6打印出以下杨辉三角形(要求打印出10行)。1

1 1

12 1

133 1

1464 1

1510105 1

#include

main()

{ static int m,n,k,b[15][15];

b[0][1]=1;

for(m=1;m<15;m++)

{for(n=1;n<=m;n++)

{ b[m][n]=b[m-1][n-1]+b[m-1][n];

printf("%-5d",b[m][n]);}printf("\n");

}

}

}

7.7 打印“魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为

8 1 6

3 5 7

4 9 2

要求打印出由1~n2的自然数构成的魔方阵。

解:

#include

main()

{ int a[16][16],i,j,k,p,m,n;

p=1;

while(p==1) /*要求阶数为1~15的商数*/

{ printf("Enter n(n=1~15):");

scanf("%d",&n);

if((n!=0)&&(n<=15)&&(n%2!=0)) p=0;

}

for(i=1;i<=n;i++) /*初始化*/

for(j=1;j<=n;j++) a[i][j]=0;

j=n/2+1; /*建立魔方阵*/

a[1][j]=1;

for(k=2;k<=n*n;k++)

{ i=i-1;

j=j+1;

if((i<1)&&(j>n))

{ i=i+2;

j=j-1;

}

else

{ if(i<1) i=n;

if(j>n) j=1;

}

if(a[i][j]==0) a[i][j]=k;

else

{ i=i+2;

j=j-1;

a[i][j]=k;

}

}

for(i=1;i<=n;i++) /*输出魔方阵*/

{ for(j=1;j<=n;j++)

printf("%4d",a[i][j]);

printf("\n");

}

}

实验知识点:

一维数组的定义

类型说明符数组名【常量表达式】

数组名的命名规则和变量名相同,遵守标识符命名规则。

在定义数组是,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。

常量表达式中可以包括常量和符号常量,不能包含变量。

1.1一维数组与元素的引用。

数组必须先定义,然后使用。C语言规定只能逐个引用数组元素而不能引用整个数组。数组元素的表达方式

数组名【下标】

1.2一维数组的初始化

(1)在定义数组时对数组元素赋予初值。

(2)可以只给一部分元素赋值。

(3)如果想使一个数组中全部元素都为0,可以写成:

Int a[10]={0,0,0,0,0,0,0,0,0,0};

或int a[10]={0};

不能给数组整体赋初值。

在对全部数组元素赋初值时,由于数组的个数已经确定,因此可以不指定数组长度。

二维数组的定义和使用。

二维数组的一般形式:

类型说明符数组名【常量表达式】【常量表达式】

可以看成是特殊的一维数组,它的元素又是一个一维数组。

二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第一个元素,再存放第二行元素。

2.1二维数组的引用

二维数组元素的表示形式为:

数组名[下标][下标]

数组元素可以出现在表达式中,也可以被赋值。

2.2二维数组的初始化

(1)分行给二维数组赋初值。

(2)可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。

(3)可以对部分元素赋初值。

(4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

3.字符数组

字符数组的定义:与以上类似。

对字符数组初始化,最容易理解的方式是逐个个数组中各个元素。如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的额。如果花括号中提供的初值个数大于数组长度,则按语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符。

如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

4.2字符数组的引用

可以引用字符数组中的一个元素,得到一个字符。

在c语言中,是将字符串作为字符数组来处理的。C语言规定,字符串的结束标志是字符‘\0’。系统对字符串常量也自动加一个‘\0’作为结束符。有了结束标识符’\0’后,字符数组的长度就显得不那么重要。用‘\0’作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。

可以用字符串常量来使字符数组初始化,字符数组并不要求他的最后一个字符为’\0’,甚至可以不包含’\0’,

4.3字符数组的输入输出

(1)逐个字符的输入输出。用格式符“%c”输入或输出一个字符。

(2)将整个字符串一次输入或输出。用”%s”格式符,意思是对字符串(string)的输入输出。

输出字符不包括结束字符’\0’.

用“%s”格式符输出字符串,printf函数的输出项是字符数组名,而不是数组元素名。

如果数组长度大于字符串的实际长度,也只输出到遇到’\0’结束。如果一个字符数组中包含一个以上的’\0’,则遇到第一个’\0’时输出就结束。

可以用scanf函数输入一个字符串。Scanf函数的输入项如果是字符数组名,不要再加地址符&,因为在c语言中数组名代表该数组的起始地址。

4.5字符串处理函数

Puts函数的一般形式puts(字符数组)其作用是将一个字符串输出到终端。可以包含转义字符。

Gets函数的一般形式:gets(字符数组)其作用是从终端输入一个字符串到字符数组,并且得到一个函数值,

Puts和gets函数只能输出或输入一个字符串,不能写成

Puts(str1,str2)或gets(str1,str2)

Strcat函数的一般形式:strcat(字符数组1.字符数组2)

Stract是STRing CATenate的缩写,其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。

字符数组1必须足够大,以便容纳连接后的新字符串,

连接前两个字符串的后面都有’\0’,连接时将字符串1后的’\0’去掉只在新串最后保留’\0’。

Strcpy和strncpy函数

Strcpy(字符数组1,用是将字符串2复制到字符数组1中去。

字符数的字符串组1必须足够大,以便容纳被复制。

“字符数组1“必须写成数组名形式,“字符串2”可以是字符数组名,也可以是一个字符串常量。

如果在复制前未对str1数组赋值,则str1个字节中的内容是无法预知的,复制是将str2中的字符串和其后的’\0’一起复制到字符数组1中,取代字符数组1中前面的6个字符,最后4个字符并不一定是’\0’,而是str1中原有的最后4个字节的内容。

不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

可以用strncpy函数经字符串2前面n个字符复制到字符数组1中去。

Strcmp函数的一般形式:strcmp(字符串1,字符串2)是字符串比较的缩写,作用为比较字符串1和字符串2.

字符串的比较规则与其他语言的规则相同,即对两个字符串自左向右逐个字符相比,直到出现不同的字符或遇到’\0’为止。如果参加比较的两个字符串都由英文字母组成,则有一个简单的规律,在英文字典中,位置在后的为大。

比较的结果由函数值带回。

如果字符串1=字符串2,则函数值为0;

如果字符串1>字符串2,函数值为一个正整数;

如果字符串1<字符串2,函数值为一个负整数。

Strlen函数:strlen(字符数组)

Strlwr函数与strupr函数。

第八章函数

实验目的:

1.知道函数定义的一般形式

2.了解函数参数和函数的值

3.会运用函数的调用

4.知道函数的嵌套调用和递归调用。

5.指定当数组作为函数参数是数组中的各个部分对应函数参数

6.掌握局部变量和全局变量

7.了解变量的存储类别及内部函数和外部函数

实验内容:

1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这

个函数,并输出结果。两个整数由键盘输入。

2.写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。

3.写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。

4.写一个函数,输入一个4为数字,要求输出这4个数字字符,但每两个数字

间空一个空格。如输入1990,应输出“1990”

5.编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格

和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

实验知识点:

1.一个较大的程序一般应分为若干个程序模块,每一个模块对应相应的功能,

在程序开发中,常将一些常用的功能模块编写成函数,放在公共函数库中。

说明:

(1)一个c程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文

件,对于较大的程序,一般不把所有的内容放在一起,而是将他们放在不同的文件中,再由若干个源程序组成一个c程序。

(2)一个源程序文件由一个或多个函数以及其他有关内容组成。一个源程序文件

是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。

(3)C程序的执行是从main函数开始的,如果在main函数中调用其它函数,在

调用后流程返回到main函数,在main函数中结束整个程序的运行。(4)所有的函数都是平行的,即在定义函数时分别进行的,是互相独立的。一个

合适并不从属另一个函数,即函数不能嵌套定义。函数间可以互相调用,单不能调用main函数。Main函数是系统调用的,

(5)从用户使用的角度看,函数是两种。标准函数即库函数,他是由系统提供的,

用户不必自己定义而直接使用它们。

用户自己定义的函数。他是用以解决用户专门需要的函数。

(6)从函数的形式看,函数分两类。

无参函数与有参函数。

2.函数的一般形式

2.1无参函数的一般形式

类型标识符函数名()

{

声明部分

语句部分

}

2.2有参函数的一般形式

类型标识符函数名(形式参数表列)

{

声明部分

语句部分

}

如果在定义函数是不指定函数类型,系统会隐含指定函数类型为int型。

2.3空函数

类型说明符函数名()

{ }

2.4函数的返回值

通常,希望通过函数调用使主调函数能主调函数能得到一个确定的值,这就是函数的返回值。

(1)函数的返回值是通过函数中的return语句获得的。Return语句将被调用函

数中的一个确定带回一个函数值,被调用函数中,必须包含return语句。(2)函数值的类型。既然函数有返回值,这个值当然应属于某一个确定的类型,

应当在定义函数时指定函数值的类型。

(3)在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。

如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。

对数值型数据,可以自动进行类型转换,即函数类型决定返回值的类型。

(4)对于不带回值得函数,应当用“void”定义函数为“无类型”。

1.函数的调用

函数调用的一般形式:函数名(实参表列)

如果调用无参函数,则实参表列可以没有,但括号不能省略。如果实参表列包含多个实参,则各参数见用逗号隔开。

3.1函数调用的方式有三种。

函数语句:把函数调用作用一个预计。函数表达式:函数出现在一个表达式这,这种表达式称为函数表达式。函数参数:函数调用作为一个函数的实参。

3.2对被调用函数的声明和函数原型

(1)首先被调用的函数必须是已经存在的函数。

(2)如果使用库函数,还应该在本文件开头用#include命令将调用有关

库函数时所需用到的信息“包含”到本文件中。

(3)如果使用用户自己定义的函数,而该函数的位置在调用它的函数的

后面,应该在主调用函数中队被调用的还是做声明。

函数的声明和定义是两回事。定义是对函数功能的确立,包括指定函数名、函数值类型、形参及其类型、函数体等。

函数原型的一般形式有两种:

(1)函数类型函数名(参数类型1,参数类型2,….参数类型n);

(2)函数类型函数名(参数类型1,参数名1,参数类型2,参数名2,….

参数类型n,参数名n)

应当保证函数原型与函数首部写法上的一致,即函数类型、函数名、参数个数、参数类型必须与函数原型这得形参类型赋值兼容。

如果被调用函数的定义出现在主调函数之前,可以不必加以声明。

以前的c语言版本的函数声明方式不是采用函数原型,而只是声明函数名和函数类型。

如果已在文件的开头,已对本文件所调用的函数进行了声明,则在各函数中不必对其所调用的函数再做声明。

如果被调用的函数类型为整型,c语言允许在调用函数前不必做函数原型声明。

2.函数的嵌套调用

C语言的函数定义是相互平行的、独立的。一个函数不能包含另一个函数。但可以嵌套调用函数,

3.函数的递归调用

在调用一个函数的过程中又直接或间接地调用该函数本身,称为函数的递归调用。但只能出现有限次数、有终止的递归调用。必须具有一个结束递归过程的条件。

4.数组作为函数参数

数组元素也可以作为函数实参,其用法与变量相同。此外,数组名也可以作为实参和形参,传递的是数组首元素的地址。

6.1数组元素作函数实参

由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素可以作为函数的实参。

6.2可以用数组名作函数参数,此时形参应当用数组名或指针变量。

(1)用数组名做函数参数,应该在主调函数与被调用函数分别定义数组。

(2)实参数组与形参数组类型应该一致,如不一致,结果将出错。

(3)在被调用函数中声明了形参数组的大小为10,但在实际上,指定其大小是不起任何作用的,因为c语言编译对形参数组大小不做检查,只是将实参数组的首元素的地址传给形参数组。

(4)形参数组可以不指定那个大小,在定义数组是在数组名后面跟一个空的方括号。有时为了在被调用函数中处理数组元素的需要,可以另设一个形参,传递需要处理的数组元素的个数。

最后注意一点:用数组名作函数实参是,不是把数组元素的值传递给形参,而是把实参数组的首元素的地址传递给形参数组,这样两个数组就共占同一段内存单元。

6.4多维数组名作函数参数

可以用多维数组名作为函数的实参和形参,在被调用函数中对形参数组定义时,可以指定每一维的大小,也可以省略第一维的大小声明。

二维数组是由若干个一维数组组成的,数组是按行存放的,因此在定义二维数

组时必须指定列数.在第二维大小相同的前提下,形参数组的第一维可以与实参数组不同.

5.局部变量和全局变量

在一个函数内部定义的变量是内部变量,他只在本范围内有效.只有在本函数内使用才有效,在函数外使用无效.

(1)主函数中定义的变量(m,n)也只在主函数中有效,而不因为在主函数中定

义而在整个文件或程序中有效.主函数也不能使用其他函数中定义的变量.

(2)不同函数中可以使用相同名字的变量,他们代表不同的对象,互不干扰.

(3)形参参数也是局部变量.

(4)在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句

中有效.

8.1全局变量

程序的编译单位是源程序文件,一个源程序可以包含一个或若干个函数.在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量.外部变量是全局变量.全局变量可以为本文件中其他函数所共用.他的有效范围从定义变量的位置开始到本源文件结束.

(1)设置全局变量的作用是增加了函数间数据的渠道.将全局变量名的第一

个字母大写.

(2)建议不在必要时不要使用全局变量.

全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时开辟单元,他使函数的通用性降低,因为函数在执行时要依赖于其所在的外部变量.如果建宁公主一个函数移到另一个文件中,还要将有关的外部变量及其值一起移过去.使用全局变量过多,会降低程序的清晰性,人们往往难以清除的判断出每一个瞬间各个外部变量的值.

(3)如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作范

围内,外部变量被屏蔽,即他不起作用.

6.变量的存储类别

从作用域角度来分,可以分为全局变量和局部变量.从变量值存在的时间角度看,可以分为静态存储方式和动态存储方式.

存储空间可以分为三个部分,:程序区;静态存储区;动态存储区.

全局变量全部存放在静态存储区,在程序开始时给全局变量分配存储区,程序执行完毕就释放.

在动态存储区存放以下的数据:

(1)函数形式参数.在调用函数时给形参分配存储空间.

(2)自动变量.

(3)函数调用时的现场保护和返回地址等.

如果在一个函数中两次调用同一个函数,分配给此函数中局部变量的存储空间地址可能是不同的.

8.1auto变量

函数中的局部变量,如果不专门声明为static存储类别,都是动态地分配存储空间的,数据存储在动态存储区中.

8.2用static声明局部变量

函数中的局部变量的值在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次该函数调用时,就是上一次函数调用结束时的值.这时就应该指定该局部变量为静态局部变量,用关键字static进行声明.

(1)静态局部变量属于静态存储类别,在静态存储区内分配存储单元.在程序

整个运行期间度不释放.

(2)对静态局部变量是在编译时赋初值的,即只赋初值一次.

(3)如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动

赋初值或空字符.

(4)虽然静态局部变量在函数调用结束后仍然存在.

8.4register变量

变量的值是存放在内存中的.当程序中用到哪一个变量的值时,由控制器发出指令将内存中该变量的值送到运算器中.经过运算器进行运算,如果需要存数,再从运算器将数据送到内存存放.

(1)只有局部自动变量和形式参数可以作为寄存器变量,其他不行.

(2)一个计算机系统中的寄存器数目是有限的,不能定义任意多个寄存器变

量.

(3)局部静态变量不能定义为寄存器变量.

6.5用extern声明6外部变量

外部变量是在函数的外部定义的全局变量,他的作用域是从变量的定义处开始,到本程序文件的末尾.在此作用域内,全局变量可以为程序中各个函数所引用.

(1)在一个文件内声明外部变量

如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件结束.如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作外部变量声明,表示该变量是一个已经定义的外部变量. (2)在多文件的程序中声明外部变量

如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量num,不能分别在两个文件中各自定义一个外部变量num,而在另一个文件中用extern对num作外部变量声明.

8.6用static声明外部变量

在程序中希望某些外部变量只限于被本文件引用,而不能其他文件引用.这时可以在定义外部变量是加一个static声明.这种加上static声明\只能用于本文件的外部变量称为静态外部变量.

8.7关于变量的声明和定义

一个函数一般由两个部分组成:声明部分和执行语句.对表里而言,声明与定义的关系稍微复杂一些,在声明部分出现的变量有两种情况.一种是需要建立存储空间,另一种是不需要建立存储空间的.外部变量定义和外部变量声明的含义是不同的.外部变量的定义只能有一次,他的位置在函数之外,而同一文件中的外部变量的声明可以有多次.

用static来声明一个变量的作用:

(1)对局部变量用static声明.则使该变量在整个程序执行期间不释放,为其

分配的空间始终存在.

(2)全局变量用static声明,则该变量的作用只限于本文件模块.

8.8存储类别小结

对一个函数的定义,需要知道两种属性:数据类型和存储类别,分别使用两个关键字.

下面从不同的角度做归纳:

(1)从作用域分,有局部变量和全局变量.

(2)从变量存在的时间来分,有动态存储和静态存储两种类型,静态存储是程

序整个运行时间都存在,而动态存储着是在调用函数时临时分配单元.

(3)从变量值存放的位置来区分.

(4)关于作用域和生存期的概念,从前面叙述可以知道,对一个变量的性质可

以从两个方面分析,一是变量的作用域买一送一变量值的存在时间的长短.

7.内部函数与外部函数

函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数不能被其他文件调用.根据函数能否被其他源文件调用,将函数分为内部函数和外部函数.

第6章 循环结构程序设计

第6章循环结构程序设计 【计划课时】授课6课时+上机4课时 6.1 概述 循环是在循环条件为真时计算机反复执行的一组指令(循环体)。 循环控制通常有两种方式: ·计数控制——事先能够准确知道循环次数时用之 用专门的循环变量来计算循环的次数,循环变量的值在每次执行完循环体各语句后递增,达到预定循环次数时则终止循环,继续执行循环结构后的语句。 ·标记控制——事先不知道准确的循环次数时用之 由专门的标记变量控制循环是否继续进行。当标记变量的值达到指定的标记值时,循环终止,继续执行循环结构后的语句。 在C语言中可用以下语句构成循环: if … goto while do … while for 6.2if … goto语句循环结构P106 goto是一种无条件转向语句。 一般形式: goto标号; if … goto 可构成当型/直到型循环结构(尽量少用,以提高程序可读性/结构性)。 【例一】 { int n=0,sum=0; loop: sum+=n; ++n; if (sum<=10000) goto loop; printf(“n = %d\n”,n); }

6.3 while 语句循环结构 P107 一般形式 while (条件表达式) 循环体; 用于构成当型循环:先判断后执行/条件为真继续循环,直到条件为假时结束循环。 【注意】条件表达式或循环体内应有改变条件使循环结束的语句,否则可能陷入“死循环”。 【例一】 main() { int n=0; while (n<=2) { n++; printf(“%d”,n); } } 结果:123 【讨论】若去while 语句中的{},结果:3;若将n++移到printf 语句中,结果:012 【例二】 int n=0; while (n++<=2); printf(“%d”,n); 结果:4 【讨论】n=3时,while 条件为假,结束循环,但比较后n 自加了一,所以n=4。 【例三】 main() { int i=0; while (1) { printf(“*”); i++; 【例二】 main() { int n=0,sum=0; loop: if (sum>=10000) goto end; sum+=n; ++n; goto loop; end: printf(“n = %d \n”,n); }

南昌大学第六章循环控制答案

A.20 B.24 C.25 D.30 A.1 B.30 C.1 -2 D. A.15 B.14 C. D.0 A. B. C. D.

A.45 B.55 C.0 D. A.while B. C. D. A. 2 B. 3 C. 4 D. A. 1,2,0 B. 2,1,0 C. 1,2,1 D. 2,1,1

A. 20 B. 6 C. 20 D. 8 A.!a=b B.a!=b C.a==b D.a=b A. continue B. C. D. A. B. x>=0 C. printf D.

A. B. C. D. A.for B.for C. D.for 括号括起来 A.for( B.for( C)for(D)for( A) B)0 C)1D)2 A)3 B)4

C)5 D) A. B. C. D. A.k-- B.k=k+1 C.k++ D.k+=2 21 #include main() {int day=0,buy=2; float sum=0.0 ,ave; do{ sum+=0.8*buy; day++; buy*=2} while(buy<=100); ave=sum/day; printf(”%f,ave);} 21 #include main() {int i; for(i=1;i<100;i++) if(i*i%10==i || i*i%100==i)

printf("%3d",i); } 22 #include main() { int i , j; float g,sum,ave; for(i=1; i<=6; i++) { sum=0.0; for(j=1; j<=5;j++) { scanf("%f",g); sum=sum+g; } ave=sum/5; printf("No.%d ave=%5.2f\n",i,ave); } } 23 #include void main() { int a , b, p,t ,r printf("input a b :"); scanf("%d,%d", &a,&b); p=a*b; if(b>a) {t=a;a=b;b=t;} while((r=a%b)!=0) { a=b; b=r; } printf("max_gy=%d\n", b); printf("min_gb=%d\n",p/b); } 24 #include void main() { int i,a,n; long s=0 , sum=0; clrscr(); printf("input a , n :\n"); scanf("%d,%d",&a,&n); for(i=1;i<=n;i++) { s=s*10+a; sum=sum+s; } printf("a=%d n=%d sum=%ld",a,n,sum);

软件工程第六章答案

精心整理 作业4参考答案 1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?

ENDIF 3.画出下列伪码程序的程序流程图和盒图: START IFpTHEN WHILEqDO f g n (2 4.下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。

(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag 的程序。 答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个 (2 (3)不使用flag把该程序改造为等价的结构化程序 的方法如图4-4所示。 图4-4与该图等价的结构化程序(不用flag)5.研究下面的伪代码程序: LOOP: SetIto(START+FINISH)/2

IfTABLE(I)=ITEMgotoFOUND IfTABLE(I)ITEMSetFINISHto(I-1) If(FINISH-START )>1gotoLOOP IfTABLE(START)=ITEMgotoFOUND 入口和一个出口,而该程序的流程途中有两个出口。(3)等价的结构化程序的流程图如下:

(4)此程序有二分查找的功能,它完成预定功能的隐含前提条件是现有序列为从小到大顺序排好的有序序列。 6.用Ashcroft_Manna技术可以将非结构化的程序转化为结构化程序,图6.19是一个转换的例子。 (2)进一步简化后的结构化程序的流程图如下所示。

第六章循环控制概要

第六章循环控制 通过本章实验作业应达目标 1.熟悉while、for、do_while、break、continue语句的作用与使用规范。 2.学习并掌握利用while语句、for语句、do_while语句实现循环结构。 3.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。 4.进行算法设计训练,能综合所学控制结构语句解决一般问题。 本章必须上交作业 程序6_1.c、6_2.c、6_5.c、6_6.c、6_8.c上传至211.64.135.121/casp。 本章开始,上机实验项目量加大,希望同学们多多自行上机。本章实验项目有余力都可以做一下并上交。 循环程序设计 计算机解决问题都是按指定的顺序执行一系列的动作。按照特定的顺序执行相应的动作来求解问题的过程称为算法。程序中的语句是算法的体现,而算法要解决的是“做什么”和“怎么做”的问题。 计算机程序中指定语句的执行顺序称为“程序控制”。结构化的程序控制包含三种基本结构:顺序结构,选择结构和循环结构。 1. 循环设计 循环是在循环条件为真时反复执行的一组计算机指令,是计算机解题的一个重要结构。循环控制有两种基本方法:计数法和标志法。 1)计数器控制的循环 事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。 教材例6.2、6.3、6.7都是典型的计数器控制的固定次数次数循环。 2)标志控制的循环 事先不知道准确的循环次数,由某一目标值标记循环的结束。如,教材例6.6中以|t|的值达到标记下限值1e-6作为循环的结束。 循环设计时要注意合理设计循环条件,使得循环不会成为死循环。 2. 算法 程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。 循环主要用来解决程序设计中两类基本的算法:穷举和迭代。 1)穷举 穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。 例:输入两个正整数x和y,求其最大公约数。 main() {int x,y,i,flag; printf("Please input two numbers:"); scanf("%d%d",&x,&y);

6 循环控制

6 循环控制 一、单项选择题 1、for(i=1;i<9;i+=1);该循环共执行了(C)次。 A. 7 B. 8 C. 9 D. 10 分析:第一次i=1,i<9,i+1=2; 第二次i=2,i<9,i+1=3; …… 第八次i=8,i<9,i+1=9 第九次i=9,i<9不满足,跳出循环。 2、int a=2;while(a=0) a--;该循环共执行了(A)次。 A. 0 B. 1 C. 2 D. 3 分析:a=2不满足初始条件a=0,直接跳出循环,不执行a--。 3、执行完循环 for(i=1;i<100;i++);后,i 的值为(B)。 A. 99 B. 100 C. 101 D. 102 分析:第一次 i=1,a<100,i+1=2; 第二次 i=2,a<100,i+1=3; …… 第99次 i=99,i<100,i+1=100; 第100次 i=100,不满足i<100,跳出循环,i=100。 4、以下 for语句中,书写错误的是(C)。 A. for(i=1;i<5;i++) B. i=1;for(;i<5;i++) C. for(i=1;i<5;i++); D. for(i=1;i<5;) i++; 分析:for语句后面的第一个、第三个语句都可以省略,只需要规定循环条件避免循环无休止的进行。但for语句后面不需要加“;”。 5、(C)语句,在循环条件初次判断为假,还会执行一次循环体。 A. for B. while C. do-while D. 以上都不是 分析:do..while无条件执行一次先,而while或for语句都是先判断,满足条件后在执行。用for语句可以完全替代while语句。 6、有以下程序段 int i=5; do{ if(i%3==1) if(i%5==2) {printf("*%d",i); break; } i++; } while(i!=0);

第6章循环结构(二)

第6章 循环结构(二) ◇本章工作任务 实现MyShopping统计顾客的年龄层次 实现MyShopping循环录入会员信息 实现MyShopping登录时用户信息验证 ◇本章技能目标 会使用for循环结构 会在程序中使用break和continue

本章单词 请在预习时学会下列单词的含义和发音,并填写 在横线处。 1.rate: 2.young: 3.schedule: 4.negative: 5.customer: 6.birthday: 7.point: 8.continue: 9.return: _

本章简介 上一章我们学习了while和do-while循环结构。在编程的过程中,把一些重复执行的代码采用循环结构进行描述,大大简化了编码工作,使得代码更加简洁、易读。相信通过使用循环结构编程,你一定体会到了它的魅力。while循环结构是先进行条件判断,然后执行循环操作;do-while循环结构是先执行依次循环操作,然后进行判断。但是Java中的循环结构不只有while和do-while两种,还有for循环结构,它又是什么样子的?有什么功能?这一章就让我们揭晓这一结构:for循环结构。 6.1 for循环 6.1.1 为什么需要for循环 在上一章,通过使用while循环,张浩轻松解决了老师补充的问题,如示例1所示。 示例1 public class WhileDemo { public static void main(String[] args) { int i=0; while(i<100){ ←使用while循环 System.out.println(“好好学习,天天向上!”); i++; } } } 仔细观察你会发现,这里的循环次数“100遍”已经固定,这是我们也可以选用for循环结构来实现,如示例2所示。 示例2 public class ForDemo { public static void main(String[] args) { for(int i=0; i<100; i++;) { ←使用for循环 System.out.println(“好好学习,天天向上!”); } } }

第六章循环结构练习题

第六章循环控制 【题6.1】设有程序段 int k=10; while(k=10) k=k-1; 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次 【题6.2】设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf(“%d”,s); 则。 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 【题6.3】下面程序段的运行结果是。 int n=0; while(n++<=2); printf(“%d”,n); A)2 B)3 C)4 D)有语法错 【题6.4】下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请选择填空。 #include main() { char c; while((c=getchar())!=‘\n’) { if(c>=‘a’&&c<=‘z’) { 【1】; if(c>‘Z’) 【2】; } printf(“%c”,c); } } 【1】 A)c+=2 B)c-=32 C)c=c+32+2 D)c-=30 【2】 A)c=‘B’B)c=‘A’C)c-=26 D)c=c+26 【题6.5】下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。 #include main() { int a,max=0; scanf(“%d”,&a); while(【1-B】) { if(max

最新C语言第六章循环结构复习题

循环结构程序设计复习题 一.选择题 1.以下while循环中,循环体执行的次数是:() k=1; while (--k) k=10; a) 10次b) 无限次c) 一次也不执行d) 1次 2.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=0; while (!x!=0) x++; a) 退出while循环后,x的值为0 b) 退出while循环后,x的值为1 c) while的控制表达式是非法的 d) while循环执行无限次 3. 有以下程序段,其中n为整型变量,执行后输出结果是:() n=20 ; while(n--) ; printf(“%d”,n) ; a) 2 b) 10 c) -1 d) 0 4. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:() t=1; while (-1)

{ t--; if(t) break;} a) 循环一次也不执行 b) 循环执行一次 c) 循环控制表达式(-1)不合法 d) 循环执行2次 5. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=-1; do {;} while (x++); printf(“x=%d”,x); a) 该循环没有循环体,程序错误 b) 输出x=1 c) 输出x=0 d) 输出x=-1 6. 有以下程序段,其中x,y为整型变量,程序输出结果是:() for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ; printf(“x=%d,y=%d”,x,y); a) x=2,y=0 b) x=1,y=0 c) x=1,y=1 d) x=0,y=0

第六章循环控制(6033)

请你负责具体第五章、第六章的题目,主要有以下几个方面: 2、将相应章节的题库内容进行审核,主要包括题目本身及答案是否正确,题目的难易度是否合适(太难或太偏可删除),题目是否有重复,格式是否符合导入数据库规范; 3、审核后的相应章节题目若每章不够60题,请进行补充。 4、第二阶段工作请于3月底完成,如有不清楚,可与我电话联系。 1.阅读下列程序: main( ) { int n[3],i,j,k; for(i=0;i〈3;i++〉 n[i]=0; k=2; for (i=0;i〈k;i++〉 for (j=0;j〈k;j++〉 n[j]=n[i]+1; printf("%d\n",n[1]); } 程序运行后输出结果是(D)。 A. 2 B. 1 C.0 D. 3 2.以下正确的描述是(B)。 A.continue语句的作用是结束整个循环的执行 B.只能在循环体内和switch语句体内使用break语句 C.在循环体内使用break语句或continue语句的作用相同 D.从多层循环嵌套中退出时, 只能使用goto语句 3.若int x;且有下面的程序片断,则输出结果是(A)。 for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "**%d\n", x); } A.##3 **4 ##5 B.**3

##4 **5 C.**3 ##4**5 D.##3**4 ##5 4.下列保留字中用于构成循环结构的是( B)。 A.if B.while C.switch D.default 5.以下程序段的输出结果为( B)。 for(i=4;i>1;i--) for(j=1;j

软件工程第六章答案

作业4参考答案 1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?

3.画出下列伪码程序的程序流程图和盒图: START IFpTHEN WHILEqDO f g n 答: (2 4 (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。

答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。 (2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图4-3描绘了等价的结构化程序的盒图。 IfTABLE(I)=ITEMgotoFOUND IfTABLE(I)ITEMSetFINISHto(I-1) If(FINISH-START )>1gotoLOOP IfTABLE(START)=ITEMgotoFOUND

IfTABLE(FINISH)=ITEMgotoFOUND SetFLAGto0 GotoDONE FOUND: SetFLAGto1 DONE:Exit 程序,图6.19是一个转换的例子。 (1)能否从这个例子总结出Ashcroft_Manna技术的一些基本方法? (2)进一步简化6.19(b)给出的结构化设计。

答:(1)从这个例子中看出,Ashcroft_Manna技术的基本方法是,当待改造的序含有嵌套的非结构化的IF语句时,改造后的程序中增加DO-CASE语句和DO-UNTIL语句,并增加一个辅助变量I,I的初始值为1。最外层的IF语句在I=1时执行,执行完这个IF 语句后把I赋值为随后应该执行的内层IF语句所对应的CASE标号

第6章 循环控制

第六章循环控制 一单项选择题 1.下面程序段的运行结果是()。 int n=0; while(n++<=2); printf(“%d”,n); A) 2 B) 3 C) 4 D) 有语法错 2.设有程序段: t=0; while(printf(“*”)) {t++; if(t<3) break; } 下面描述正确的是()。 A) 其中循环控制表达式与0等价 B) 其中循环控制表达式与'0'等价 C) 其中循环控制表达式是不合法的 D) 以上说法都不对 3.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空()。 #include 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); } } A) !a=b B) a!=b C) a==b D) a=b 4.C语言中,while和do-while循环的主要区别是()。 A) do-while的循环体至少无条件执行一次 B) while的循环控制条件比do-while的循环控制条件更严格 C) do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句 5.对以下程序段描述正确的是()。

x=-1; do {x=x*x;} while(!x); A) 是死循环B) 循环执行二次 C) 循环执行一次D) 有语法错误 6.以下描述中正确的是()。 A) do-while循环中循环体内不能使用复合语句 B) do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作 D) do-while循环中,根据情况可以省略while 7.若有如下语句 int x=3; do{ printf(“%3d”,x-=2);} while(!(--x)); 则上面程序段()。 A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环 8.下面有关for循环的正确描述是()。 A) for循环只能用于循环次数已经确定的情况 B) for循环是先执行循环的循环体语句,后判断表达式 C) 在for循环中,不能用break语句跳出循环体 D) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 9.对for(表达式1; ;表达式3)可理解为()。 A) for(表达式1;0;表达式3) B) for(表达式1;1;表达式3) C) for(表达式1;表达式1;表达式3) D) for(表达式1;表达式3;表达式3) 10.若i为整型变量,则以下循环执行次数是()。 for(i=2;i==0;) printf(“%d”,i--); A) 无限次B) 0次C) 1次D) 2次 11.以下不是无限循环的语句为()。 A) for(y=0,x=1;x>++y;x=i++) i=x; B) for(;;x++=i); C) while(1){x++;} D) for(i=10;;i--) sum+=i; 12.下面程序段的运行结果是()。 for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf(“x=%d,y=%d”,x,y); A) x=27,y=27 B) x=12,y=13 C) x=15,y=14 D) x=y=27 13.执行语句for(i=1;i++<4;) ;后变量i的值是()。 A) 3 B) 4 C) 5 D) 不定

第六章 循环结构

第六章循环结构 一、选择题: 1. 执行语句:for(i=1;i<9; i++)后; 变量i的值是()。 (A)10 (B)9 (C)不定(D)11 2.若t为int类型,进人下面的循环之前,t的值为0 , while( t=l ) { ……} 则以下叙述中正确的是()。 (A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1 (C) 循环控制表达式不合法 (D) 以上说法都不对 3. 对do...while语句错误的描述是:() A.可构成多重循环结构 B. 循环次数不可能为0 C.循环次数可能为0 D. 先执行后判断。 4.下面程序段的运行结果是()。 int n=0; while(n++<=2) ; printf(“%d” ,n ) ; (A)4 (B)3 (C)2 (D)有语法错误 5. 以下描述正确的是()。 A. 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。 C. 在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 D. do-while循环中,根据情况可以省略while。 6.关于do-while 语句的正确叙述是() A. do-while 语句构成的循环不能用其它语句构成的循环来代替 B. d o-while 语句构成的循环只能用continue语句退出 C. 用do-while 语句构成的循环, 在while后的表达式为非零时结束循环 D. 用do-while 语句构成的循环, 在while后的表达式为零时结束循环 6.C 语言中,while 和 do…while 循环的主要区别是()。 A. while 的循环控制条件比do…while 的循环控制条件严格 B. do…while 的循环体至少无条件执行一次 C. do…while 允许从外部转到循环体内 D. do…while 的循环体不能是复合语句 7.以下程序的输出结果是()。 main( ) { int x=10,y=10,i;

第六章 循环系统_1

---------------------------------------------------------------最新资料推荐------------------------------------------------------ 第六章循环系统 第六章循环系统第六章循环系统名词解释: 血液循环: 是指血液在心血管系统中周而复始地、不间断地沿一个方向流动。 心脏是血液循环的动力器官,血管使血液循环的管道,瓣膜是保证血液按一个方向流动的特有结构。 窦性心率: 指在窦房结以外的心肌潜在起搏点所引起的心脏节律性活动。 自动节律性: 心肌细胞在没有受到外来刺激的条件下,自动产生节律性兴奋的特性。 心动周期: 心脏每收缩和舒张一次,构成一个心脏机械活动周期称为一个心动周期。 心输出量: 每分钟一侧心室排出的血液总量,称为每搏排出量,简称排出量。 心率: 心脏每分钟搏动的次数。 动脉: 1 / 10

是血管由心脏射出后流往全身各个器官所经过的血管,可分为大、中、小、微动脉 4 种。 静脉: 是血液由全身各器官流回心脏时所经过的血管。 血压: 指血管内的血液对于血管壁的侧压力,也即压强,通常以毫米汞柱为单位。 动脉脉搏: 在每个心动周期中,动脉内周期性的压力波动引起动脉血管所发生的搏动,称为动脉脉搏。 微循环: 心肌细胞兴奋过程中,由 0 期开始到 3 期膜内电位恢复到60mV 这一段不能再产生动作电位的时期,称为有效不应期。 问答题: 1. 简述体循环和肺循环的途径和意义。 体循环: 左心室搏出的血液经主动脉及其分支流到全身毛细血管(肺泡毛细血管除外),进行物质交换后,再经各级静脉汇入上、下腔静脉及冠状窦流回右心房。 血液沿上述路径循环称体循环。 由于左心室的血液来自于肺部,经气体交换,是含氧较多的、鲜红的动脉血,在全身毛细血管除进行气体交换后,变为静脉血。

(完整版)c语言第六章循环结构程序设计(习题册答案)

第六章循环结构程序设计 基础练习(A) 一、选择题 1、C语言中while和do-while循环的主要区别是(A)。 A) do-while的循环体至少无条件执行一次 B) while的循环控制条件比do-while的循环控制条件严格 C) C)do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句 2、以下描述中正确的是(C)。 A) 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用 复合语句 B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C) 在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操 作 D)do-while循环中,根据情况可以省略while 3、设有程序段 int k=10; while(k) k=k-1; 则下面描述中正确的是(A)。 A)while循环执行10次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次 4、下列循环语句中有语法错误的是( D )。 A) while(x=y) 5;B) while(0) ; C) do 2;while(x==b);D) do x++ while(x==10); 5、已知int i=1;执行语句while (i++<4) ;后,变量i的值为(C)。 A) 3 B) 4 C) 5 D) 6 6、语句while(!E);中的表达式!E等价于(A)。 A)E==0 B)E!=1 C)E!=0 D)E==1 7、下面程序段的运行结果是(A)。 a=1; b=2; c=2; while(a main() { int num=0; while(num<=2) { num++; printf(“%d\n”,nu m); } } A)1 B)1 C)1 D)1 2 2 2 3 3 9、以下能正确计算1×2×3×…×10的程序段是(C)。

第六章 循环结构程序设计

6-1.比较while语句、do–while语句和for语句的异同。 答:(1)while语句、do-while语句用于条件循环,for语句用于计数循环。 (2)while语句、for语句是先判断循环条件,后执行循环体,如果循环条件一开始就不成立,则循环体一次也不被执行;而do-while语句是是先执行循环体,后判断循环条件,所以循环体至少被执行一次。 (3)知道循环的次数可选用for语句实现循环,不知道循环的次数可选用while语句或do-while语句实现循环. (4)一般而言,三种循环语句可等价实现. 6-2 仔细阅读下面的程序,指出程序的运行结果. #include void main() { int i; for(i=0;++i;i<5) { if(i==3) {printf("%d\n",++i); break; } printf("%d\n",++i); } } 答:2 4 思考:语句“for(“i=0;++i;i<5”)在编译时为何会给出语法警告错误?当将其改为“for(i=0;i<5;++i)”时,运行结果又将如何? 6-3 仔细阅读下面的语的程序,指出程序的运行结果。 #include"stdio.h" void main() { int i, a=0; for(i=1;i<=5;i++)

{do {i++; a++; } while(i<3); } i++; printf("a=%d,i=%d",a,i); } 答:a=3,i=7 思考:在for循环中嵌套着do-while循环,那么do-while循环中对i的修改会对for循环产生影响吗? 6-4编写程序,用1000个单词”computer”填充屏幕,每行60个 . 解:#include void main() { int i; for(i=1;i<=1000;i++) { printf("computer."); if(i%60==0)printf("\n"); } } 思考:在for循环中,”if(i%60==0)printf(“\n”);”语句的作用是什么?没有此语句将会是什么状况? 6-5输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。 解: #include void main() { char c; int d=0,s=0; printf("请输入字符(当输入时结束):"); while ((c=getchar())!='$')

第六章 循环结构(含答案)

第六章循环控制 一、选择题 1.while (!E);语句中,条件表达式等价于【 A 】。 A. E==0 B. E!=1 C. E!=0 D. E==1 2.下面程序的运行结果是【 C 】。 int n=0; while(n++<=2); printf(“%d”,n); A. 2 B. 3 C. 4 D. 有语法错 3.下面程序段的运行结果是【 A 】。 a=1; b=2; c=2; while (a100) break; } B. for ( ;;); C. int k=0; do {++k;} while (k>=0); D. int s=36; while (s);――s; 8.执行语句for (i=1;i++<4;);后i的值为【 C 】。 A. 3 B. 4 C. 5 D. 不定 9.下列程序段的输出结果是【 B 】。 int x=3; do {printf (“%2d\n”,x-=2);} while (!(――x)); A. 1 B. 1 -2 C. 3,0 D. 是死循环 10.以下四个关于C语言的结论中,只有一个是错误的,它是【 D 】。 A. 可以用while语句实现的循环一定可以用for语句实现 B. 可以用for语句实现的循环一定可以用while语句实现 C. 可以用do-while语句实现的循环一定可以用while语句实现

第六章 循环控制

第七章数组 实验目的: 掌握一维数组的定义和引用 二维数组的定义和引用 字符数组的定义,初始化和引用。及字符串和运用。实验内容: 用筛选法求100之内的素数。 #include main() { int i,j,a[100]; for(i=2;i<100;i++) { a[i]=i; for(j=2;j<=i;j++) {if(j

{static int i,j,k,a[98]; for(i=2;i<100;i++) {a[i]=i;k=sqrt(i); for(j=2;j<=a[i];j++) if(j=k+1) printf("%5d",a[i]); } printf("\n"); } 7.2用选择法对10个整数从小到大排序。#include main() { int i,j,a[10],t; for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) for(i=0;i<=9-j;i++) if(a[i]>a[i+1]) {t=a[i+1];a[i+1]=a[i];a[i]=t;} for(i=0;i<10;i++) printf("%5d",a[i]); } 7.3求一个3×3矩阵对角线元素之和。

#include main() {int i=0,j=0,a[3][3],s1,s2; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); s1=a[0][0]+a[1][1]+a[2][2]; s2=a[0][2]+a[1][1]+a[2][0]; printf("s1=%d,s2=%d\n",s1,s2); } 7.4已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。 #include main() { static int a[10]={1,7,8,17,23,24,59,62,101};int i,j,t; scanf("%d",&a[9]); for(i=9;i>0;i--) if(a[i] main()

相关主题
文本预览
相关文档 最新文档