c语言的数组操作|时刻需

阅读次数: 222

  • A+
所属分类:C语言 语言学习
c语言的数组操作|时刻需

不多说了直接上代码吧

1.整型的可变长度的数组

#include<stdio.h>
main(){



/* 测试可变长度的数组(整型的) start */

    int m;
    int *a,*b,*a_same,*b_same;

    printf("输入数组a的个数:\n");
    scanf("%d",&m);

    a = (int*)malloc(m*sizeof(int));//动态分配数组

    printf("输入实际填值的数量:\n");
    int v_num;
    scanf("%d",&v_num);
    int i;
    for(i=0;i<v_num;i++){
        if(i<m){
            scanf("%d",a+i);
        }
        if(i>=m){
            a=(int*)realloc(a,(i+1)*sizeof(int));
            scanf("%d",a+i);
        }
    }
    printf("v_num是%d\n",v_num);
    printf("%d",a[3]);

/* 测试可变长度的数组 end */

    return 0;
}

2.可以变长度的字符串数组(索引数组)

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define   N 4 /*根据字符串的长度排序,由长到短*/

void sort(char *p[N]);

void main() {

#if 0
   char str[N][50];/*保存字符串的二维数组,每个字符串的最大长度是50*/
   int i;
   char *p[N];/*声明指针数组,保存二维数组每一行的地址*/

   printf("请输入%d个字符串:\n",N) ;
   #else
   int i;
   char *p[N];/*声明指针数组,保存二维数组每一行的地址*/

   char **str=(char**)malloc(sizeof(char*)*N);

   for( i=0;i<N;i++)   str[i] = (char*)malloc(sizeof(char)*50);

   printf("请输入%d个字符串:\n",N) ;

#endif

   for(i=0;i<N;i++)
    scanf("%s",str[i]);
    //   gets(str[i]);/*初始化二维数组*/
    for(i=0;i<N;i++){
    /*初始化指针数组*/
        p[i]=str[i];
    }
    sort(p);
    system("pause");
}



void sort(char *p[N]) {
    int i,j;
    char *t;
    printf("由长到短排序:\n");
    for(i=0;i<N-1;i++)
        for(j=i+1;j<N;j++){
            if(strlen(p[i])<strlen(p[j])){
                t=p[i];
                p[i]=p[j];
                p[j]=t;}
                }
        for(i=0;i<N;i++)
            puts(p[i]);/*输出排序后的结果*/
}

时刻需

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: