鱼C论坛

 找回密码
 立即注册
查看: 1628|回复: 6

调用函数后,得到结果不对

[复制链接]
发表于 2015-3-29 09:48:55 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 无情修罗 于 2015-3-29 15:56 编辑
#include <stdio.h>
#include <string.h>

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=2, lineLen<=80, 考生可在本行后添加代码、最多2行、行长<=80字符) */
int input(char *from[],char (*p)[9]); 
void find(char *from[],int n,int *findmax);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

int main(void)
{
        char *pStr[50], str[50][9];
        int Count=0, max;
        
        printf("****Input strings****\n");
        Count = input(pStr, str);

        printf("\nmax = ");
        find(pStr, Count, &max);
        printf("%s\n", pStr[max]);

        return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int input(char *from[],char (*p)[9])
{
        int i,j=0;
        char *temp;
        
        for(i=0;i<50;i++)
        {
                gets(*(p+i));

                if(strcmp(*(p+i),"*End*")==0)
                {
                        break;
                }
                else
                {
                        from[j++] = *(p+i);
                
                }
                
        
         
        }
        
        return j;
}

void find(char *from[],int n,int *findmax)
{
        
        int i,j;
        i=j=0;
        char *temp;
        *temp = *from[i];
        findmax = &j;
        for(i=1;i<n;i++)
        {
                if(strcmp(temp,from[i])<0)
                
                {
                        temp = from[i];
                        findmax=&i;
                }
                
        }

        *findmax = *findmax -1;
        printf("%d\n",*findmax);
        
        
}
我想问一下为什么调用find函数后,max的值与函数中最后的findmax的值不一样

最佳答案

查看完整内容

改了下,可以运行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-29 09:48:56 | 显示全部楼层
本帖最后由 haiouda 于 2015-3-30 10:42 编辑
#include <stdio.h>
#include <string.h>

/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=2, lineLen<=80, 考生可在本行后添加代码、最多2行、行长<=80字符) */

int max=0;
int input(char *from[],char p[50][9]); 
void find(char *from[],int n,int *findmax);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */



int main(void)
{
        char *pStr[50], str[50][9];
        int Count=0, max;
        
        printf("****Input strings****\n");
        Count = input(pStr, str);
        
        printf("\nmax = ");
        find(pStr, Count, &max);
        printf("%s\n", pStr[max]);
        
        return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int input(char *from[],char p[50][9])
{
        int i,j=0;
        char *q="*END*";
        
        
        for(i=0;i<50;i++)
        {
                gets(p[i]);
                
      if(       strcmp(p[i],q)==0   )
       break;
                
                else
                {
                        from[j++] = *(p+i);
                        
                }
                
        
                
        }
        
        return j;
}

void find(char *from[],int n,int *findmax)
{
        char *temp1;
        int i,j;
        i=j=0;
        
        
        for(i=0;i+1<n;i++)
        {
                if(strcmp(from[i],from[i+1])<0)
                        
                {
                        temp1 = from[i+1];
                        from[i+1]=from[i];
                        from[i]=temp1;
                         *findmax=i+1;
                       
                
                }

            
                
        }
        
               printf("%d\n",*findmax);
        
        
}
改了下,可以运行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-29 17:29:29 | 显示全部楼层
本帖最后由 haiouda 于 2015-4-1 23:02 编辑
没用的删除了
试着调了下,没运行不知道,还有没有错的地方;

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-1 09:55:27 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-1 10:16:58 | 显示全部楼层
学习了一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-4-1 21:15:46 | 显示全部楼层
haiouda 发表于 2015-3-29 17:29
试着调了下,没运行不知道,还有没有错的地方;

还是有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-1 22:49:02 | 显示全部楼层
本帖最后由 haiouda 于 2015-4-1 23:01 编辑

什么问题?
二楼的,我在我机器上运行了。
比较大小这里,实际大小的应该比算出来的少1,因为二楼的程序 i 是0开始的。*pStr[50]; 也是从0 开始的,这里不算问题哟。




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 21:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表