#include<stdio.h> void print_rev_str(char*s) { char *p=s; while(*p!='\0') p++; p--; while(p>=s) printf("%c",*p); p--; } int main() { printf("我是光电12203项琳清\n"); print_rev_str("CJLU"); return 0; }错在哪
时间: 2024-01-21 12:04:09 浏览: 66
#include<stdio.h>
这段代码中的函数 print_rev_str() 存在几个问题:
1. 在第二个 while 循环中,p-- 操作应该放在 printf() 函数之后,否则只会输出字符串的最后一个字符。
2. 函数 print_rev_str() 没有返回值,应该使用 void 修饰符来声明函数类型。
3. 函数 print_rev_str() 中的指针 p 可以直接在 while 循环中进行递减运算,不需要先进行递增再递减。
下面是修改后的代码:
```
#include <stdio.h>
void print_rev_str(char* s) {
char* p = s;
while (*p != '\0') {
p++;
}
p--;
while (p >= s) {
printf("%c", *p);
p--;
}
}
int main() {
printf("我是光电12203项琳清\n");
print_rev_str("CJLU");
return 0;
}
```
注意,这个程序输出的结果为“ULJC”,因为函数 print_rev_str() 是将输入的字符串进行反转输出的。
阅读全文