#一直在输出错误代码,好像是从第二个循环中产生的错误,但是我没有发现到底是哪里错了,请各位答主指点迷津!
有一道课后习题如图
输出的结果乱码如图
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int i, j, quantity=0,max=0,maxi=0;
char a[100];
gets(a);
for (i = 0; a[i]!='\0'; i = j + 1)
{
for (j = i; (a[j]!=' ')&&(a[j]!='\0'); j++)
{
quantity += 1;
}
if (quantity > max)
{
max = quantity;
maxi = i;
}
quantity = 0;
}
for (i = maxi; a[i]!=' '; i++)
{
printf("%c", a[i]);
}
}
j变量没有初始化为0
i = j + 1是想干啥
修改如下,改动处见注释,供参考:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//#include <math.h>
int main()
{
int i, j, quantity = 0, max = 0, maxi = 0;
char a[100];
gets(a);
for (i = 0; a[i] != '\0'; i = j + 1)
{
for (j = i; (a[j] != ' ') && (a[j] != '\0'); j++)
{
quantity += 1;
}
if (quantity > max)
{
max = quantity;
maxi = i;
}
if (a[j] == '\0') break; //修改 内层循环到字符串结束处,跳出结束外循环
quantity = 0;
}
for (i = maxi; a[i] != ' ' && a[i] != '\0'; i++) //修改 找到的最长单词可能是最尾部的
{
printf("%c", a[i]);
}
}