数组、二维数组、函数

1、数组(续)

遍历:逐个操作数组中的所有元素
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int a[10] = {1,2,3,4,5,6,7,8,9,0};
        //正向遍历
        for (int i = 0; i < 10; i++)
        {
            if (i % 3 == 0)
                printf("%d ", a[i]);
        }
        printf("\n");
        //反向遍历
        for (int i = 9; i>= 0; i--)
        {
            printf("%d ", a[i]);
        }
        printf("\n");

        //从键盘输入一个整数,如12325,判断这个整数是否有重复的数字
        int x;
        NSLog(@"请输入一个整数:");
        scanf("%d", &x);

        BOOL bs[10] = {NO};
        do
        {
            int n = x % 10;
            if (bs[n] == YES)
            {
                NSLog(@"数字%d重复了", n);
                break;
            }
            bs[n] = YES;
            x /= 10;
        }while (x);
        if (x == 0)
        {
            NSLog(@"没有重复的数字");
        }
    }
    return 0;
}
判断一个整数是否有重复数字
数组乱序
#import <Foundation/Foundation.h>

int main()
{
    @autoreleasepool {
        int a[10] = {0,1,2,3,4,5,6,7,8,9};
        for (int i = 0; i < 10; i++)
        {
            int x = rand() % (10 - i - 1) + i + 1;
            int temp = a[i];
            a[i] = a[x];
            a[x] = temp;
        }
        for (int i = 0; i < 10; i++)
        {
            printf("%d ", a[i]);
        }
        printf("\n");
    }
    return 0;
}
数组元素重复
#import <Foundation/Foundation.h>

int main()
{
    @autoreleasepool {
        int a[10] = {1,2,3,4,5,6,7,8,9,0};
        BOOL flag = NO;
        int i = 0;
        for (; i < 10; i++)
        {
            int j = i + 1;
            for (; j < 10; j++)
            {
                if (a[i] == a[j])
                {
                    flag = YES;
                    NSLog(@"第%d个元素与第%d个元素重复了", i + 1, j + 1);
                    //break;
                }
            }
//            if (j < 10)
//            {
//                break;
//            }
        }
        if (flag == NO)
        {
            NSLog(@"没有重复的元素");
        }
    }
    return 0;
}
双色球
#import <Foundation/Foundation.h>

int main()
{
    @autoreleasepool {
        srand((unsigned)time(0));

        int blue = rand() % 16 + 1;
        int red[6];
        for (int i = 0; i < 6; i++)
        {
            red[i] = rand() % 33 + 1;
            for (int j = 0; j < i; j++)
            {
                if (red[i] == red[j])
                {
                    i--;
                    break;
                }
            }
        }
        printf("蓝:%d\n", blue);
        printf("红:");
        for (int i = 0; i < 6; i++)
        {
            printf("%d ", red[i]);
        }
        printf("\n");
    }
    return 0;
}

2、二维数组

二维数组是多个一维数组的集合
        int a[3][4];
        a[0][1] = 10;
        a[1][2] = 20;
        a[2][3] = 30;
二维数组的初始化
#import <Foundation/Foundation.h>

int main()
{
    @autoreleasepool {
        int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }

        int b[][3] = {{1,2,3},{4,5,6},{7,8,9}};

        printf("------\n");
        int c[4][3] = {{1,2,3},{4,5},{6},{7,8,9}};
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                printf("%d ", c[i][j]);
            }
            printf("\n");
        }

        int d[2][3] = {0};

        printf("------\n");
        int e[3][4] = {1,2,3,4,5,6,7,8,9};
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                printf("%d ", e[i][j]);
            }
            printf("\n");
        }
    }
    return 0;
}
二维数组的数组名
#import <Foundation/Foundation.h>

int main()
{
    @autoreleasepool {
        int a[3][4];
        NSLog(@"%p", a);
        NSLog(@"%p", &a[0][0]);
        NSLog(@"%p", a[0]);

        NSLog(@"%p", a[1]);
        NSLog(@"%p", &a[1][0]);

        NSLog(@"%p", a[2]);
        NSLog(@"%p", &a[2][0]);
    }
    return 0;
}
二维数组与二维表
#import <Foundation/Foundation.h>

int main()
{
    @autoreleasepool {
        /*-----------
         1      1       1
         2      4       8
         3      9       27
         4      16      64
         ...    ...     ...
         n      n^2     n^3
         ------------*/
        int n;
        NSLog(@"请输入表的行数");
        scanf("%d", &n);

        int table[n][3];
        for (int i = 0; i < n; i++)
        {
            table[i][0] = i;
            table[i][1] = i * i;
            table[i][2] = i * i * i;
        }

        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                printf("%d\t", table[i][j]);
            }
            printf("\n");
        }

        int x;
        NSLog(@"请输入你要查询的数字:");
        scanf("%d", &x);

        NSLog(@"%d的平方是:%d,立方是:%d", x, table[x][1], table[x][2]);
    }
    return 0;
}

3、函数

能完成一定功能的代码块
语法
    函数头:返回值类型、函数名、参数
    函数体
函数的声明
函数的调用(实参有四种形式)
#import <Foundation/Foundation.h>

//写一个函数,判断参数x和y是否都落在0~n的区间内
BOOL check1(int x, int y, int n)
{
    return x >= 0 && x <= n && y >= 0 && y <= n;
}

//写一个函数,判断一个整数是否为素数
BOOL isPrimer(int x)
{
    if (x < 2)
    {
        return NO;
    }
    for (int i = 2; i < x; i++)
    {
        if (x % i == 0)
        {
            return NO;
        }
    }
    return YES;
}

int main()
{
    @autoreleasepool {
        BOOL in = check1(3, 5, 4);
        NSLog(@"%d", in);

        NSLog(@"%d", isPrimer(17));
        NSLog(@"%d", isPrimer(10));

        for (int i = 0; i < 100; i++)
        {
            if (isPrimer(i))
            {
                printf("%d ", i);
            }
        }
        printf("\n");
    }
    return 0;
}

思考练习:

有一个班,有n个学生,成绩单如下
No. C OC Foundation UIKit Total
0 60 70 80 90 300
1 90 85 70 60 305
2 95 80 65 45 285

总计 245 235 215 195
要求:首先随机生成每个学生的各科成绩,然后计算每个学生的总分,最后计算每门课(总计)的总分
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解析:

#import <Foundation/Foundation.h>

int main()
{
    @autoreleasepool {
        int number;
        NSLog(@"请输入学生的人数:");
        scanf("%d", &number);

        int scores[number][6];
        for (int i = 0; i < number; i++)
        {
            scores[i][0] = i;//学号
            int sum = 0;
            for (int j = 1; j <= 4; j++)
            {
                scores[i][j] = rand() % 101;//4科成绩
                sum += scores[i][j];
            }
            scores[i][5] = sum;
        }

        printf("---------------------\n");
        printf("No.\tC\tOC\tFou\tUI\tTotal\n");
        printf("---------------------\n");
        for (int i = 0; i < number; i++)
        {
            for (int j = 0; j < 6; j++)
            {
                printf("%d\t", scores[i][j]);
            }
            printf("\n");
        }
        printf("---------------------\n");
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值