您的位置:首页 > 编程语言 > C语言/C++

C语言的循环语句(4.24)

2015-05-01 15:51 127 查看
一 C语言的循环语句---while

while(条件)
{
C语言语句;
....
}

特点:
<1>循环判断
<2>条件为真的时候,执行循环

思考:写一个和while等价的for?

for(;条件;) <=> while(条件)

经验:
for语句更多的用在循环次数,while语句更多的用在循环判断?

思考:如何用while写一个死循环?
while()//错误 while(非0值) -> while(1)

二 C语言的循环语句---do --- while

do{
C语言语句;
....
}while(条件);

执行过程:先执行C语言语句,然后判断条件是否为真,如果真循环继续,否则循环结束

特点:
<1>先做事情,然后判断事情的结果
<2>至少执行一次

练习:
用do--while实现 1 + 2 + ... + 100的累加和?

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int i = 1;

int sum = 0;

do{

sum += i;

i ++;

}while(i <= 100);

printf("sum = %d\n",sum);

return 0;

}

三 C语言的循环控制语句 break,continue,goto

1.break 语句
(1)用在循环中语句,用来跳出当前循环[结束当前循环的运行]
(2)用在switch--case语句中,用来结束语句的执行

注意:break语句只能跳出当前层的循环,而不能直接跳出多层的嵌套循环

2.continue 语句

在循环中遇到continue语句,continue语句后面C语句将不会执行,直接进行下一次循环

注意:
<1>它只能用在循环语句
<2>它并不是跳出循环,而是继续下一次循环

练习:使用continue语句,求 1 - 100 ,偶数累加和[如果是奇数,不进行累加]

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int i;

int sum = 0;

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

{

if(i % 2 != 0)

continue;

sum += i;

}

printf("sum = %d\n",sum);

return 0;

}

3.goto 语句

用法:
goto 标签;

跳到指定标签去运行

注意:标签必须在函数的内部,不能重复

int main()
{

label1://标签
....

label2://标签
....

return 0;
}

四 C语言多个数据的连续存储-----数组

C语言的数组可以用来存储多个数组,当我们定义一个数组,可以配多个连续内存空间,我们用这些内存空间
来存储数据。

1.数组的定义

数据类型 数组名[数组元素的个数];

思考:定一个数组和定义一个变量的区别?
定义一个数组等价于定义多个变量,并且分配的内存是连续

例如:定义一个有5个元素的整型数组

int a[5];//正确

-----------------------------------------------
//错误的定义
int b = 5;
int a[b]; //定义数组要求数组的元素的个数确定,而此时b是一个变量

//错误的定义
int a[]; //没有写数组元素个数,不知道数组的大小
-----------------------------------------------

分析:
int a[5];

数组成员:a[0],a[1],a[2],a[3],a[4]
数组中每个成员大小:取决于数组的数据类型[指针数组比较特殊] , 此时数组成员大小:4
整个数组的大小:数组成员的个数 * 数组成员的大小 ,我们可以直接通过sizeof(数组名)计算整个数组大小

注意:
数组名标示数组的首地址

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int i;

int index_max,index_min;

int max,min;

int a[10];

printf("Input arry value : ");

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

{

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

}

printf("Output arry : ");

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

{

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

}

printf("\n");

//找出数组中的最大值,和最大值所在的下标

//找出数组中的最小值, 和最小值所在的下标

index_max = 0;

max = a[0];

index_min = 0;

min = a[0];

//1 3 2 4

//

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

{

if(max < a[i]){

max = a[i];

index_max = i;

}

if(min > a[i]){

min = a[i];

index_min = i;

}

}

printf("max = %d,index = %d\n",max,index_max);

printf("min = %d,index = %d\n",min,index_min);

return 0;

}

任务:
1.输入10个整数到10个元素的数组中,然后将数组逆置,最后数组的元素的值

3 5 7 6 8 10
a[0] a[1] a[2] ...a[7] a[8] a[9]

逆置:
10 8 6 7 5 3

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int i;

int j;

int data;

int a[10];

printf("Input arry value : ");

for(i = 0;i < sizeof(a)/sizeof(a[0]);i ++)

{

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

}

printf("Before reverse : ");

for(i = 0;i < sizeof(a)/sizeof(a[0]);i ++)

{

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

}

printf("\n");

//reverse

i = 0;//第一个元素下标

j = sizeof(a)/sizeof(a[0]) - 1;//最后一个元素下标

while(i < j)

{

data = a[i];

a[i] = a[j];

a[j] = data;

i ++;

j --;

}

printf("After reverse :");

for(i = 0;i < sizeof(a)/sizeof(a[0]);i ++)

{

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

}

printf("\n");

return 0;

}

2.输入10个字母到字符数组中,如果将字符数组中的大小字母,将它转成小写字母存储,
然后输出最大的字符和最小的字符

点击(此处)折叠或打开

#include <stdio.h>

int main()

{

int i = 0;

char max_char,min_char;

unsigned char buf[10];

printf("Input char :");

for(i = 0;i < sizeof(buf)/sizeof(buf[0]);i ++)

{

scanf("%c",&buf[i]);

}

for(i = 0;i < sizeof(buf)/sizeof(buf[0]);i ++)

{

printf("%c",buf[i]);

}

printf("\n");

//把大写字符转成小写字符存储

for(i = 0;i < sizeof(buf)/sizeof(buf[0]);i ++)

{

if(buf[i] >= 'A' && buf[i] <= 'Z')

{

buf[i] += 32;

}

}

for(i = 0;i < sizeof(buf)/sizeof(buf[0]);i ++)

{

printf("%c",buf[i]);

}

printf("\n");

//假设

max_char = buf[0];

min_char = buf[0];

for(i = 1;i < sizeof(buf)/sizeof(buf[0]);i ++)

{

if(max_char < buf[i])

{

max_char = buf[i];

}

if(min_char > buf[i])

{

min_char = buf[i];

}

}

printf("max_char : %c\n",max_char);

printf("min_char : %c\n",min_char);

return 0;

}

思考:定义一个字符数组?
char a[10];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: