1) 编写一个程序,对两个字符串s1和s2进行比较。若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要使用strcmp函数,两个字符串用gets函数读入。输出的正数或负数的绝对值是相比较的两个字符串相应字符的ASCII码的差值。例如,‘a’与‘c’比,由于‘a’<‘c’,应输出负数,由于‘a’与‘c’的ASCII码值相差2,因此输出-2。比如and与aid比较,根据第2个字符比较结果,‘n’>‘i’,故输出5。
#include<stdio.h>
#include<string.h>
int main()
{
int m;
char s1[100], s2[100];
printf("请输入第一个字符串:\n");
gets_s(s1);
printf("请输入第二个字符串:\n");
gets_s(s2);
for (int i = 0; i <strlen(s1); i++)
{
if (s1[i] != s2[i])
{
m = s1[i] - s2[i];
break;
}
else
m = 0;//直到遍历最后找不到不同的字符再让m=0,所以不用break
}
printf("%d\n", m);
return 0;
}
输出结果
2) 编写一个程序,输入一个字符串,判断该字符串是否为回文,当字符串是回文时输出“Yes”,否则输出“No”。所谓回文是指正向与反向的拼写都一样的字符串,例如:adgda是回文,abcde不是回文。
#include<stdio.h>
#include<string.h>
int main()
{
char ch[20];
printf("请输入一个字符串:\n");
gets_s(ch);
int sz = strlen(ch);
int left = 0;//数组左下标
int right = sz - 1;//数座右下标
while (left <= right && ch[left] == ch[right])
{
left++;
right--;
}
if (left < right)//如果是回文则循环的最后left=right
{
printf("No\n");
}
else
{
printf("Yes\n");
}
return 0;
}
输出结果