凊(◦˙▽˙◦) 2022-10-10 18:50 采纳率: 91.7%
浏览 73
已结题

怎么可以让输入的数组个数是任意输入的

这个代码输入的数组元素的个数是固定的,怎么可以让输入的数组个数是任意输入的,我在主函数中输入COUNT的值,但提醒我
在“int”左侧忽略,当未声明变量时。

#include<stdio.h>
#define COUNT 6
int a[COUNT], count = COUNT, k, m, b[COUNT],t,c[COUNT];

void oarray(){  //输出原数组
    printf("原数组:");
    for (k = 0; k < COUNT; k++)
        printf("%5d", b[k]);
    printf("\n");
}

//求最大值
void max(){
    int i=0, max=0;
    max=a[0];
    for(i=1;i<COUNT;i++){
        if(max<a[i]){
            max=a[i];
        }
    }
    printf("最大值:%d\n",max);
}

//求最小值
void min(){
    int j=0, min=0;
    min=a[0];
    for(j=1;j<COUNT;j++){
        if(min>a[j]){
            min=a[j];
        }
    }
    printf("最小值:%d\n",min);

}
void sort(){  //排序算法
    for(k=0;k<COUNT-1;k++)  //排序数组
            for(m=k+1;m<COUNT;m++)
                if (c[k] > c[m]) {
                    t = c[k];
                    c[k] = c[m];
                    c[m] = t;
                }
        for (k = 0; k < COUNT; k++)
            a[k] = c[k];
        printf("排序后数组为:");
        for (k = 0; k < COUNT; k++)
        printf("%5d", c[k]);
    printf("\n");
}

void darray(){  //删除重复数组
       /* int  count = COUNT;*/

        for(k=0;k<COUNT-1;k++)  //排序数组
            for(m=k+1;m<COUNT;m++)
                if (c[k] > c[m]) {
                    t = c[k];
                    c[k] = c[m];
                    c[m] = t;
                }
        for (k = 0; k < COUNT; k++)
            a[k] = c[k];
    
    for (k = count - 1; k > 0; k--) //删除重复数组
        if (a[k] == a[k - 1]) {
            for (m = k - 1; m < COUNT - 1; m++)
                a[m] = a[m + 1];
            count--;
        }
            printf("删除重复后的数组:");
    for (k = 0; k < count; k++)
        printf("%5d", a[k]);
    printf("\n");


}
 
void choose(){  //选项
    printf("\n");
    printf("选择选项:\n\n");
    printf("1.输出原数组\n\n");
    printf("2.输出排序后数组\n\n");
    printf("3.输出删除重复后的数组\n\n");
    printf("4.输出最大值\n\n");
    printf("5.输出最小值\n\n");
    printf("6.输出所有\n\n");
    printf("7.退出\n\n");
    printf("请输入选项   1  2  3  4  5  6  7\n");
    int x;
    printf("\n\n");
    do{
        scanf("%d",&x);
        printf("\n");
        switch(x){
        case 1: oarray(); printf("\n退出按7\n\n");    break;  
        case 2: sort(); printf("\n退出按7\n\n");      break; 
        case 3: darray(); printf("\n退出按7\n\n");    break; 
        case 4: max();    printf("\n退出按7\n\n");      break; 
        case 5: min();  printf("\n退出按7\n\n");      break; 
        case 6: oarray();printf("\n");sort();printf("\n");darray();printf("\n");max();printf("\n");min();   printf("\n退出按7\n\n");break; 
        case 7: printf("结束\n\n");    break;
        default:break;
        }
    }while(x!=7);
}


void main(){
    printf("Input %d data in order:\n", COUNT);
    for (k = 0; k < COUNT; k++) {  
            printf("a[%d]=", k);
            scanf("%d", &a[k]);
            b[k] = a[k], c[k] = a[k];
    }
    oarray();
    choose();


    //system("pause");


}

  • 写回答

1条回答 默认 最新

  • X-道至简 2022-10-10 19:03
    关注

    如下,全局变量是不行的,在函数里面是可以的,并且变长的数组不能初始化

    int len;
    int arr[len]; 全局变量好像是不行的
    int main()
    {
        int i=0;
        int arr_1[i]; //函数内部是可以,i可以读取
        scanf("%d", &i);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月18日
  • 已采纳回答 10月10日
  • 创建了问题 10月10日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程