Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37379
  • 博文数量: 16
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 82
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-16 19:30
个人简介

嵌入式Linux编程 Android软件开发

文章分类

全部博文(16)

文章存档

2015年(16)

分类: C/C++

2015-04-29 23:21:59

一 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的累加和?

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i = 1;
  5.     int sum = 0;

  6.     do{
  7.         sum += i;
  8.         i ++;
  9.     }while(i <= 100);
  10.     
  11.     printf("sum = %d\n",sum);

  12.     return 0;
  13. }


 

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

 

1.break 语句 

(1)用在循环中语句,用来跳出当前循环[结束当前循环的运行]

(2)用在switch--case语句中,用来结束语句的执行 

 

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

 

2.continue 语句 

 

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

 

注意:

<1>它只能用在循环语句

<2>它并不是跳出循环,而是继续下一次循环 

 

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

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i;
  5.     int sum = 0;

  6.     for(i = 1;i <= 100;i ++)
  7.     {
  8.         if(i % 2 != 0)
  9.             continue;

  10.         sum += i;
  11.     }

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

  13.     return 0;
  14. }


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(数组名)计算整个数组大小

 

注意:

数组名标示数组的首地址

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i;
  5.     int index_max,index_min;
  6.     int max,min;
  7.     int a[10];
  8.     
  9.     printf("Input arry value : ");
  10.     for(i = 0;i < 10;i ++)
  11.     {
  12.         scanf("%d",&a[i]);
  13.     }

  14.     printf("Output arry : ");
  15.     for(i = 0;i < 10;i ++)
  16.     {
  17.         printf("%d ",a[i]);
  18.     }
  19.     printf("\n");

  20.     //找出数组中的最大值,和最大值所在的下标
  21.     //找出数组中的最小值, 和最小值所在的下标
  22.     index_max = 0;
  23.     max = a[0];

  24.     index_min = 0;
  25.     min = a[0];

  26.     //1 3 2 4
  27.     //
  28.     for(i = 1;i < 10;i ++)
  29.     {
  30.         if(max < a[i]){
  31.             max = a[i];
  32.             index_max = i;
  33.         }

  34.         if(min > a[i]){
  35.             min = a[i];
  36.             index_min = i;
  37.         }
  38.     }

  39.     printf("max = %d,index = %d\n",max,index_max);
  40.     printf("min = %d,index = %d\n",min,index_min);

  41.     return 0;
  42. }


 

任务:

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

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i;
  5.     int j;
  6.     int data;
  7.     int a[10];

  8.     printf("Input arry value : ");
  9.     for(i = 0;i < sizeof(a)/sizeof(a[0]);i ++)
  10.     {
  11.         scanf("%d",&a[i]);
  12.     }

  13.     printf("Before reverse : ");
  14.     for(i = 0;i < sizeof(a)/sizeof(a[0]);i ++)
  15.     {
  16.         printf("%d ",a[i]);
  17.     }
  18.     printf("\n");

  19.     //reverse
  20.     i = 0;//第一个元素下标
  21.     j = sizeof(a)/sizeof(a[0]) - 1;//最后一个元素下标
  22.     
  23.     while(i < j)
  24.     {
  25.         data = a[i];
  26.         a[i] = a[j];
  27.         a[j] = data;
  28.         i ++;
  29.         j --;
  30.     }

  31.     printf("After reverse :");
  32.     for(i = 0;i < sizeof(a)/sizeof(a[0]);i ++)
  33.     {
  34.         printf("%d ",a[i]);
  35.     }
  36.     printf("\n");

  37.     return 0;
  38. }


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

  然后输出最大的字符和最小的字符

 

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i = 0;
  5.     char max_char,min_char;
  6.     unsigned char buf[10];

  7.     printf("Input char :");
  8.     for(i = 0;i < sizeof(buf)/sizeof(buf[0]);i ++)
  9.     {
  10.         scanf("%c",&buf[i]);
  11.     }

  12.     for(i = 0;i < sizeof(buf)/sizeof(buf[0]);i ++)
  13.     {
  14.         printf("%c",buf[i]);
  15.     }
  16.     printf("\n");
  17.     
  18.     //把大写字符转成小写字符存储
  19.     for(i = 0;i < sizeof(buf)/sizeof(buf[0]);i ++)
  20.     {
  21.         if(buf[i] >= 'A' && buf[i] <= 'Z')
  22.         {
  23.             buf[i] += 32;
  24.         }
  25.     }

  26.     for(i = 0;i < sizeof(buf)/sizeof(buf[0]);i ++)
  27.     {
  28.         printf("%c",buf[i]);
  29.     }
  30.     printf("\n");

  31.     //假设
  32.     max_char = buf[0];
  33.     min_char = buf[0];
  34.     
  35.     for(i = 1;i < sizeof(buf)/sizeof(buf[0]);i ++)
  36.     {
  37.         if(max_char < buf[i])
  38.         {
  39.             max_char = buf[i];
  40.         }

  41.         if(min_char > buf[i])
  42.         {
  43.             min_char = buf[i];
  44.         }
  45.     }

  46.     printf("max_char : %c\n",max_char);
  47.     printf("min_char : %c\n",min_char);

  48.     return 0;
  49. }


思考:定义一个字符数组?

char  a[10];

阅读(876) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~