凊(◦˙▽˙◦) 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日

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行