C语言作业问题,为什么会错??求大虾求解!!!

找出一个大小为m的一维单精度实型数组a中的最大数,以及最大数对应的下标,并将找出的最大数作为函数FindMax的返回值,最大数的下标通过指针变量n传给调用函数。#incl... 找出一个大小为m的一维单精度实型数组a中的最大数,以及最大数对应的下标,并将找出的最大数作为函数FindMax的返回值,最大数的下标通过指针变量n传给调用函数。

#include <stdio.h>

void Findmax(float a[],int m,int *n)
{
float max=a[0];
int i,*n=0;
for (i=1;i<m;i++)
{
if (max<a[i])
{
max=a[i];
*n=i;
}
}
return max;
}

void main()
{
float b[10]={1,2,3,8,5,6,7};
int i;
float max;
max=Findmax(b[],10,&i);
printf ("max=%f,i=%d\n",max,i);
}

指出哪里有错就好啦!!!老师要求用这种格式写的。

还有:
第一个字符与第n个字符位置交换,第二个字符与第n-1个字符位置交换。
#include <stdio.h>
#include <string.h>

void main()
{
InvStr(char *s, int n);

}

void InvStr(char *s, int n)
{

char str[200],ch;
char *p,*q;
gets (str);
p=str;
q=p+strlen(p) - 1;
while (p<q)
{
ch=*p;
*p++=*q;
*q--=ch;
}
printf ("%s\n",str);
}
这个是错的!!怎么把这个变成和第一题的格式一样?
展开
 我来答
souvis
2011-06-19 · TA获得超过132个赞
知道答主
回答量:77
采纳率:0%
帮助的人:96.8万
展开全部
第一个程序存在以下语法问题:
1、Findmax函数返回值应该为float,即float Findmax(float a[],int m,int *n);
2、Findmax函数体中,指针变量n重复定义了,参数已经有n,函数体里面就不需要再定义了。或者是你本来想给*n赋值为0的(也应该这么做),结果误接到i的定义后面了;
3、Findmax函数的调用问题,其中数组参数只需要写数组名就行了,即Findmax(b, 10, &i);
另外,程序中定义的变量最好都初始化个值,如main函数中的i和max,赋个0初始值比较安全

第二个程序:
1、函数在调用前若没定义则要有前置声明,即在main函数前面加个void InvStr(char *s, int n);声明;
2、函数调用错误,应该为InvStr(s, n);同时s和n要先定义,如char s[128]; int n = 0;
3、InStr函数并没有用到函数的参数,而是在函数里自己又定义了个字符数组来进行操作。我想你本意应该是想通过这个函数来修改外面的字符串。大概给你修改下代码,尽量保留了你代码原味的:
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

void InvStr(char *s, int n);//使用前要前置函数声明
void main()
{
char s[128];
InvStr(s, strlen(s));//函数的调用
printf ("%s\n",s);
system("pause");
}

void InvStr(char *s, int n)
{
char ch = 0;
char *p = NULL, *q = NULL;
gets (s);//操作的是从外面传进来的s
p = s;
q=p+strlen(p) - 1;
while (p<q)
{
ch=*p;
*p++=*q;
*q--=ch;
}
}
台式笔记本L
2011-06-19 · TA获得超过1726个赞
知道大有可为答主
回答量:865
采纳率:100%
帮助的人:814万
展开全部
void Findmax(float a[],int m,int *n)这里应该改成float Findmax(float a[],int m,int *n);
第二题和第一题什么是格式一样?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友92a1b0413
2011-06-19
知道答主
回答量:23
采纳率:0%
帮助的人:23.9万
展开全部
#include <stdio.h>

float Findmax(float a[],int m,int *n) //函数是有返回值的,你没有定义
{
float max=a[0];
int i;
*n=0; //n 是函数的参数,是已经定义过的不需要再次定义
for (i=1;i<m;i++)
{
if (max<a[i])
{
max=a[i];
*n=i;
}
}
return max;
}

void main()
{
float b[10]={1,2,3,8,5,6,7};
int i;
float max;
max=Findmax(b,10,&i);//在函数定义中b[]表示的是数组类型,在函数调用时只要给出数组的首地址即可,即数组名
printf ("max=%f,i=%d\n",max,i);
}

第二题有好多错误,不一一指出啦,格式已改好,程序能运行
#include <stdio.h>
#include <string.h>

void InvStr(char str[])
{
char *p,*q,ch;
p=str;
q=p+strlen(p) - 1;
while (p<q)
{
ch=*p;
*p=*q;
*q=ch;
p++;
q--;
}
}

void main()
{
char str[200];
gets (str);
InvStr(str);
printf ("%s\n",str);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5b2dc8d
2011-06-19
知道答主
回答量:11
采纳率:0%
帮助的人:5.6万
展开全部
第一题
#include <stdio.h>

float Findmax(float a[],int m,int *n) //返回值类型要注意
{
float max=a[0];
int i;
*n=0; //要分开,不然相当于 int i, int *n; n重复申明了
for (i=1;i<m;i++)
{
if (max<a[i])
{
max=a[i];
*n=i;
}
}
return max;
}

void main()
{
float b[10]={1,2,3,8,5,6,7};
int i;
float max;
max=Findmax(b,10,&i);
printf ("max=%f,i=%d\n",max,i);
}

第二题
#include <stdio.h>
#include <string.h>

void InvStr();//函数使用前要先声明,同时,既然参数用不到就干脆不要定义了
void main()
{
InvStr( );

}

void InvStr()
{

char str[3],ch;
char *p,*q;
gets (str);
p=str;
q=p+strlen(p) - 1;
while (p<q)
{
ch=*p;
*p++=*q;
*q--=ch;
}
printf ("%s\n",str);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sakuya2002
2011-06-19 · TA获得超过407个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:181万
展开全部
第一题,错的地方我做了注释
#include <stdio.h>
float Findmax(float a[],int m,int *n)//返回类型
{
float max=a[0];
int i;
*n=0;//另起一行
for (i=1;i<m;i++)
{
if (max<a[i])
{
max=a[i];
*n=i;
}
}
return max;
}
void main()
{
float b[10]={1,2,3,8,5,6,7};
int i;
float max;
max=Findmax(b,10,&i);//b 替换 b[]
printf ("max=%f,i=%d\n",max,i);
}

第二题如下:

#include <stdio.h>
#include <string.h>

void InvStr(char *str, int n)
{
int i,j;
char temp;
for(i=0,j=n-1;i<j;i++,j--)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
void main()
{
char str[100];
int n;
gets(str);
n=strlen(str);
InvStr(str,n);
printf("%s\n",str);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式