一 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];
阅读(924) | 评论(0) | 转发(0) |