玩转C语言数组各种算法小结
2012-11-15 16:36
441 查看
#include <stdio.h> #define N 10 //7、对称 //typedef enum { // false,//0 // true //1 //}bool; //bool isSymmetryArray(int a[], int len); //bool isSymmetryArray(int a[], int len) //{ // for (int i=0; i<len/2; i++) { // if (a[i]!=a[len-i-1]) { // return false; // } // } // return true; //} int main(int argc, const char * argv[]) { // z1. 数组(求最大值及下标) 定义一个整型数组,输入10个整数到数组中,并将数组中最大值及下标输出。12345 // 例如: // 输入: 3 5 2 9 1 8 7 4 6 0 // 输出: 9 3 // // int array[10],max,index,temp; // printf("输入10个数给数组赋值:"); // for (int i=0; i<10; i++) { // scanf("%d",&array[i]); // } // max=array[0]; // index=0; // for (int i=1; i<10; i++) { // if (max<array[i]) { // temp=max; // max=array[i]; // array[i]=temp; // index=i; // } // } // printf("%d %d",max,index); // // // 2.有一个数组b[5] = {1,2,3,4,5};把这个数组拷贝到另外一个数组int a[5]中 // // // int b[5] = {1,2,3,4,5}; // int a[5]; // printf("复制以后a[i]输出:"); // for (int i=0; i<5; i++) { // a[i]=b[i]; // printf("%d ",a[i]); // } // // // 3. 字符数组(正序输出) 定义一个字符数组,输入10个字符到数组中,将字符数组内容逐个输出。 // 输入:A B C D E F G H I J // 输出:A B C D E F G H I J // // char array[10]; // int i; // printf("输入10个字符给数组赋值:"); // for (i=0; i<10; i++) { // //scanf("%c",&array[i]); // array[i]=getchar(); // } // //printf("\n"); // for (i=0; i<10; i++) { // printf("%c ",array[i]); // } // // 4. 字符数组(逆序输出) 定义一个字符数组,输入10个字符到数组中,将字符数组内容倒序输出 // 输入:a b c d e f g h i j // 输出:j i h g f e d c b a // // // char array[10]; // int i; // printf("输入10个字符给数组赋值:"); // for (i=0; i<10; i++) { // //scanf("%c",&array[i]); // array[i]=getchar(); // } // //printf("\n"); // for (i-=1; i>=0; i--) { // printf("%c ",array[i]); // } // // // 5.输入十个正整数,把这十个数按由小到大的顺序排列 // // // int num[10]; // int i,temp=0; // printf("输入10个正整数:"); // for (i=0; i<10; i++) { // scanf("%d",&num[i]); // } // for (i=0; i<10; i++) { // for (int j=0; j<10-i-1; j++) { //冒泡排序 // if (num[j]<num[j+1]) { // temp=num[j]; // num[j]=num[j+1]; // num[j+1]=temp; // } // } // } // for (i=0; i<10; i++) { // printf("%d ",num[i]); // } // // // int num ; // printf("输入%d个整数:",N); // for (int i=0; i<N; i++) { // scanf("%d",&num[i]); // } // int temp; // for (int i=0; i<N; i++) { // //内循环 每一次比较的过程,循环结束找到一个最小的数字 // for (int j=0; j<N-1-i; j++) { //每循环一次确定一个数字 // if (num[j]<num[j+1]) { // temp=num[j]; // num[j]=num[j+1]; // num[j+1]=temp; // } // } // } // printf("数组降序排列为:\n"); // for (int i=0; i<N; i++) { // printf("%d ",num[i]); // } // printf("\n"); // // // // 6.给定一个有10个整数的元素,将前5个元素跟后5个元素做整体交换,比如{1,1,1,1,1,2,3,2,2,2}->{2,3,2,2,2,1,1,1,1,1} // // // int array1[10]={1,1,1,1,1,2,3,2,2,2},array2[10]; // for (int i=0,j=5; i<5&&j<10; i++,j++) { // array2[i]=array1[j]; // array2[j]=array1[i]; // } // for (int j=0; j<10; j++) { // printf("%d ",array2[j]); // } // // // // 7.判断一个整型数组是否是对称数组,例如{1,2,3,3,2,1}和{1,6,8,1,8,6,1}都是对称数组 // // // int a[]={1,2,3,1,2}; // int b[]={1,1,2,3,3,2,1,1}; // if(isSymmetryArray(b,8)==true){ // printf("duichen"); // }else{ // printf("buduichen"); // } // // // // 8.给定一个10个元素的整型数组,现在将第2个元素删除,后面的数组顺序前移 // // int a[10]={1,2,3,4,5,6,7,8,9,0},i; // for (i=1; i<9; i++) { // a[i]=a[i+1]; // } // for (i=0; i<10; i++) { // printf("%d ",a[i]); // } // // // 9.给定一个整型数组,求该数组中第二大的数的下标 // // // int a ={1,2,3,4,5,6,7,8,9,0}; // int max=0,secMax=0,i,j;//最大值,第二大值,变量,储存第二大数下标 // for (i=0; i<N; i++) { // if (a[i]>max) { // max=a[i]; // } // } // for (i=0; i<N; i++) { // if (a[i]>secMax && a[i]<max) { // secMax=a[i]; // j=i; // } // } // printf("第二大数:%d 其下标为:%d\n",secMax,j); // // // 10.给定一个整型数组,计算大于该数组平均值的元素的个数 // // // int a ={1,2,3,4,5,6,7,8,9,0}; // int sum=0,avg=0;//所有数的和,平均数 // int num=0;//大于平均数个数 // int i; // for (i=0; i<N; i++) { // sum+=a[i]; // } // avg=sum/N; // for (i=0;i<N; i++) { // if (a[i]>avg) { // num++; // } // } // printf("该数组中大于平均数的个数为:%d\n",num); // // // 11.给定一个整型数组,找到数组中的最小值,并将其放到数组的首元素中,原来首元素的内容放到最小值所在的元素中 // // // int a ={1,2,3,4,5,6,7,8,9,0}; // int min=a[0],m=0;//最小值,最小值下标 // int i; // for (i=1; i<N; i++) { // if(a[i]<min){ // min=a[i]; // m=i; // } // } // int temp;//交换变量 // temp=a[0]; // a[0]=a[m]; // a[m]=temp; // for (i=0; i<N; i++) { // printf("%d ",a[i]); // } // printf("\n"); // // // 12.给定一个整型数组,统计某个整数在数组中出现的次数 // // // int a ={1,2,1,4,5,6,1,8,9,0}; // int n=1,num=0,i;//某个整数,出现的个数 // for (i=0; i<N; i++) { // if (a[i]==n) { // num++; // } // } // printf("%d出现的次数为:%d\n",n,num); // // // 13.将一个字符数组循环右移2位。比如”12345”->”45123”,假定字符数组中字符的数量大于2 // // // int a ={1,2,3,4,5,6,7,8,9,0},b ; // int i,j;//取出前两个数的值 // // for (i=0; i<2; i++) { // b[i]=a[N-2+i]; // } // for (i=2,j=0; i<N; i++) { // b[i]=a[j]; // j++; // } // for (i=0; i<N; i++) { // printf("%d ",b[i]); // } // // // 14.给定某个拥有5个元素的字符数组,数组的成员都有阿拉伯字符构成,试着将该数组转换成一个整数,比如字符数组的内容是:{‘1’,’2’,’3’,’3’,’2’} 则将被转换成12332 // // // char ch[5]={'1','2','3','4','5'}; // int in[5]; // int i,j; // for (j=0; j<5; j++) { // in[j]=ch[j]-'0'; // } // for (i=0; i<5; i++) { // printf("%d ",in[i]); // } // // // 15.通过终端输入10个整数并将其保存在一个整型数组中,数字保存在数组中的顺序与下标正好相反,也就是第一个被输入的数放在数组最后一个元素中,最后一个输入的数字放到第一个元素中 // // int num ; // int i,j; // printf("输入10个整数:"); // for (i=N-1; i>=0; i--) { // scanf("%d",&num[i]); // } // for (j=0; j<N; j++) { // printf("%d ",num[j]); // } // printf("\n"); // // // 16. 给定一个5个元素构成的整型数组,每个元素的值都在0-9之间,按照位置将其组成一个5位数并输出,例如int a[5] = {1,2,2,3,7};则输出73221 // // int m=5; // int num[m],n=0; // int i,j; // static int x=10; // printf("输入5个数(0~9):"); // for (i=0; i<m; i++) { // scanf("%d",&num[i]); // } // n=num[0]; // for (j=1; j<m; j++) { // // n=n+(num[j]*x); // x=x*10; // } // // printf("%d\n",n); // // // 17. 给定一个整型数组,从第1个元素开始将相邻的两个元素分别相互交换。交换完后,第1个元素将变成最后一个元素,其余元素都前进一位 // // int m=4; // int n1[m],n2[m],i,j; // printf("输入%d个数给数组赋值:",m); // for (i=0; i<m; i++) { // scanf("%d",&n1[i]); // } // for (i=0,j=1; i<=m-2; i++) { // n2[i]=n1[j]; // j++; // } // n2[m-1]=n1[0]; // for (i=0; i<m; i++) { // printf("%d ",n2[i]); // } // // // 18. 编写函数将一个n*n矩阵转置,例如:(****) // 1 2 3 4 1 5 3 4 // 5 6 7 8 -> 2 6 2 7 // 3 2 5 9 3 7 5 2 // 4 7 2 3 4 8 9 3 // // const int n=4; // int num1 ={{1,2,3,4},{5,6,7,8},{3,2,5,9},{4,7,2,3}}; // int num2 ,i,j; // for (i=0; i<n; i++) { // for (j=0; j<n; j++) { // num2[i][j]=num1[j][i]; // } // } // // for (i=0; i<n; i++) { // for (j=0; j<n; j++) { // printf("%d ",num2[i][j]); // } // printf("\n"); // } // // // // 19. // // 杨辉三角 输入n打印一个n行的杨辉三角 // 1 // 1 1 // 1 2 1 // 1 3 3 1 // 1 4 6 4 1 // 1 5 10 10 5 1 // 1 6 15 20 15 6 1 // // // int n,i,j; // int triangle[100][100]={}; // printf("输入n:"); // scanf("%d",&n); // for (i=0; i<n; i++) { // for (j=i; j>=0 ; j--) { // if (i==0 || j==0) { // triangle[i][j]=1; // }else{ // triangle[i][j]=triangle[i-1][j-1]+triangle[i-1][j]; // } // } // } // for (i=0; i<n; i++) { // for (j=i; j>=0; j--) { // printf("%d ",triangle[i][j]); // } // printf("\n"); // } // // // 20.给某个整型数组赋值,赋值规律如下,下标能被3整除的都赋值为1,能被5整除的都赋值为2,能被7整除的都赋值为3,其余都赋值为0 // // // int m=22; // int shuzu[m]; // int i; // shuzu[0]=0; // for (i=1; i<m; i++) { // if (i%3==0 && i%7!=0) { // shuzu[i]=1; // }else if (i%5==0){ // shuzu[i]=2; // }else if (i%7==0){ // shuzu[i]=3; // }else{ // shuzu[i]=0; // } // } // // for (i=0; i<m; i++) { // printf("%d ",shuzu[i]); // } return 0; }
相关文章推荐
- JS实现的数组去除重复数据算法小结
- 各种基本算法实现小结(二)—— 堆 栈
- 用HTML5实现的各种排序算法的动画比较 及算法小结
- C语言数组排序小结
- C/C++:各种基本算法实现小结(六)—— 查找算法
- C语言快速幂取模算法小结
- [数据结构与算法]各种排序算法的稳定性和时间复杂度小结
- [转]各种颜色相互转换算法的C语言源代码
- C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
- C语言小结1:函数与数组
- C语言--数组实现--各种排序算法个人总结
- 图及其遍历的各种算法小结
- 算法与数据结构:C语言的整数数组全排列(源码)
- JavaScript数组去重算法实例小结
- 各种基本算法实现小结(三)—— 树与二叉树
- ACM -- 算法小结(一)利用数组存放实现排序
- JavaScript常用数组算法小结
- 求两个整数的最大公约数的各种算法(C语言实现)
- C/C++:各种基本算法实现小结(七)—— 常用算法
- C语言 数据结构之连续存储数组的算法