您的位置:首页 > 移动开发 > IOS开发

ios7-21数组

2015-07-21 09:56 316 查看
//模拟n个人参加选举的过程,并输出选举结果:假设候选人有四个,分别用A,B,C,D表示,当选某人时,直接输入其编号(由计算机随机产生),选举结束后按得票率从高到低输出候选人编号和所得票数
int number = 0;
int rand = 0;
int temp = 0;
char tt = 'a';
char pp[4] = {'A', 'B', 'C', 'D'};
int votes[4] = {0};
printf("请输入选举人数:");
scanf("%d",&number);

for (int i = 0; i < number; i++) {
rand = arc4random() % ( 68 - 65 +1) + 65;
votes[rand - 65]++;
}
for (int i = 0; i < 4 - 1; i++) {
for (int j = 0; j < 4 - 1 - i; j++) {
if (votes[j] < votes[j + 1]) {
//对应数组联动
temp = votes[j];
tt = pp[j ];
votes[j] = votes[j + 1];
pp[j] = pp[j +1];
votes[j + 1] = temp;
pp[j +1] = tt;
}
}
}
for (int i = 0; i < 4; i++) {
printf("获选人%c得票%d  \n",pp[i],votes[i]);
}


//遇3死

int k = 13;//活这得人数
int i = 0; //下标数
int count = 0; //报的数
//int m = 0;//记住当前出局的下标
int a[13] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,13 };

while (k > 1) {
if (i >12) {
i = 0;
}

//判断是否被标记为0
if (a[i] != 0) {
count++;
}
if (count == 3 ) {
a[i] = 0;
k--;
count = 0;
}
//当报数为3的时候
i++;
}
for (int j = 0; j < 13; j++) {
if (a[j] != 0) {
printf("%d------%d \n",j+1,a[j]);
}
}
return 0;
}


//求鞍点

int flog = 1;
int z = 0;

int a[4][3] = {
{21,29,29},
{35,35,38},
{31,30,38},
{27,33,36}
};
int maxhang = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
a[i][j]=arc4random() % (40 - 20 + 1) + 20;
printf("%d   ",a[i][j]);
}
printf("\n");
}

for (int i = 0; i < 4; i++) {
//找到行最大值
for (int j = 0; j < 3; j++) {
maxhang = a[i][j];
BOOL isMax = YES;
for (int column = 0; column < 3; column++) {
if (maxhang < a[i][column]) {//说明不是最大行
isMax = NO;
break;
}
}
z = j;
if (isMax ==NO) {
continue;
}
//判断是不是该列的最小值
//假设是最小值
//int min = array[i][j];
for ( int k = 0;  k < 4;  k++) {
if(a[k][z] < maxhang)
{
flog = 0;
break;
}
}

if (flog == 1) {
printf("鞍点是%d,行是%d,列是%d",maxhang,i,z);
}
flog = 1;
}
}


//在求每一列的和的时候,行变换的比较快,因此,外城循环处理列数,内层循环处理行数
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0; j < 4; j++) {
//            sum = sum + a[j][i];
//        }
//        printf("%d ",sum);
//        sum = 0;
//    }
//
//字符串数组
// char array[4][20] = {"iOS","Windows","Android", "Symbian"};
//注意:字符串数组,第二个维度,一定要比最长字符串的长度,大1
//访问单个字符
//    printf("%c\n",array[i][5]);
//    //输出字符串
//    printf("%s是\n",array[3]);//只访问到行索引即可.
//    //输入所有字符串(遍历)
//    for (int i = 0; i < 4; i++) {
//        printf("%s",array[i]);
//    }
//练习:将上述字符串升序排列
//    for (int j = 0; j < 4 -1; j++) {
//        for (int i = 0; i < 4 - 1 -j; i++) {
//            if ((strcmp(array[i],array[i+1]) > 0)) {
//                char temp[20] = {'0'};
//                //注意,字符串交换式,要使用字符串操作函数
//                strcpy(temp, array[i]);
//                strcpy(array[i], array[i+1]);
//                strcpy(array[i + 1], temp);
//
//            }
//        }
//
//    }
//    for (int i = 0;i < 4 ; i++) {
//        printf("%s  ",array[i]);
//    }
/*
int  array[4][3] = {0};
for (int i = 0; i < 4; i++) {
for (int k = 0; k < 3; k++) {
array[i][k] = arc4random() %(40 - 20 + 1) + 20;
printf("%d ",array[i][k]);
}
printf("\n");
}
int  count = 0;//记录鞍点个数
//假设是鞍点
//假设改行最大值
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
int max = array[i][j];//假设最大值
BOOL isMax = YES;
for(int column = 0;column < 3;column++)
{
//判断是不是改行最大值
if (max < array[i][column]) {
//当前行不是改行最大的值,结束循环
isMax = NO;
break;
}
}
if (isMax == NO) {
//如果为NO,说明不是改行的最大值,已经不是满足鞍点的条件
continue;//直接进入下一个循环
}
int min = array[i][j];
BOOL isMin = YES;//假设是该列中最小的
//验证是不是该列最小的
for (int  row = 0; row < 4; row++) {
if (min > array[row][j]) {
isMin = NO;
break;
}
}
if (isMin==NO) {
//如果为NO,说明不是该行的最小值,已经不是满足鞍点的条件
continue;//直接进入下一个验证
}
//当执行到该代码的时候说明什么问题
count++;
//鞍点个数  +1
printf("鞍点数是:%d,所在行:%d,所在列:%d",array[i][j],i,j);
}
}
//没有鞍点
if(count == 0)
printf("没有鞍点");
*/
//三维数组:数组名[常量表达式1][常量表达式2][常量表达式3] = {值1,值2,值3...值n}
//定义整数组
//    int  array[3][4][3] = {0};
//    //赋值
//    for (int i = 0; i<3; i++) {//一本书
//        for (int j = 0; j < 4; j++) {//一页字
//            for (int k = 0; k<3; k++) {//一行字
//                array[i][j][k] =arc4random() %(40 - 20 + 1) + 20;
//                printf("array[%d][%d][%d] = %-3d", i, j,k, array[i][j][k]);
//            }
//            printf("\n");
//        }
//        printf("\n");
//    }
//    //求多维数组的纵深和
//    //层变换
//    int sum[4][3] = {0};
//    for (int k = 0; k < 4; k++) {
//        for (int j =0 ; j < 3; j++) {
//            for (int i = 0; i < 3; i++) {
//                sum[j][k] +=array[i][j][k];
//            }
//            printf("%-7d  ",sum[j][k]);
//        }
//        printf("\n");
//    }
char map[10][10] =
{
//10行10列的数组地图
{'#','#','#','#','#','#','#','#','#','#'},//0
{'#',' ',' ',' ',' ','#',' ','#',' ',' '},//1
{'#','#',' ','#','#','#',' ','#',' ','#'},//2
{'#','#',' ',' ',' ',' ',' ','#',' ','#'},//3
{'#','#','#',' ','#','#',' ','#',' ','#'},//4
{'#',' ','#',' ',' ','#',' ','#',' ','#'},//5
{'#',' ','#',' ',' ','#',' ','#',' ','#'},//6
{'#',' ','#',' ',' ','#',' ','#',' ','#'},//7
{'#',' ',' ',' ',' ','#',' ',' ',' ','#'},//8
{'#','#','#','#','#','#','#','#','#','#'},//9
//0   1   2   3   4   5   6   7   8   9
};
//    以上是地图, A 左移, S下移, D右移, W上移, 0 代表走迷宫的人, 编写程序, 走迷宫
//    注: 空格是迷宫道路, #号是迷宫的墙
// char people[10][10] ={'0'};
// people[1][1] =map[1][1];
int i =1;
int j = 1;
map[i][j] ='0';
for (int k = 0; k < 10; k++) {
for (int m = 0; m < 10; m++) {
printf("%c ",map[k][m]);
}
printf("\n");
}
char zoubu = 'a';
//scanf("%c",&zoubu);
while(zoubu != 'P')
{
printf("走步:\n");
scanf("%c",&zoubu);
switch (zoubu) {
case 'A'://左,[不变][减一]

if (map[i][j-1] =='#')
map[i][j] ='0';
else{
map[i][j-1] ='0';
map[i][j] =' ';}
j = j - 1;
break;
case 'S'://下[加一][不变]
if (map[i + 1][j] =='#')
map[i][j] ='0';
else{
map[i +1][j] ='0';
map[i][j] =' ';}
i=i+1;
break;
case 'D'://右[不变][加一]
if (map[i][j+1] =='#')
map[i][j] ='0';
else{
map[i][j+1] ='0';
map[i][j] =' ';}
j= j+ 1;
break;
case 'W'://上[减一][不变]
if (map[i-1][j] =='#')
map[i][j] ='0';
else
{
map[i-1][j] ='0';
map[i][j] =' ';
}
i = i -1;
break;
default:
for (int k = 0; k < 10; k++) {
for (int m = 0; m < 10; m++) {
printf("%c ",map[k][m]);
}
printf("\n");
}
break;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: