| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖
标题:自己做的程序 为什么无法通过编译呢 第27行表达式语法错误???
只看楼主 加入收藏
martyxu
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2010-4-22
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:6 
自己做的程序 为什么无法通过编译呢 第27行表达式语法错误???
这个程序旨在用户输入一个数组内涵多少元素 然后依次输入元素 然后按照从大到小的顺序排列之后显示出来
希望大家给我改正一下 谢谢
#include <stdio.h>

int input_number()
{
  int input_number;
  int ch;
  
  input_number=0;
  ch=getchar();
    while (ch!='\n') {
        if ('0'<=ch&&ch<='9') {
            input_number=input_number*10;
            input_number=input_number+(ch-'0');
        }
        ch=getchar();
    }
  return input_number;
}

int main()
{
  int N;

  printf("How many numbers you want to input?");
  N=input_number();

  int numbers[N];
  int i,j,temp;
  
  for(i=0;i<N;i++)
     {
        printf("Input?");
        numbers[i]=input_number();
     }
     for(i=0;i<N;i++)
     {
        for(j=i+1;j<N;j++)
          if(numbers[i]>numbers[j]){
          temp=numbers[i];
          numbers[i]=numbers[j];
          numbers[j]=temp;
          }
     }  
  for(i=0;i<N;i++)
  printf("%i ",numbers[i]);
  return 0;
}



[ 本帖最后由 martyxu 于 2010-7-21 22:44 编辑 ]
搜索更多相关主题的帖子: 语法 编译 表达 
2010-07-21 22:43
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
int input_number()
{
  int input_number;
  int ch;
  
  input_number=0;
  ch=getchar();  /*输入内容*/
    while (ch!='\n')   /*ch不为回车*/
    {
        if ('0'<=ch&&ch<='9')      /*ch在0和9之间*/
        {
            input_number=input_number*10;   
            input_number=input_number+(ch-'0');
        }
        ch=getchar();
    }
  return input_number;
}
说实话,你写的这个函数,我没看明白
if后面的2句是啥意思?
2010-07-21 23:27
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
收藏
得分:0 
我感觉是你这个函数有问题
所以运行到主函数第3句就报错
第2句调用这个函数肯定有问题
至少这个函数都没有参数··
我也没看明白
2010-07-21 23:36
martyxu
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2010-4-22
收藏
得分:0 
回答楼上两位
input_number这个函数是用来获取用户从键盘上输入的数值的
也可以用scanf,但是不严谨 用getchar来做比较严谨
这个函数我一直在用 本身没有问题
问题好像在于下面的主函数
谢谢
2010-07-21 23:40
yuls
Rank: 2
等 级:论坛游民
帖 子:23
专家分:60
注 册:2010-5-28
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
//void sort(int *p,int n)
//{
//   
//}

void main()
{
    int num,*p;
    printf("How many numbers you want to input\n");
    scanf("%d",&num);
    p = (int*)malloc(num*sizeof(int));
    for(int i=0;i<num;i++)
        scanf("%d",p+i);
    //sort(p,num);
    int tem;
    for(int i=0;i<num-1;i++)
        for(int j=i+1;j<num;j++)
            if(*(p+i)<*(p+j))
            {
                tem=*(p+i);
                *(p+i)=*(p+j);
                *(p+j)=tem;
            }
    printf("after sort:\n");
    for(int j=0;j<num;j++)
        printf("%d ",*(p++));
    //free(p);
}

请问 该程序末尾加上 free(p); 后会报错是什么原因??? 求解释,谢谢

[ 本帖最后由 yuls 于 2010-7-22 22:53 编辑 ]
2010-07-22 00:03
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:5 
楼主你的排序算法有问题,既不是选择排序也不是冒泡排序。帮你改了一下:
 for(i=0;i<N-1;i++)
    {
        for(j=0 ; j<N-1-i ; j++)
          if(numbers[j]>numbers[j+1])
          {
            temp=numbers[j];
            numbers[j]=numbers[j+1];
            numbers[j+1]=temp;
          }
     }  
这个是冒泡排序。
还有最后面那个 printf("%i ",numbers[i]);改成 printf("%d",numbers[i]);
2010-07-22 11:46
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:5 
27行的语法错误是因为c99标准规定,变量定义必须在所以执行语句之前,也就是说你要在
printf("How many numbers you want to input?");
N=input_number();
之前定义int number[]。gcc下就可以,没那么多限制!
2010-07-22 11:56
快速回复:自己做的程序 为什么无法通过编译呢 第27行表达式语法错误???
数据加载中...
 
   



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

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