读书人

本程序在VS2010下没有异常为什么运行

发布时间: 2013-03-29 14:24:52 作者: rapoo

本程序在VS2010下没有错误,为什么运行不了。
程序是输入5个字符,根据不同数字,调用不同函数!!
前几个都是可以的。
加入第四个就不行了。
问题是出在第四个的哪里?



#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void cmp_ASCII(char *ch[]);
void cmp_long(char *ch[]);
void cmp_Flong(char *ch[]);
void show(char *ch[]);
void main()
{
int i=0,num;
char str[5][20];
char *p[20];
puts("input 5 string:");
while(i<5&&gets(str[i])&&str[i][0]!='\0')
{
p[i]=str[i];
i++;
}

printf("请输入命令前面的数字:\n1.输出初始字符串列表\n2.按ASCII顺序输出字符串\n3.按长度递增输出字符串\n4.按字符串中第一个单词的长度输出字符串\n5.退出\n");
while(scanf("%d",&num))
{
switch(num)
{
case 1: show(p);break;
case 2:cmp_ASCII(p);break;
case 3:cmp_long(p);break;
case 4:cmp_Flong(p);break;
case 5:exit(1);
}
}
}

void show(char *ch[])
{
for(int i=0;i<5;i++)
puts(ch[i]);
}
void cmp_ASCII(char *ch[])
{
int i,j;
char *temp;
for(j=0;j<5;j++)
for(i=0;i<4;i++)
if(strcmp(ch[i],ch[i+1])>0)
{
temp=ch[i];
ch[i]=ch[i+1];
ch[i+1]=temp;
}

show(ch);
}
void cmp_long(char *ch[])
{
int i,j;
char *temp;
for(j=0;j<5;j++)
for(i=0;i<4;i++)
if(strlen(ch[i])>strlen(ch[i+1]))
{
temp=ch[i];
ch[i]=ch[i+1];
ch[i+1]=temp;
}
show(ch);
}
void cmp_Flong(char *ch[])
{
int i,j,count[5];
char *temp;

for(j=0;j<5;j++)
{
for(i=0;i<20;i++)
{
if(ch[j][i]!='\0')
count[j]++;
break;
}
j++;
}

for(j=0;j<5;j++)
for(i=0;i<4;i++)
if(count[i]>count[i+1])
{
temp=ch[i];
ch[i]=ch[i+1];
ch[i+1]=temp;
}

show(ch);
}



[解决办法]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void cmp_ASCII(char *ch[]);
void cmp_long(char *ch[]);
void cmp_Flong(char *ch[]);
void show(char *ch[]);
void main()
{
int i=0,num;
char str[5][20];
char *p[20];
puts("input 5 string:");
while(i<5&&gets(str[i])&&str[i][0]!='\0')
{
p[i]=str[i];
i++;
}

printf("请输入命令前面的数字:\n1.输出初始字符串列表\n2.按ASCII顺序输出字符串\n3.按长度递增输出字符串\n4.按字符串中第一个单词的长度输出字符串\n5.退出\n");
while(scanf("%d",&num))
{
switch(num)
{
case 1: show(p);break;
case 2:cmp_ASCII(p);break;
case 3:cmp_long(p);break;
case 4:cmp_Flong(p);break;
case 5:exit(1);


}
}
}

void show(char *ch[])
{
for(int i=0;i<5;i++)
puts(ch[i]);
}
void cmp_ASCII(char *ch[])
{
int i,j;
char *temp;
for(j=0;j<5;j++)
for(i=0;i<4;i++)
if(strcmp(ch[i],ch[i+1])>0)
{
temp=ch[i];
ch[i]=ch[i+1];
ch[i+1]=temp;
}

show(ch);
}
void cmp_long(char *ch[])
{
int i,j;
char *temp;
for(j=0;j<5;j++)
for(i=0;i<4;i++)
if(strlen(ch[i])>strlen(ch[i+1]))
{
temp=ch[i];
ch[i]=ch[i+1];
ch[i+1]=temp;
}
show(ch);
}
void cmp_Flong(char *ch[])
{
int i,j,count[5] = {0};
char *temp;

for(j=0;j<5;j++)
{
for(i=0;i<20;i++)
{
//if(ch[j][i]!='\0')
if ((ch[j][i]>='a' && ch[j][i]<='z')
[解决办法]

(ch[j][i]>='A' && ch[j][i]<='Z'))
{
count[j]++;
continue;
}

break;
}
//j++;
}
int t;
for(j=0;j<5;j++)
for(i=0;i<4;i++)
if(count[i]>count[i+1])
{
temp=ch[i];
ch[i]=ch[i+1];
ch[i+1]=temp;
// add
t = count[i];
count[i] = count[i+1];
count[i+1] = t;
}

show(ch);
}

读书人网 >C语言

热点推荐