有道很基础的程序,大家看看错哪里...

liumangmaoenen 2010-05-13 11:44:39
原问题是这样子:

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:a,输入10个数;b,进行处理;c,输出10个数。

我自己编了道程序如下:

#include"stdio.h"
#define n 10
void import(int parameter[])
{
int i;

printf("Please enter the numbers\n");
for(i=0;i<n;i++)
scanf("%d",¶meter[i]);
}
int execute(int parameter[])
{
int i,min,max,exchange1,exchange2;

for(i=0;i<n;i++)
{
parameter[i]=min;
if(parameter[i]<parameter[i++])
min=i;
else
min=i++;
}
for(i=0;i<n;i++)
{
parameter[i]=max;
if(parameter[i]<parameter[i++])
max=i;
else
max=i++;
}
exchange1=parameter[0];
parameter[0]=parameter[min];
parameter[min]=exchange1;
exchange2=parameter[0];
parameter[0]=parameter[max];
parameter[max]=exchange2;
}
void export(int parameter[]) //dec说这里错,但我没发现有什么问题,大家觉得呢?
{
for(i=0;i<n;i++)
{
printf("Please export the numbers\n");
printf("%d",parameter[i]);
}
}
int main()
{
int group[n];

import(group);
execute(group);
export(group);

return 0;
}


用dev-c++ 编译不能通过,我瞧了半天,没发现啥问题啊?

你们觉得错哪里了?
...全文
209 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wade_2003 2010-05-14
  • 打赏
  • 举报
回复

#include"stdio.h"
#define n 10
void import(int parameter[])
{
int i;

printf("Please enter the numbers\n");
for(i=0;i<n;i++)
scanf("%d",¶meter[i]);
}
int execute(int parameter[])
{
int i,min,max,exchange1,exchange2;

for(i=0;i<n;i++)
{
parameter[i]=min;
if(parameter[i]<parameter[i++])
min=i;
else
min=i++;
}
for(i=0;i<n;i++)
{
parameter[i]=max;
if(parameter[i]<parameter[i++])
max=i;
else
max=i++;
}
exchange1=parameter[0];
parameter[0]=parameter[min];
parameter[min]=exchange1;
exchange2=parameter[0];
parameter[0]=parameter[max];
parameter[max]=exchange2;
return 0; //必须返回值
}
void export(int parameter[]) //dec说这里错,但我没发现有什么问题,大家觉得呢?
{
for(int i=0;i<n;i++)// i没有定义
{
printf("Please export the numbers\n");
printf("%d",parameter[i]);
}
}
int main()
{
int group[n];

import(group);
execute(group);
export(group);

return 0;
}
wwwxhb 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hitheu 的回复:]

void export(int parameter[])
{
for(i=0;i<n;i++)
{
printf("Please export the numbers\n");
printf("%d",parameter[i]);
}
}
中参数n没有传进去:for(i=0;i<n;i++)不合法
改成void export(int parameter[],……
[/Quote]

大哥,人家 n 是宏定义的啦。 应该是里面的 i 没有定义吧。
glhz610 2010-05-14
  • 打赏
  • 举报
回复
同意 i没定义!
Robust23 2010-05-14
  • 打赏
  • 举报
回复
我看见了 export函数中的i没有定义
你的提示语言应该是 error C2065: 'i' : undeclared identifier
这个意思就是i没有声明的意思哈
  • 打赏
  • 举报
回复
void export(int parameter[]) //dec说这里错,但我没发现有什么问题,大家觉得呢?
{
for(i=0;i<n;i++) //这里的i没有定义
Binlorima 2010-05-14
  • 打赏
  • 举报
回复
这个不就是插入排序吗,两个方向各走一步就ok了
liumangmaoenen 2010-05-14
  • 打赏
  • 举报
回复
#include"stdio.h"
#define n 10
void import(int parameter[])
{
int i;

printf("Please enter the numbers\n");
for(i=0;i<n;i++)
scanf("%d",¶meter[i]);
}
int execute(int parameter[])
{
int i,min,max,exchange1,exchange2;

for(i=0;i<n;i++)
{
min=parameter[i];
if(parameter[i]<parameter[i++])
min=i;
else
min=i++;
}
for(i=0;i<n;i++)
{
max=parameter[i];
if(parameter[i]<parameter[i++])
max=i;
else
max=i++;
}
exchange1=parameter[0];
parameter[0]=parameter[min];
parameter[min]=exchange1;
exchange2=parameter[0];
parameter[0]=parameter[max];
parameter[max]=exchange2;
}
int input(int parameter[])
{
int i;

for(i=0;i<n;i++)
{
printf("Please export the numbers\n");
printf("%d",parameter[i]);
}
}
int main()
{
int group[n];

import(group);
execute(group);
input(group);

return 0;
}


这是我重新修改过的,有个地方很奇怪:我定义一个名为export的函数就无法通过,但我把这个函数名改为input后,居然通过了!

请问有谁知道这是为什么吗?
FluorecentCT 2010-05-14
  • 打赏
  • 举报
回复
i没定义?
renbin5566 2010-05-14
  • 打赏
  • 举报
回复
int execute(int parameter[])
{
int i,min,max,exchange1,exchange2;

for(i=0;i<n;i++)
{
parameter[i]=min;//这里的赋值语句不正确啊。min=parameter【i】
if(parameter[i]<parameter[i++])
min=i;
else
min=i++;
}
for(i=0;i<n;i++)
{
parameter[i]=max;//这里的赋值语句也不正确
if(parameter[i]<parameter[i++])
max=i;
else
max=i++;
}
exchange1=parameter[0];
parameter[0]=parameter[min];
parameter[min]=exchange1;
exchange2=parameter[0];
parameter[0]=parameter[max];
parameter[max]=exchange2;
}
void export(int parameter[]) //dec说这里错,但我没发现有什么问题,大家觉得呢?
{
for(i=0;i<n;i++)
{
printf("Please export the numbers\n");
printf("%d",parameter[i]);
}
}
;execute(int parameter[])这个算法貌似很不正确
yarkhotel 2010-05-14
  • 打赏
  • 举报
回复
我的:

#include <stdio.h>


#define nnn 10

void import(int parameter[])
{
int i;

printf("Please enter the numbers\n");

for(i = 0; i<nnn; i++)
scanf("%d", ¶meter[i]);
}
int execute(int parameter[])
{
int i, MIN, MAX, min, max, tmp;

for(i = 0; i < nnn; i++)
{
MIN = parameter[0];
min = 0;

if ( MIN > parameter[i] ) {
min = i;
MIN = parameter[i];
}
}
tmp = parameter[0];
parameter[0] = MIN;
parameter[min] = tmp;

for(i = 0; i < nnn; i++)
{
MAX = parameter[0];
max = 0;

if ( MAX < parameter[i] ) {
max = i;
MAX = parameter[i];
}
}

tmp = parameter[nnn-1];
parameter[nnn-1] = MAX;
parameter[max] = tmp;

return 0;
}
void export(int parameter[])
{
int i;

printf("Please export the numbers\n");
for(i = 0; i < nnn; i++)
{
printf("%d", parameter[i]);
}

return;
}
int main()
{
int group[nnn];

import(group);
execute(group);
export(group);

return 0;
}
yuanzhang198711 2010-05-13
  • 打赏
  • 举报
回复
用指针传递很好啊,哪个i没有声明。
brookmill 2010-05-13
  • 打赏
  • 举报
回复
我的gcc说是在export里面for那一行出错。
楼主的是什么错?为什么会在export那一行呢?有点奇怪。
lyboy8 2010-05-13
  • 打赏
  • 举报
回复
就是i没定义...
不靠谱的哥哥 2010-05-13
  • 打赏
  • 举报
回复
void export(int parameter[])
{
for(i=0;i<n;i++)
{
printf("Please export the numbers\n");
printf("%d",parameter[i]);
}
}
中参数n没有传进去:for(i=0;i<n;i++)不合法
改成void export(int parameter[],int n)
for(int i=0;i<n;i++)
brookmill 2010-05-13
  • 打赏
  • 举报
回复
export里面的i没定义

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧