Linux C基础(5)

本文详细介绍了C语言中的循环结构(for、while、dowhile),包括它们的语法和区别,以及数组的概念、定义、初始化、访问和基本操作。还提供了示例代码,如打印9x9乘法表、求最大值和次大值的方法。
摘要由CSDN通过智能技术生成

Day5

1、循环结构

循环:重复做某一件事

循环三要素

 (1)循环的初始条件 (2)循环的中止条件 (3)循环变量的变化

1.1 for循环

 
 for(表达式1;表达式2;表达式3)
 {
     语句
 }
 //for(i=0;i<3;i++)
 表达式1:循环的初始条件
 表达式2:循环的终止条件
 表达式3:循环变量的变化

先执行表达式1的值,然后再执行表达式2的值,如果表达式2的值为真,执行循环体,再执行表达式3的 值,如此反复,直到表达式2的值为假,跳出循环

输出1+2+···+9

省略表达式1的值

注意:表达式1,2,3的值都可省略,但是分号不能省略

案例

案例

1.2 while语句

 while(表达式)
 {
     语句;
 }
 //判断表达式的值是否为真,为真执行循环体,否则,跳出循环

1.3 do while语句

 do
 {
     语句;
 }while(表达式);
 //先执行一次语句,然后再判断表达式的值是否真,如果为真继续执行,否则跳出循环

总结:

 while先判断,再执行,循环体至少执行0次
 do while先执行,再判断,循环体至少执行1次

转向语句

1.4 break

 (1)跳出switch语句 (2)跳出循环

1.5 continue

作用:结束本次循环,开始下一次循环

1.6 死循环

 (1)
 while(1)
 {
     ;
 }
 (2)
 for(;1;)
 {
     ;
 }
 3
 LOOP:
 ;
 goto LOOP;

1.7 goto语句

无条件跳转语句,一般格式goto语句标号

语句标号:符号标识符的命名规范

程序执行到goto时跳回到语句标记loop的位置

2、数组

整型数组、字符数组、二维数组

2.1 概念

一组数据类型相同的元素的集合

(1)数据类型相同	(2)地址连续

2.2 数组的定义

存储类型 数据类型 变量名
auto int a;
存储类型 数据类型 数组名[元素的个数];
存储类型:auto(修饰局部变量,存储在栈区)
    	static(局部和全局,存储在静态区;延长局部生命周期,只需初始化一次;限制全局变量在本程序内)
    	register局部,寄存器,无空闲,在栈区
    	extern 全局,静态区
数据类型:数组中每一个元素的数据类型
    去掉变量名剩下的都是数据类型
数组的数据类型:数据类型[元素的个数]
数组名:(1)数组名代表的是数组首元素的地址	(2)代表整个数组
元素的个数:必须是一个确定的数(整型变量)

2.3 数组的初始化

2.3.1 部分初始化

int a[5] = {1,2,3};
a[0] = 1,a[1] = 2,a[2] = 3,a[3]=0,a[4]=0

总结:部分初始化时,若未被赋值,默认为0,因此我们利用这一特点给数组清零 int a[5] = {0};

未初始化时,默认为随机值;(64位为0)

2.3.2全部初始化

int a[5] = {1,2,3,4,5};
int b[];//error,元素个数必须是确定的
int b[] = {1,2,3};//数组中的元素个数由后面的复制的具体个数决定

总结:

(1)如果数组定义函数体内部,如果没有初始化,其值为随机值
(2)如果数组定义在函数体外部,如果没有初始化,其值为0
(3)如果用static修饰,没有初始化,其值为0

2.4 数组的访问

2.5 数组的输入输出

(1)
int a[5];
a[5] = {1,2,3,4,5};//error a[5]:数组a中第五个元素
(2)
int a[5];
a= {1,2,3,4,5};//error 数组名:(1)数组名代表的是数组首元素的地址
(3)
int a[] ={0};//没有意义,代表数组中只有一个元素
(4)
int a[];//error

作业

1、打印9*9乘法表

#include <stdio.h>
//打印一个9x9乘法表
#define N 9
int main(void)
{
        int i,j=0;
        for(i=1;i<=N;i++)
        {
                for(j=i;j<=N;j++)
                {
                        printf("%d*%d=%d\t",i,j,i*j);
                }
                printf("\n");
        }
        return 0;
}

2、求数组中的最大值(不能使用冒泡排序)

#include <stdio.h>
int Max=0;
int main()
{
        int i=0;
        int a[5]={100,300,200,800,600};
        for(i=0;i<5;i++)
        {
                if(a[i]>Max)
                        Max=a[i];
        }
        printf("Max:%d\n",Max);
}

3、求数组中的次大值

#include <stdio.h>
int main()
{
    int arr[5]={5,6,3,4,9};
    int max= arr[0];  //定义最大值
    int mid= arr[0];  //定义次大值
    for(int i = 0;i<5;i++){
        //因为arr[i]是固定的 ,所以可以用arr[i]先和max比较,如果大于max 则把max的值赋给mid的值,然后把arr[i]赋给max  
        //这样max肯定比mid大
        if(arr[i]>max)
        {
            mid = max;
            max = arr[i];
        }
        else if(arr[i]>mid&&arr[i]<max)
        {
            //另一种情况 arr[i]在两者之间*/
            mid = arr[i];
            // 把arr[i]赋给mid
        }
    }
    printf("max=%d,mid=%d\n",max,mid);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值