杭电ACM第2025题,为什么我用这样做不对?

#include <stdio.h>
#include <string.h>
void main()
{
char str[1024],ch;
int i,leng,j;
while(gets(str)!=EOF) //这里有问题,错误原因是超时,但是我改成while(scanf("%s",str)!=EOF)就对了
{
j=0;
leng=strlen(str);
for(i=1;i<leng;i++)
if(str[j]<str[i])
j=i;
ch=str[j];
for(i=0;i<leng;i++)
{
printf("%c",str[i]);
if(str[i]==ch)
printf("(max)");
}
printf("\n");
}
}

gets返回的是字符指针,如果读到文件结束,返回NULL,即0。
scanf返回的是读取成功了多少个变量,是个整数,如果读到文件结束,返回EOF,即-1
所以while(gets(str)!=EOF)要这样改while(gets(str)!=NULL)
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-24
gets可以读取空格,回车才结束;scanf空格就结束追问

能再说得清楚一点吗?或者这道题怎么改?

第2个回答  2014-01-22
杭州电子科技大的?师弟你好追问

恩,学长好,帮我看看吧,这题。

追答

我不懂啊,我学的是计算机应用。

杭电ACM第2025题,为什么我用这样做不对?
所以while(gets(str)!=EOF)要这样改while(gets(str)!=NULL)

杭电acm 2025 求帮助!!!wronganswer!!!
你程序的问题在于没有对max初始化 所以对"aaaa"这样的输入就会出错。解决办法:maxc=str[0];的下一行加上max=0;

杭电acm2025,明明运行结果都是对的,为什么就是wa啊,我快哭了
include "string.h"include "stdlib.h"int main(){ int i,k;char a[110];\/\/数组开大一些 char b;while(gets(a)){ k=strlen(a);b=a[0]; \/\/去掉单引号 for(i=1;i<k;i++)if(b<a[i])b=a[i];for(i=0;i<k;i++){printf("%c",a[i]);if(a[i]==b)printf("(ma...

电力这么紧缺,为什么不大力发展核电?
首先自己上网做了一个数据对比,如果按照同等发电量的发电厂,一年需要的燃煤是300万吨,那么一个核电站只需要30吨的核燃料,就可以完成同样的发电量,对比火力核电站具有无与伦比的优势。火力发电厂通过燃煤进行发电,不仅会释放二氧化碳等有毒气体,而且还会产生灰尘。不仅会对环境造成严重的破坏,最主要...

为什么那么多人喜欢用苹果手机?
苹果手机的iOS系统是一种封闭系统,安全性强,带有病毒的程序在苹果的iOS系统中都没办法获取相应的权限,这样一来,我们用得也比较安心,不用担心手机被病毒侵入。同时,iOS系统的优化能力好,运行流畅,使用起来不卡顿。苹果手机的屏幕显示值得点赞,分辨率很好,不论是看图片还是看视频,特别是玩游戏,...

相似回答