对于一个字符串,如果这个字符串在ASCII码的意义上是有序的,即升序或降序,则称该字符串为“优雅的字符串”。一个长为n的字符串s,对于1<= i <= n - 1,如果总有s[i] <= s[i+1],则字符串为升序;如果总有s[i] >= s[i+1],则字符串降序。现给定一个字符串,请你判断该字符串是否“优雅”,如果该字符串是“优雅”的,则判断是“正优雅”(升序)还是“负优雅”(降序)。
输入描述
一个非空,不包含空格的字符串s,保证字符串中的字符都是ASCII标准中的字符。数据保证不会出现所有字符相同的字符串。(2<= length(s) <=1e5)
输出描述
如果字符串“正优雅”,则输出“Positive elegance”,如果“负优雅”,则输出“Negative elegance”,否则输出“Non elegance”(均不含引号)。
提示无
样例输入 (*+12356ASdfz
样例输出
Positive elegance
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
#include <string.h>
int main()
{
char a[100] = {0};
int i;
int zyy = 1;
int fyy = 1;
printf("请输入字符串:");
gets(a);
//判断是否正优雅
for (i=1;i<strlen(a);i++)
{
if(a[i] < a[i-1])
{
zyy = 0;
break;
}
}
//判断是否负优雅
for (i=1;i<strlen(a);i++)
{
if(a[i] > a[i-1])
{
fyy = 0;
break;
}
}
if (zyy && !fyy)
{
printf("Positive elegance\n");
}else if (!zyy && fyy)
{
printf("Negative elegance\n");
}else
printf("Non elegance\n");
return 0;
}
地方
#include <stdio.h>
int main()
{
char *s = "(*+12356ASdfz";//输入的字符串
int len = strlen(s);
int ascii[len];
int asciiTemp[len];
int m;
for (m = 0; m < len; m++)//每一位字符对应ascii码存入数组
{
ascii[m] = s[m];
asciiTemp[m] = s[m];
}
int i, j, temp;
for (i = 0; i < len; ++i)//对数组ascii递增排序
{
for (j = i + 1; j < len; ++j)
{
if (ascii[j] < ascii[i])
{
temp = ascii[i];
ascii[i] = ascii[j];
ascii[j] = temp;
}
}
}
int isPosi = 1;
int isNega = 1;
for (i = 0; i < len; i++)//判断是否为Positive
{
if (asciiTemp[i] != ascii[i])
{
isPosi = 0;
break;
}
}
for (i = 0; i < len; i++)
{
if (asciiTemp[len-1-i] != ascii[i])//判断是否为Negative
{
isNega = 0;
break;
}
}
if (isPosi)
{
printf("Positive elegance\n");
}
else if (isNega)
{
printf("Negative elegance\n");
}
else
{
printf("Non elegance\n");
}
return 0;
}