求助C语言的问题 帮个忙谢谢
#include<stdio.h>#include<stdbool.h>#include<string.h>#include<ctype.h>intmain(void){...
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char t[] = "*\n";
int i = 0;
int j = 0;
char *p[100] = {NULL};
char *p1 = NULL;
char s[30];
char c[100][30];
size_t cd[100];
bool b = false;
while(true)
{
fgets(s, 30, stdin);
if(strstr(s,t) == 0)
break;
*(cd+i) = strlen(s);
strcpy(c[i],s);
i++;
j++;
}
if(j == 0)
{
printf("sorre");
return 1;
}
for(i=0; i<j; i++)
{
p[i] = (char *)malloc(*(cd+i)+1);
strcpy(p[i],c[i]);
}
while(!b)
{
b = true;
for(i=0; i<j-1; i++)
if(cd[i] > cd[i+1])
{
b = false;
p1 = p[i];
p[i] = p[i+1];
p[i+1] = p1;
}
}
for(i=0; i<j; i++)
printf("%s", p[i]);
return 0;
}
为什么我的每次输出都是sorre
if(strstr(s,t) == 0)
break;
这个是不是有问题啊 展开
#include <stdbool.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char t[] = "*\n";
int i = 0;
int j = 0;
char *p[100] = {NULL};
char *p1 = NULL;
char s[30];
char c[100][30];
size_t cd[100];
bool b = false;
while(true)
{
fgets(s, 30, stdin);
if(strstr(s,t) == 0)
break;
*(cd+i) = strlen(s);
strcpy(c[i],s);
i++;
j++;
}
if(j == 0)
{
printf("sorre");
return 1;
}
for(i=0; i<j; i++)
{
p[i] = (char *)malloc(*(cd+i)+1);
strcpy(p[i],c[i]);
}
while(!b)
{
b = true;
for(i=0; i<j-1; i++)
if(cd[i] > cd[i+1])
{
b = false;
p1 = p[i];
p[i] = p[i+1];
p[i+1] = p1;
}
}
for(i=0; i<j; i++)
printf("%s", p[i]);
return 0;
}
为什么我的每次输出都是sorre
if(strstr(s,t) == 0)
break;
这个是不是有问题啊 展开
3个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
//#include <stdbool.h>
#define bool int
#define true 1
#define false 0
int main(void){
char t[] = "*\n";
int i = 0;
int j = 0;
int k = 0;
char *p[100] = {NULL};
char *p1 = NULL;
char s[30];
char c[100][30];
size_t cd[100];
bool b = false;
while(true)
{
fgets(s, 30, stdin);
if(strstr(s,t) == 0)
break;
*(cd+i) = strlen(s);
strcpy(c[i],s);
i++;
j++;
}
if(j == 0)
{
printf("sorry");
return 1;
}
for(i=0; i<j; i++)
{
p[i] = (char *)malloc(*(cd+i)+1);
strcpy(p[i],c[i]);
}
while(!b)
{
for(k=0;k<j-1;k++){
for(i=0; i<j-k-1; i++) {
if(cd[i] > cd[i+1])
{
p1 = p[i];
p[i] = p[i+1];
p[i+1] = p1;
}
}
}
b = true;
}
for(i=0; i<j; i++)
printf("%s", p[i]);
return 0;
}
是有一点问题,我给你改好了,你在输入的时候,每次末尾要加个* ,直到你想结束输入的时候,。我测试都好了,有问题再问我。
展开全部
if(strstr(s,t) == 0)
break;
这个有问题,执行后break,跳出while循环,j=0,所以输出sorre
break;
这个有问题,执行后break,跳出while循环,j=0,所以输出sorre
更多追问追答
追问
恩
追答
题目的功能是什么,说一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
坐等大神解答!
追问
"\n"这样算1个字符还是2个啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询