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;
}