首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-03-29 
本程序在VS2010下没有错误,为什么运行不了。程序是输入5个字符,根据不同数字,调用不同函数!!前几个都是可以

本程序在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);
}

热点排行