C 语言_数组算法例子
来源:互联网 发布:sql注入的危害 编辑:程序博客网 时间:2024/05/16 17:27
数组
数组是一种构造类型, 相同数据类型组成的新数据类型。 数组的每个成员称为一个数组元素。
数组的定义 : int array[常量表达式] = {值1,值2,值3...} 数组定义的时候 必须使用常量表达式, 后期引用打印的时候可以使用变量。
注意事项:
系统不会检测 数组元素的下标是否越界,编程时,必须保证数组下标不能越界。
数组是一个整体,不能直接拿来运算, 每次只能取用单个元素进行处理,通常用到数组的地方就会用到循环.
例://定义一个具有20个元素的整型数组,每个元素的取值范围是30-70之间,求数组元素的和,最大值,最小值,平均值
int array[20] = {0};
int sum =0;
// int max = 0;
// int min = 100;
int maxIndex =0, minIndex =0;
for (int i =0; i <20; i++) {
array[i] =arc4random()%(70 -30 +1) + 30;
printf("%d ", array[i]);
// max = max > array[i] ? max : array[i];
// min = min < array[i] ? min : array[i];
//
maxIndex = array[maxIndex] > array[i] ? maxIndex : i;
minIndex = array[minIndex] < array[i] ? minIndex : i;
sum += array[i];
}
printf("\n");
printf("和 = %d\n", sum);
// printf("max = %d\n", max);
// printf("min = %d\n", min);
printf("平均值 = %f\n", sum /20.0);
printf("最大值为:array[%d],值为 %d\n", maxIndex, array[maxIndex]);
printf("最小值为:array[%d],值为 %d\n", minIndex, array[minIndex]);
// 复制⼀个数组,即两个数组容量⼀样,把其中一个数组中的元素复制到另外⼀个数组中
int array1[5] = {1,4,3,6,2};
int array2[5] = { };
for (int i =0; i <5; i++) {
array2[i] = array1[i]; //元素挨个复制,不能直接对数组进行操作
printf("array2[%d] = %d\n", i, array2[i]);
}
//冒泡排序
int array[10] = { };
printf("排序前的数组:\n");
for (int i =0; i <10; i++) {
array[i] =arc4random() %100 +1;
printf("%d ",array[i]);
}
printf("\n");
printf("冒泡之后:\n");
for (int i =0; i <10 -1; i++) {
printf("第%d次冒泡过程如下:\n", i);
for (int j =0; j <10 - i -1; j++) {
printf("比较数组中第%d个元素%d与%d个元素%d\n", j, array[j], j +1, array[j + 1]);
//相邻的两个比较,如果顺序错误,则交换元素位置
if (array[j] > array[j +1]) {
printf("顺序错误,交换两个元素\n");
int temp = array[j];
array[j] = array[j +1];
array[j +1] = temp;
}
}
}
for (int i =0; i <10; i++) {
printf("%d ", array[i]);
}
printf("\n");
//7. (***)给定某年某月某日,输出其为这一年的第几天
printf("请输入年月日,输入格式为 YYYY-MM-DD:\n");
int year = 0, month =0, day = 0;
int sum = 0;
scanf("%d-%d-%d", &year, &month, &day);
int monthArray[12] = {31,28, 31, 30, 31, 30,31, 31, 30, 31, 30,31};
//判断闰年
if (year % 400 ==0 || (year % 4 ==0 && year % 100 !=0)) {
monthArray[1] ++;
}
//判断日期输入错误
if (year <= 0 || month <=0 || day <= 0 || month >12) {
printf("别逗,日期哪有负数