| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 407 人关注过本帖
标题:简单习题求帮助,求改正
只看楼主 加入收藏
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
结帖率:96.23%
收藏
已结贴  问题点数:10 回复次数:5 
简单习题求帮助,求改正
随意输入一个数字n,然后输入一个长度为n的数组,求出数组中的最大值。。
#include<stdio.h>
void main()
{
    int n,i,t;
    scanf("%d",&n);
    int a[n];
    printf("\n");
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n-1;i++)
    {    t=0;
        if(a[i]>a[i+1])
        {   
            t=a[i];
            a[i+1]=t;
        }
    }
    printf("%d",a[n-1]);
}这是我写的程序,运行不了,请教一下该如何改正。万分感谢。
搜索更多相关主题的帖子: 最大值 
2012-10-18 21:48
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
收藏
得分:0 
这样的代码在C下是不能运行的,因为定义数组的时候数组的大小必须是固定的,也就是说,n必须是常量或常量表达式。
2012-10-18 22:08
yuwenhui2008
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2012-10-17
收藏
得分:10 
在你定义一个数组a那条语句  int a[n] 错了。C 中定义数组时要求是静态的。即,你可以这么定义: int a[10], 但是不能像你那么定义。若要定义一个由用户输入长度的数组(动态数组),必须使用malloc函数。

对于你给的题目,可以用下面的程序:
#include<stdio.h>

#define MaxSize 100

void main()
{
    int n,i,t;
    int a[MaxSize] = {0};// 定义一个静态数组(MaxSize不是变量,而是宏),保证MaxSize大于你要比较的个数
   
    scanf("%d",&n);
    printf("\n");
   
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
   
    t = 0;
    for(i=0;i<n;i++)
    {
        if (a[i]>t)
        {
            t = a[i];
        }        
    }
    printf("the max number is %d \n",t);
}
2012-10-18 22:26
ji082119
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-22
收藏
得分:0 
直接用STL中的Vector<int>vec 来个for循环初始化n个值,然后return max_element(vec.begin(),vec.end());everything is ok!
2012-10-18 22:48
ji082119
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-22
收藏
得分:0 
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int get_max_element(vectro<int>&vec,int n)
{
   for(it i = 0;i<n;i++)
   vec.push_back(random()%7+2)//产生2-8的随机数
   return max_element(vec.begin(),vec.end());
}

int main()
{
   vector<int>vec;
    int n;
    cin>>n;
    cout<<get_max_element(vec,n)<<endl;
}
2012-10-18 22:53
pangdudu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-10-18
收藏
得分:0 
回复 5楼 ji082119
return *max_element(vec.begin(),vec.end());因为max_element返回的是迭代器不是实际的值,所以需要使用解引用*才对。
2012-10-19 09:52
快速回复:简单习题求帮助,求改正
数据加载中...
 
   



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

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