|
发表于 2023-12-12 16:17:19
|
显示全部楼层
这段代码没有输出的原因是因为在主函数中调用了`strcmp`函数,但是并没有提供函数的实现。此外,代码中存在一些问题:
1. 在第12行和第19行的`if`语句中,应该使用双等号(==)进行比较,而不是单等号(=),单等号是赋值操作。
2. 在第20行和第27行的`if`语句中,应该使用单引号(')将字符常量括起来,而不是双引号("),双引号表示字符串。
3. 第32行的`else if(*p0)`语句中,应该是`*p`,而不是`*p0`。
4. 在最后一行,`if(strcmp(a,b)`语句没有正确闭合的括号。
以下是修复后的代码:
- #include<stdio.h>
- int strcmp(char *p, char*q) {
- int s1 = 0, s2 = 0;
- int n = 0;
- char *c = p;
- for (; *p; p++) {
- if (*p == 'A') {
- *p += 32;
- }
- }
- for (; *q; q++) {
- if (*q == 'A') {
- *q += 32;
- }
- }
- p = c;
- q = c;
- for (; *p; p++) {
- s1++;
- }
- for (; *q; q++) {
- s2++;
- }
- if (s1 > s2) {
- return 1;
- }
- if (s2 > s1) {
- return -1;
- }
- p = c;
- q = c;
- if (s2 == s1) {
- for (; *p; p++, q++) {
- if (*p > *q) {
- return 1;
- } else if (*p < *q) {
- return -1;
- }
- }
- }
- return 0;
- }
- int main() {
- char a[100], b[100];
- printf("请输入两个字符串:\n");
- scanf("%s %s", a, b);
- int result = strcmp(a, b);
- if (result > 0) {
- printf("%s > %s\n", a, b);
- } else if (result < 0) {
- printf("%s < %s\n", a, b);
- } else {
- printf("%s = %s\n", a, b);
- }
- return 0;
- }
复制代码
这段代码修复了语法错误,并实现了一个简单的字符串比较函数`strcmp`,通过调用`strcmp`函数来比较两个输入的字符串,输出结果是两个字符串的关系(大于、小于或等于)。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|