main() { char str[]="xyz",*ps=str; while(*ps) ps++; for(ps--;ps-str>=0;ps--) puts(ps);}
时间: 2023-12-09 21:03:44 浏览: 93
这段代码的功能是倒序输出字符串"xyz"。但是存在一些问题,因为puts()函数要求的参数是字符串指针,而ps是一个字符指针,所以这段代码会输出一些奇怪的字符。正确的代码应该是:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "xyz";
char *ps = str + strlen(str) - 1;
while (ps >= str) {
putchar(*ps);
ps--;
}
return 0;
}
```
这样就可以正确地输出"zyx"了。
相关问题
main() { char str[]="xyz",*ps=str; while(*ps) ps++; for(ps--;ps-str>=0;ps--) puts(ps);}过程
这段代码的过程如下:
1. 定义一个字符数组str并初始化为"xyz",定义一个字符指针ps并指向str的首地址。
```
char str[] = "xyz";
char *ps = str;
```
2. 使用while循环,从ps指向的地址开始不断往后遍历,直到找到字符串的结尾('\0')。
```
while (*ps) {
ps++;
}
```
3. 使用for循环,从字符串的结尾('\0')开始往前遍历,直到到达字符串的开头(str指向的地址)。
```
for (ps--; ps - str >= 0; ps--) {
// ...
}
```
4. 在for循环中,使用puts()函数输出当前指向的字符,由于ps是一个字符指针,所以输出的是该字符后面的所有字符,直到遇到'\0'为止。
5. 重复步骤4,直到遍历完整个字符串。
编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。 #include<stdio.h> #include<string.h> int main() { char str[100]; char *p; p=&str; scanf("%s",&str); while(*p!='\0') { /******************************* 请在该部分补充缺少的代码 ********************************/ } return 0; } 输入 一个字符串,长度不超过80个字符。 输出 删掉非英文字母后的字符串。 输入输出样例 样例输入 #1 abc123+xyz.5 样例输出 #1 abcxyz
好的,这是一个删除字符串中非英文字母的程序,下面是补充完整的代码:
```
#include <stdio.h>
#include <string.h>
#include <ctype.h> // 头文件ctype.h中包含了isalpha函数
int main()
{
char str[100];
char *p;
p = str;
scanf("%s", &str);
while (*p != '\0')
{
if (isalpha(*p)) // 判断*p是否为英文字母
{
printf("%c", *p); // 输出*p
}
p++; // 指针p向后移动一个字符
}
return 0;
}
```
程序中使用了C标准库中的ctype.h头文件中的isalpha函数,该函数用于判断一个字符是否为英文字母。如果是英文字母就输出,否则就跳过不输出。