| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 586 人关注过本帖
标题:输入一个一维数组,元素个数为 k,k 的值在运行过程中输入,但下面的程序有 ...
只看楼主 加入收藏
lcq131419
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2014-4-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
输入一个一维数组,元素个数为 k,k 的值在运行过程中输入,但下面的程序有一个错,应该怎么改?谢谢
#include<stdio.h>
void fun(int *a,int n)   /*定义一个函数*/
{
    int i,j,temp;      /*定义局部变量*/
    for(i=0;i<n-1;i++)
        for(j=i+1;j<n;j++)
        {
            if(*(a+i)>*(a+j))
            {
                temp=*(a+i);
                *(a+i)=*(a+j);
                *(a+j)=temp;
            }     /*从小到大排序*/
            
        }
}
void main()
{
    int k,i;  /**/
    printf("你要排序的数组元素的个数K:");
    scanf("%d\n",&k);
    int b[k];                    /*为什么这里是错的,k要赋予定值*/
    for(i=0;i<k;i++)
         scanf("%d",&b[i]);  
    fun(&b[0],k);  /*调用函数*/
    for(i=0;i<5;i++)
        printf("%5d",b[i]);
}
搜索更多相关主题的帖子: 元素 include 
2014-04-27 12:31
code_farmer
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:29
专家分:117
注 册:2014-4-21
收藏
得分:5 
你的程序我在linux下运行是可以的,不懂是不是编译器的问题。或者,你可以这么做:
程序代码:
#include<stdio.h>

#define MAX 20    //定义一个宏,表示数组的容量

void fun(int *a, int n)   /*定义一个函数*/
{
    int i, j, temp;      /*定义局部变量*/

    for(i = 0; i < n-1; i++)
        for(j = i+1; j < n; j++)
        {
            if( *(a+i) > *(a+j) )
            {
                temp   = *(a+i);
                *(a+i) = *(a+j);
                *(a+j) = temp;
            }     /*从小到大排序*/
           

        }
}

void main()
{
    int k, i;  /**/
   

    int b[MAX] = {0};//将初始化为0

    printf("你要排序的数组元素的个数K:");
    scanf("%d\n", &k);

   // int b[k];                    /*为什么这里是错的,k要赋予定值*/

    for(i = 0; i < k; i++)
         scanf("%d", &b[i]); 

//    fun(&b[0], k);
    fun(b, k);  //b就表示数组的首地址

//for(i = 0; i < 5; i++)
    for(i = 0; i < k; i++)   

        printf("%5d",b[i]);

    printf("\n");
}

2014-04-27 13:32
神机军师
Rank: 7Rank: 7Rank: 7
来 自:游鱼潜水
等 级:黑侠
威 望:2
帖 子:202
专家分:542
注 册:2013-12-21
收藏
得分:5 
楼上说的对
int b[k];
数组定义,方括号[]里面必须是常量表达式,也就是不能是一个变量。
定于b数组,为其开辟内存空间是需要确定的值的,变量是不能通过编译的。
你可以用宏定义:
#define MAX 100
int b[MAX];
输入k的值,然后处理数组的时候用:
for (i = 0; i < k; i++)
{
...
}这样。
前提是限定数组元素个数不能超过MAX(100)个,如果是定义char数组存字符串
还要考虑最后的字符串结束符'\0'。
还有可以使用malloc函数开辟内存空间,可以开辟具体的内存,不过这里是要用到
指针的思想。

未知令人期待!
2014-04-27 14:28
lcq131419
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 3 楼 神机军师
哦,学习了,谢谢!!
2014-04-27 15:19
lcq131419
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 2 楼 code_farmer
哦,谢谢了
2014-04-27 15:20
快速回复:输入一个一维数组,元素个数为 k,k 的值在运行过程中输入,但下面的程 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040797 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved