请看看我的程序哪里出错了!C语言

#include<stdio.h>
void main()
{
void exchange(int *p,int n);

int a[10],*q,i;
q=a;
for(i=0;i<10;i++)
scanf("%d",q++);
for(i=0,q=a;i<10;i++)
printf("%4d",*q++);
printf("\n");
exchange(q,10);

}

void exchange(int *p,int n)//把最小的数字和第一位数字调换位置
{
void printer(int *w,int n);
int *a,i,k,min=0;
a=p;
for(i=0;i<n;i++,p++)
{
if(min>=*p)
{
min=*p;
k=i;
}
}
*(p-n)=*(p-n+k);
*(p-n+k)=*a;
printer(p,10);
return;
}

void printer(int *w,int n)//输出新的
{
int i;
for(i=0;i<n;i++,w++)
printf("%4d",*w);
}

修改了一下,我把修改的地方给你指出来,你看一下。
#include<stdio.h>
void main()
{
void exchange(int *p,int n);

int a[10],*q,i;
q=a;
for(i=0;i<10;i++)
scanf("%d",q++);
for(i=0,q=a;i<10;i++)
printf("%4d",*q++);
q=a;//添了一行,重置指针q指向数组开头
printf("\n");
exchange(q,10);

}

void exchange(int *p,int n)//把最小的数字和第一位数字调换位置
{
void printer(int *w,int n);
int *a,i,k,min=10000; //这里min初值要设一个极大值
a=p;
for(i=0;i<n;i++,p++)
{
if(min>=*p)
{
min=*p;
k=i;
}
}
*(p-n+k)=min;//这行及下一行进行交换,你这个地方不对。
*(p-n)=*(p-n+k);
p=a;//添了这行,重置指针p指向数组开头。你的程序的关键错误就在这地方
printer(p,10);
return;
}

void printer(int *w,int n)//输出新的
{
int i;
for(i=0;i<n;i++,w++)
printf("%4d",*w);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-02
就只看了你的main()函数,发现一个主要问题,就是函数的声明不能在main函数内,必须在函数以外声明.
void exchange(int *p,int n);
void main()
{
...
}

C语言简单程序,帮看看哪错了
错误点有3个:输入一个实数那行有个引号用了中文符,应该改为英文符;最后输出-a那段语句后面没有写“;”;定义变量a时为双精度浮点数,而输入时存为了单精度浮点数,存在溢出故障,会导致运行错误,见下图:应该改为如下 include<stdio.h> main(){ double a;printf("请输入一个实数:");scanf(...

关于C语言编写程序的一个疑问 高手帮忙看看我的程序哪错了
看了你的代码觉得,你在C语言的语法规则上还有待提高啊,在此举出你所给出的代码的若干错误。首先,你的代码不完整。第9、11、13行要定义三个100行的二维字符数组,如果仅仅是类似char adj[100][12]={"开心的"}的定义;这样adj[1]到adj[99]这99个词都会是空值(ASCII码为0),若用printf()函...

大佬帮忙看看这个程序错在哪了,刚学C语言?
修改如下:int main(){int price=0; \/\/该处由‘,’改为‘;’printf("请输入金额(元) :") ;\/\/该处缺少分号scanf("%d",&price);int change=100-price;printf("找您%d元。\\n",change);return 0;} 运行结果如下:

c语言:如图,请问一下哪里出错了?
首先解答一下这个C语言代码出错的原因:第一个gets未定义:出现这个错误一般是没有包含相应的头文件,或者库里没有这个函数。这里应该是没有这个函数。gets(char *dest)是一个老的库函数,采用这个函数存在越界的安全隐患。它只有一个参数,如果输入的字符个数超过dest内存空间,程序可能失败,也可能被黑客...

我是c语言小白,问问大神帮我看看编写的简单程序这哪里出错了?
#include<stdio.h> 输入代码时忽视输入法隐藏的错误 表面上看都是一样的代码,但是第二行就有错误,是全角和半角的不同,再看:正确编译运行 所以你的代码没有任何问题,但是要注意代码输入的方法。以前回答了很多,有时间可以看看我最近回答c语言问题:网页链接 网页链接 网页链接 网页链接等等。

C语言错误:case expression not constant 看看我哪里出错了
程序有两处错误,首先是没有取地址,scanf("%f%c%f",a,c,b);改为scanf("%f%c%f",&a,&c,&b);第二是把case "-":中的全部双引号改为单引号,即case '-'

c语言 请问这个程序那里写错了
scanf("%d",&n);

C语言开关灯问题,麻烦大神们帮我看看这个程序哪里错了啊,结果不对...
两个错误:1、int a[6000]={1};这句。你这只是将a[0]赋值1,其他都是0,数组默认以0填充,应该改为:int a[6000];for(i=0;i<6000;i++)a[i]=1;2、第二层循环里:if(a[j]==0)a[j]=1;if(a[j]==1)a[j]=0;这个语句把所有的灯都关闭了,因为如果关了,就打开;打开后又...

Devc c语言求大神看看哪里出错了
include <stdio.h> int main(){int x;scanf("%d",x);if(x%3==0&&x%7==0) \/\/这里不能有分号 { printf("yes\\n");} else { printf("no\\n");} return 0;}

C语言数组编程 帮我看看哪里错了
这是在你的基础上改写程序:include <iostream>\/\/cout的头文件是"iostream"include <stdio.h>\/\/scanf的头文件是"stdio.h"using namespace std;void main(){ int i,max,min,pos_max,pos_min,a[10];cout<<"请输入十个元素:"<<endl;for(i=0;i<10;i++)\/\/输入数组a的元素 scanf("%d",...

相似回答
大家正在搜