当前位置: 代码迷 >> C语言 >> 为什么会这样?
  详细解决方案

为什么会这样?

热度:180   发布时间:2005-08-16 22:43:00.0
为什么会这样?
有两个问题要请教一下各位大虾:
1.这是一个寻找最长字符串的程序

#include <stdio.h>
#include <string.h>
#define N 5
#define M 81
char *fun(char (*sq)[N])
{int i;
char *sp;
sp=sq[0];
for(i=0;i<N;i++)
  if(strlen(sp)<strlen(sq[i]))
    sp=sq[i];
return sp;
}
main()
{char str[N][M],*longest; int i;
printf("enter %d lines\n",N);
for(i=0;i<N;i++) gets(str[i]);
printf("\nThe N string :\n",N);
for(i=0;i<N;i++) puts(str[i]);
longest=fun(str);
printf("\nThe longest string:\n"); puts(longest);
}
   但无论怎样,结果都是第一个输入的字符串。
2.这是一个统计元音字母个数的程序

#include <conio.h>
#include <stdio.h>
void fun(char *s,int num[5])
{int k,i=5;
for(k=0;k<i;k++)
  num[i]=0;
for(;*s;s++)
{i=-1;
  switch(*s)
  {case 'a':case 'A':{i=0;break;}
   case 'e':case 'E':{i=1;break;}
   case 'i':case 'I':{i=2;break;}
   case 'o':case 'O':{i=3;break;}
   case 'u':case 'U':{i=4;break;}
  }
  if(i>=0)
   num[i]++;
}
}
main()
{char s1[81]; int num1[5],i;
clrscr();
printf("\nPlease enter a string:"); gets(s1);
fun(s1,num1);
for(i=0;i<5;i++) printf("%d  ",num1[i]);printf("\n");
}
   最后结果却是一串很长的数字
----------------解决方案--------------------------------------------------------
第一个这样就对了
你比较下就知道为什么错了


#include <stdio.h>
#include <string.h>
#define N 5
#define M 81
char *fun(char (*sq)[N])
{int i;
char *sp;
sp=sq[0];
for(i=0;i<N;i++)
  if(strlen(sp)<strlen(sq[i]))
    sp=sq[i];
return sp;
}
main()
{char str[N][M],*longest; int i;
printf("enter %d lines\n",N);
for(i=0;i<N;i++) gets(str[i]);
printf("\nThe N string :\n",N);
for(i=0;i<N;i++) puts(str[i]);
longest=fun(str);
printf("\nThe longest string:\n"); puts(*longest);
getch();
}
----------------解决方案--------------------------------------------------------

2. void fun(char *s,int num[5]) { int k,i=5; for(;*s;s++) { i=-1; switch(*s) { case 'a':case 'A':{i=0;break;} case 'e':case 'E':{i=1;break;} case 'i':case 'I':{i=2;break;} case 'o':case 'O':{i=3;break;} case 'u':case 'U':{i=4;break;} } if(i>=0) num[i]++; } for(i=0;i<5;i++) printf("%d ",num[i]); printf("\n"); }

main() { char s1[81]; int num1[5],i; printf("\nPlease enter a string:"); gets(s1); for(i=0;i<5;i++) num1[i]=0; fun(s1,num1); getch(); }


----------------解决方案--------------------------------------------------------
第一个程序中fun函数里面的形参应该是这样吧,char *fun(char (*sq)[M]),里面是M吧.
----------------解决方案--------------------------------------------------------
1.不要忘了加  getch();
----------------解决方案--------------------------------------------------------
  相关解决方案