编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值是相比较的两个字符串第一个不同的相应字符的ascii码的差值。例如“a”与“c”比,由于“a”<“c”,应输出负数,同时由于两者ascii码差值为2,因此应输出-2。同理,“and”和“aid”比较,根据第二个字符比较结果,‘n’比‘i’大5,因此输出5
时间: 2023-04-21 17:05:54 浏览: 90
以下是Python的代码实现:
s1 = input("请输入第一个字符串:")
s2 = input("请输入第二个字符串:")
i =
while i < len(s1) and i < len(s2):
if ord(s1[i]) > ord(s2[i]):
print(ord(s1[i]) - ord(s2[i]))
break
elif ord(s1[i]) < ord(s2[i]):
print(ord(s1[i]) - ord(s2[i]))
break
else:
i += 1
else:
if len(s1) == len(s2):
print()
elif len(s1) > len(s2):
print(ord(s1[len(s2)]) - ord('\'))
else:
print(ord('\') - ord(s2[len(s1)]))
注意,这里使用了Python的字符串切片功能,即s1[len(s2)]表示s1的第len(s2)个字符,而ord('\')表示ASCII码中的,即空字符。
相关问题
比较字符串\n\n编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负
题目描述:
比较字符串
编一个程序,将两个字符串s1,s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数、负数、零都是整型。
解题思路:
可以用strcmp()函数来实现这个功能,不过题目要求不使用strcpy()函数,所以我们需要手写字符串比较函数。
具体实现如下:
- 首先比较两个字符串对应位置上的字符,如果相等,则继续比较下一个字符;
- 如果当前位置上的字符不相等,那么就判断哪个字符大,如果s1当前位置上的字符大,则返回一个正数;否则返回一个负数;
- 如果比较完了一个字符串,还没有发现不同,那么就根据两个字符串的长度再作比较。
回答:
比较字符串的函数可以手写,具体的实现方法可以参考解题思路中的描述。需要注意的是,输入字符串的时候需要用gets()函数,而不是scanf或者其他的输入函数。如果用scanf函数输入字符串,那么会在遇到空格或者其他类型的分割符的时候停止读取,导致程序无法正常工作。而gets函数则可以一直读取输入,直到读到回车或者换行符为止。
编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是
两个字符串的比较可以通过逐个比较字符的ASCII码来实现。具体实现方法如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s1[100], s2[100];
int i, len1, len2, result = 0;
gets(s1);
gets(s2);
len1 = strlen(s1);
len2 = strlen(s2);
for (i = 0; i < len1 && i < len2; i++) {
if (s1[i] > s2[i]) {
result = s1[i] - s2[i];
break;
} else if (s1[i] < s2[i]) {
result = s1[i] - s2[i];
break;
}
}
if (result == 0 && len1 != len2) {
result = len1 - len2;
}
printf("%d", result);
return 0;
}
```
其中,gets函数用于读入两个字符串,strlen函数用于获取字符串的长度,逐个比较字符的ASCII码,如果s1>s2,则输出一个正数;如果s1=s2,则输出0;如果s1<s2,则输出一个负数。输出的正数或负数的绝对值应是相比较两个字符串相应字符ASCII码的差值。
阅读全文