这段代码实现了一个功能:从输入的字符串中找出第一个不重复的字符,并输出该字符。如果字符串中没有不重复的字符,则输出"NO"。

代码首先定义了一个字符数组a,并使用宏定义指定了数组的大小x为100010。然后使用gets函数从标准输入中读取字符串并存储在数组a中。

接下来使用两个for循环嵌套遍历字符串a。外层循环控制变量i用于遍历字符串中的每个字符,内层循环控制变量j用于与变量i不相等的字符进行比较。

如果找到了一个与字符a[i]相同且位置不同的字符a[j],则将变量count设为1,表示找到了重复字符,并跳出内层循环。

在外层循环中,如果count仍然为0,则表示a[i]是第一个不重复的字符,将其输出并使用break语句跳出外层循环。

如果外层循环结束时count为1,并且a[i+1]为字符串结束标志0,则表示字符串中所有字符都是重复的,输出"NO"。

最后返回0表示程序正常结束。

代码示例:

#include <stdio.h>
#define x 100010
char a[x];
int main()
{
    gets(a);
    int i,j;
	int count=0;
    for(i=0;a[i];++i){
        for(j=0;a[j];++j){
            if(a[i]==a[j]&&i!=j){
                count=1;
                break;
            }
        }
    if(count==0){
        printf("%c",a[i]);
        break;
    } else if(count==1&&a[i+1]==0) {
        printf("NO");
    }
        count=0;
    }
    return 0;
}

解释:

  • #include <stdio.h>:包含标准输入输出库的头文件,提供了printf和gets等函数。
  • #define x 100010:定义了一个宏x,值为100010。
  • char a[x]:定义了一个字符数组a,大小为x,用于存储输入的字符串。
  • gets(a):从标准输入中读取一行字符串并存储到数组a中。
  • for(i=0;a[i];++i):外层循环,遍历字符串a中的每个字符。
  • for(j=0;a[j];++j):内层循环,遍历字符串a中的每个字符,并与外层循环当前字符比较。
  • if(a[i]==a[j]&&i!=j):判断当前字符是否与其他字符相同,且位置不同。
  • count=1:如果找到重复字符,将count设为1。
  • break:跳出内层循环。
  • if(count==0):如果count仍然为0,表示当前字符是第一个不重复的字符。
  • printf("%c",a[i]):输出第一个不重复的字符。
  • break:跳出外层循环。
  • else if(count==1&&a[i+1]==0):如果count为1,且当前字符为字符串结束标志,表示所有字符都是重复的。
  • printf("NO"):输出"NO",表示字符串中没有不重复的字符。
  • count=0:将count重置为0,以便下一轮循环判断。
  • return 0:返回0,表示程序正常结束。

原文地址: https://www.cveoy.top/t/topic/pvKk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录