您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> ACM题 输出格式错误,我不会改,帮我改改

ACM题 输出格式错误,我不会改,帮我改改

来源:网络整理     时间:2016/7/18 18:27:52     关键词:

关于网友提出的“ ACM题 输出格式错误,我不会改,帮我改改”问题疑问,本网通过在网上对“ ACM题 输出格式错误,我不会改,帮我改改”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: ACM题 输出格式错误,我不会改,帮我改改
描述:

这是题目的链接:http://acm.nit.net.cn/showproblem.jsp?pid=1371
这是我写的程序:


#include
#include
int main()
{
static int a[58],i,l,k;
char ch[105];
while(scanf("%s",ch)!=EOF)
{
l=strlen(ch);
for(i=0;i<>
{
if(ch[i]>='A'&&ch[i]<='Z'||ch[i]>='a'&&ch[i]<='z')
{
if(a[ch[i]-'A']==0)
{
      a[ch[i]-'A']++;
k++;
}
else
a[ch[i]-'A']++;
}
else
break;
}
if(i==l)
{
printf("%d\n",k);
for(i=0;i<58;i++)
if(a[i]!=0)
      printf("%c %d\n",i+'A',a[i]);
}
else
{
break;
}
for(i=0;i<58;i++)
a[i]=0;
k=0;
printf("\n");
}
return 0;
}

我提交的时候系统说我Presentation Error ,就是输出格式错误,我改过很多版本,还是错估计就是这个空格的位置错误
帮帮忙谢谢了!
解决方案1:

就目前来说,20分钟内,我绝对写不出来!

解决方案2:

这是我按照题目要求写的,经调试通过,你参考参考!

//从题目知,要求可以测试多组数据,那么应采用二维数组作为数据结构
#include
#include
int main()
{
char *a[10], b[10][100];       //*a[10]定义了一个指针数组
int n=0;
puts("sample input\n");
for(int i=0;i<10;i++)
{
    scanf("%s",b[i]);
int flag;              //作为判断字符串是否合法的标志
for(int j=0;j<>
{
flag=0;
if( b[i][j]>=65&&b[i][j]<=90 || b[i][j]>=97&&b[i][j]<=122 )
flag=1;
else
break;
}
if( flag )
a[n++]=b[i];   //如果字符串合乎要求,则移交首地址
else
break;      //由于输入非法字符,则跳出while循环
}
puts("\nsample output\n");
for(int i=0;i<>
{
int count[58]={0};    //计数数组初始化
    int num=0;            //字符的种类初始化
for(int j=0;j<>
++count[a[i][j]-65];      //统计每种字符的个数
for(int k=0;k<58;k++)
if(count[k])              //统计字符的种类
num++;
//开始进行TMD的输出
printf("%d\n",num);
for(int k=0;k<58;k++)
if(count[k])
printf("%c\t%d\n",k+65,count[k]);
printf("\n");     //每组case用一个空行隔开
}
return 0;
}
解决方案3:


//第一次输出时,第一行不换行
比如
input:
asd
output:
a 1
s 1
d 1
而你的output:
a 1
s 1
d 1
解决方案4:

引用 3 楼 a542107840 的回复:
引用楼主 a542107840 的回复:
这是题目的链接:http://acm.nit.net.cn/showproblem.jsp?pid=1371
这是我写的程序:
C/C++ code
#include
#include
int main()
{
static int a[58],i,l,k;
char ch[105];
wh……

没定义结束条件,没法判断最后一次输入,只能在确定有下一次输入时,输出一个换行 解决方案5:

晚上我自己写写这题试试!

解决方案6:


/*最后一次输出时只有一个换行,若不是字母也不退出*/
#include
#include
int main()
{
    static int a[58],i,l,k;
int count=0;//判断第一次输出
    char ch[105];
    while(scanf("%s",ch)!=EOF)
    {
l=strlen(ch);
        for(i=0;i<>
        {
            if(ch[i]>='A'&&ch[i]<='Z'||ch[i]>='a'&&ch[i]<='z')
            {
                if(a[ch[i]-'A']==0)
                {
                     a[ch[i]-'A']++;
                    k++;
                }
                else
                    a[ch[i]-'A']++;
            }
            else
                break;
        }
        if(i==l)
        {
            if(count!=0)
printf("\n");//输出换行
else
count=1;
printf("%d\n",k);
            for(i=0;i<58;i++)
                if(a[i]!=0)
                     printf("%c %d\n",i+'A',a[i]);
        }
        for(i=0;i<58;i++)
            a[i]=0;
        k=0;
    }
    return 0;
}
解决方案7:

比赛时出现这个问题 , 那个是20分钟的罚时啊


以上介绍了“ ACM题 输出格式错误,我不会改,帮我改改”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2780955.html

相关图片

相关文章