c语言字符串-由键盘输入一行英文句子,输出字符最多的单词。
#include<stdio.h>#include<string.h>main(){inta=0,i,j=0,m=0;charc[80],b[80];gets(c);fo...
#include<stdio.h>
#include<string.h>
main()
{
int a=0,i,j=0,m=0;
char c[80],b[80];
gets(c);
for(j=0;j<=80;j++)
{
i=0;
while(c[j]!=' ')
i++;
if(a<=i)
{
a=i;
for(m=0;m<a;m++)
b[m]=c[j];
}
}
puts(b);
}
为什么没有输出呢? 展开
#include<string.h>
main()
{
int a=0,i,j=0,m=0;
char c[80],b[80];
gets(c);
for(j=0;j<=80;j++)
{
i=0;
while(c[j]!=' ')
i++;
if(a<=i)
{
a=i;
for(m=0;m<a;m++)
b[m]=c[j];
}
}
puts(b);
}
为什么没有输出呢? 展开
展开全部
这个while一直为真
while(c[j]!=' ')
i++;
这个复制单词是错误的
for(m=0;m<a;m++)
b[m]=c[j];
我改了一下程序,应该使用下面的比较好。
#include<stdio.h>
#include<string.h>
int main() {
//a 单词的临时最大长度
//i 每个单词的长度
//len 输入的字符的字符个数
int a = 0, i = 0, j = 0, m = 0, len = 0;
char c[80], b[80];
gets(c);
len = strlen(c); //计算c中的字符个数
for (j = 0; j < len; j++) {
if (c[j] != ' ') {
i++; //如果一直是单词字符,i增加1
}
if (c[j] == ' ' || c[j] == '\0') { //如果c中遇到空格或结束符
if (a < i) {
a = i;
for (m = 0; m < i; ++m) { //复制单词
b[m] = c[j - i + m];
}
}
i = 0;
}
}
b[m] = '\0'; //给单词末尾加上"\0"
puts(b);
}
应该这样写
while(c[j]!=' ')
i++;
这个复制单词是错误的
for(m=0;m<a;m++)
b[m]=c[j];
我改了一下程序,应该使用下面的比较好。
#include<stdio.h>
#include<string.h>
int main() {
//a 单词的临时最大长度
//i 每个单词的长度
//len 输入的字符的字符个数
int a = 0, i = 0, j = 0, m = 0, len = 0;
char c[80], b[80];
gets(c);
len = strlen(c); //计算c中的字符个数
for (j = 0; j < len; j++) {
if (c[j] != ' ') {
i++; //如果一直是单词字符,i增加1
}
if (c[j] == ' ' || c[j] == '\0') { //如果c中遇到空格或结束符
if (a < i) {
a = i;
for (m = 0; m < i; ++m) { //复制单词
b[m] = c[j - i + m];
}
}
i = 0;
}
}
b[m] = '\0'; //给单词末尾加上"\0"
puts(b);
}
应该这样写
展开全部
#include <string.h>
int strncmp1(char* a, char* b, int n)
{
int i = 0;
if (a==0 || b==0)
return 0;/* 空指针不作处理*/
while (i<n && *(a+i) && *(b+i))
{
if (*(a+i)>*(b+i))
return 1;
if (*(a+i)<*(b+i))
return -1;
i++;
}
return 0;
}
main()
{
int n,k;
printf("%d",strncmp1("bc","bc",2));
}
int strncmp1(char* a, char* b, int n)
{
int i = 0;
if (a==0 || b==0)
return 0;/* 空指针不作处理*/
while (i<n && *(a+i) && *(b+i))
{
if (*(a+i)>*(b+i))
return 1;
if (*(a+i)<*(b+i))
return -1;
i++;
}
return 0;
}
main()
{
int n,k;
printf("%d",strncmp1("bc","bc",2));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个while一直为真
while(c[j]!=' ')
i++;
也就说下面的b[m]根本就是空的 所以没有输出 不过楼上的写的也有问题~~ 你自己看看再改改吧
while(c[j]!=' ')
i++;
也就说下面的b[m]根本就是空的 所以没有输出 不过楼上的写的也有问题~~ 你自己看看再改改吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <string.h>
int strncmp1(char* a, char* b, int n)
{
int i = 0;
if (a==0 || b==0)
return 0;/* 空指针不作处理*/
while (i<n && *(a+i) && *(b+i))
{
if (*(a+i)>*(b+i))
return 1;
if (*(a+i)<*(b+i))
return -1;
i++;
}
return 0;
}
main()
{
int n,k;
printf("%d",strncmp1("bc","bc",2));
}
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
int strncmp1(char* a, char* b, int n)
{
int i = 0;
if (a==0 || b==0)
return 0;/* 空指针不作处理*/
while (i<n && *(a+i) && *(b+i))
{
if (*(a+i)>*(b+i))
return 1;
if (*(a+i)<*(b+i))
return -1;
i++;
}
return 0;
}
main()
{
int n,k;
printf("%d",strncmp1("bc","bc",2));
}
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,第一个for循环中i<80;
其次,while语句也有误,因为如果一但c[j]这个字符不是空格,那么就成了死循环了
其次,while语句也有误,因为如果一但c[j]这个字符不是空格,那么就成了死循环了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询