无情修罗 发表于 2015-3-29 09:48:55

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

本帖最后由 无情修罗 于 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));
void find(char *from[],int n,int *findmax);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

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

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

      return 0;
}

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

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

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

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

haiouda 发表于 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);
void find(char *from[],int n,int *findmax);
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */



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

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

            
               
      }
      
               printf("%d\n",*findmax);
      
      
}
改了下,可以运行了

haiouda 发表于 2015-3-29 17:29:29

本帖最后由 haiouda 于 2015-4-1 23:02 编辑


没用的删除了



试着调了下,没运行不知道,还有没有错的地方;

taochen 发表于 2015-4-1 09:55:27

{:1_1:}

吾王Ein 发表于 2015-4-1 10:16:58

学习了一下

无情修罗 发表于 2015-4-1 21:15:46

haiouda 发表于 2015-3-29 17:29
试着调了下,没运行不知道,还有没有错的地方;

还是有问题

haiouda 发表于 2015-4-1 22:49:02

本帖最后由 haiouda 于 2015-4-1 23:01 编辑

无情修罗 发表于 2015-4-1 21:15
还是有问题
什么问题?
二楼的,我在我机器上运行了。
比较大小这里,实际大小的应该比算出来的少1,因为二楼的程序 i 是0开始的。*pStr; 也是从0 开始的,这里不算问题哟。




页: [1]
查看完整版本: 调用函数后,得到结果不对