关于网友提出的“ 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:
没定义结束条件,没法判断最后一次输入,只能在确定有下一次输入时,输出一个换行
解决方案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