一、对数组 A 中的N( 0 <N<100)个整数从小到大进行连续编
号,输出各个元素的编号。要求不能改变数组A中元素的
顺序,且相同的整数要具有相同的编号。
例如:数组是: A=(5,3,4,7,3,5,6)
则输出为:(3,1,2,5,1,3,4)
这里我们可以巧妙运用二维数组,用其第一行储存元素,第二行储存编号,到时候打印出来即可!
下面展示一下我的代码,仅供参考!!!
#include <stdio.h> main() { int i, j, k, n, m = 1, r = 1, a[2][100] = { 0 }; printf("Please enter n:"); //确定数组大小 scanf("%d", &n); for (i = 0; i < n; i++) //输入数据 { printf("a[%d]= ", i); scanf("%d", &a[0][i]); } while (m <= n) // 限定循环条件,用m来统计已编过号的数组元素 { for (i = 0; i < n; i++) { if (a[1][i] == 0) //这里进行挑选没有编过号的元素 { break; //挑选到则跳出循环 } } k = i; //用k来暂时储存i,便于后面进行比较 for (j = i; j < n; j++) { if (a[1][j] == 0 && a[0][j] < a[0][k]) //判断此次循环是否存在比a[0][i]小的元素 { k = j; //如果存在则令k=j以便后续对这个元素进行编号 } } a[1][k] = r++; //此处进行编号 m++; //编一次号m加1一次 for (j = 0; j < n; j++) //这里的循环用于判断是否有相等的元素 { if (a[1][j] == 0 && a[0][j] == a[0][k]) { a[1][j] = a[1][k]; //如果存在相等的元素则令其编号相等 m++; //因为存在相等m在进行加1减少循环次数 } } } for (i = 0; i < n; i++) printf("\na[%d]=%3d 其编号为%d\n", i, a[0][i], a[1][i]); }
具体思路;首先我们创建一个二维数组,行为2,至于列我们就取个100好了,到最后我们取定数组长度不要超过100就好了,然后我们输入数据,再进行选出没有编号(注意如果数组中没有输入值进去时数组默认储存一个0进去,所以没有编号过的元素其对应的第二行数组元素便为0)元素进行比较,如果有比它小的元素就对该元素编号,如果没有便对它自己进行编号,比如上面图中的a[0][0]下方的比编号即a[1][0]的值为0则对其进行比较其他队员下方编号也为0的元素,编号的具体过程参考上面的代码!下面进入第二个阶段!
二、求一个二维数组中每行的最大值和每行的和。
#include <stdio.h> main() { int a[5][5], b[5], c[5], i, j, k, s = 0; //创建一个b[5]来储存最大值,c[5]来储存每行的和 for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { a[i][j] = rand(1) %50+10; //这里随机储存数字,由rand实现 } } for (i = 0; i < 5; i++) { k = a[i][0]; // 这里取每行的第一个元素进行开始比较 s=0; //这里用于初始化s的值 for (j = 0; j < 5; j++) //进行比较 { if (k < a[i][j]) { k = a[i][j]; } s = s + a[i][j]; //将每行的元素相加用s暂时储存 } b[i] = k; //找到最大值依次放入b[5]中 c[i]=s; // 最终将s储存进c[5]中 } for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { printf("%2d ", a[i][j]); } printf("其最大值为:%d 这一行元素的和为:%5d\n", b[i], c[i]); printf("\n"); } }
大家可以看一下运行结果: 具体思路:我们照常创建一个二维数组,然后我们再创建一个b[ ]数组和c[ ]数组,这里我们测试选择数据小一点,就创建一个a[5][5]和b[5]及c[5],代码中也详细解释了b[5]用来储存每行的最大值,c[5]用来储存每行的元素和!最后参考代码进行运算即可!!!
三、杨辉三角形
杨辉三角是将若干数字按照一定规律排列成三角形的数表,每一行最外侧的数字都是1,中间的数字等于它肩膀上的两数之和。杨辉三角每一行的数刚好对应二项式展开后的系数,实际上是一张二项式系数表。杨辉三角在1261年杨辉所著的《详解九章算法》已经出现,最初被称为“开方作法本源图”,后人简称为“杨辉三角”。杨辉三角有许多重要的性质,在数列求和等方面具有重要应用。
#include <stdio.h> #define N 10 main() { static int a[N][N]; int i, j, k; /***********FOUND***********/ for (i = 0; i < N; i++) { /***********FOUND***********/ for (k = 0; k < 3*N - 3* i; k++) printf(" "); for (j = 0; j <= i; j++) { if (j == 0 || j == i) a[i][j] = 1; else a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; printf(" "); printf("%-5d", a[i][j]); } printf("\n"); } }
看了上面代码相信各位也会怎么敲了,需要注意的是当行数N变大时需要修改一下距离,不然很可能会是数据很集中不美观!
今天到此结束,期待各位的观看和支持。您的支持是我更新的动力!!!