更新时间2018-12-03 04:40:46
这是我编的,不知道为什么无法输出“no”的情况
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int i,j,j1,k,l=0;
char a[50];
for(i=0;i<50;i++)
{
scanf("%c",&a[i]);
}
for(j=0;j<i-1;j++)
{
for(k=j+1;k<i;k++)
{
if(a[j]==a[k])
{a[k]='@';
a[j]='@';} //让所有重复的字符变为“@”
}
}
for(j1=0,l=0;j1<i;j1++)
{
if(a[j1]!='@')
{printf("%c",a[j1]);
l++;
break;}
}
if(l==0)
{
printf("no");
}
return 0;
}
你的程序对于都有重复的字符不能打印 no 的问题已经解决了,见下面的运行结果。主要原因是i循环结束后的i值,你反复在用。改正以后的程序是用一个宏定义#define N 10(为了调试方便,把50改为10了)来解决的,整个程序见下:
#include <iostream>
#include <stdio.h>
using namespace std;
#define N 10
int main()
{
int i,j,j1,k,l=0;
char a[N];
for(i=0;i<N;i++)
{
scanf("%c",&a[i]);
}
for(j=0;j<N-1;j++)
{
for(k=j+1;k<N;k++)
{
if(a[j]==a[k])
{a[k]='@';
a[j]='@';} //让所有重复的字符变为"@"
}
}
for(j1=0,l=0;j1<N;j1++)
{
if(a[j1]!='@')
{printf("%c
",a[j1]);
l++;
break;}
}
if(l==0)
{
printf("no
");
}
return 0;
}