标签:
//模拟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; }
标签:
原文地址:http://www.cnblogs.com/wohaoxue/p/4663519.html