#include <stdio.h> #include <string.h> int main() { char *s[4]={"ABCD","12","EFGH","34"}; int i=1; while(*s[1]!='\0') { printf("%s\n",s[i]+strlen(s[1])-1); s[1]++; i++; } return 0; }
时间: 2024-03-29 09:42:03 浏览: 19
这段代码的输出结果为:
2
23
34
代码的解释如下:
1. 定义了一个字符串指针数组s,其中包含4个字符串常量。
2. 定义了一个整型变量i,初始值为1。
3. 进入while循环,判断字符串s[1]是否为空,即判断字符串"12"是否结束。
4. 在循环中,先打印出s[i]+strlen(s[1])-1的结果,即字符串s[i]中从字符串s[1]结尾开始的字符。第一次循环时,i为1,s[i]为字符串"12",strlen(s[1])为2,所以s[i]+strlen(s[1])-1指向的是"2"这个字符。第二次循环时,i为2,s[i]为字符串"EFGH",strlen(s[1])为2,所以s[i]+strlen(s[1])-1指向的是"G"这个字符。第三次循环时,i为3,s[i]为字符串"34",strlen(s[1])为2,所以s[i]+strlen(s[1])-1指向的是"4"这个字符。
5. 接着将字符串s[1]向后移动一位,即指向字符串"2"的下一个字符,i加1。
6. 循环结束后,输出结果为"2"、"23"和"34"。
总的来说,这段代码的作用是从字符串数组中取出指定位置的字符,并输出。
相关问题
以下程序输出ABCD,请填空。 #include <stdio.h> #include <string.h> int main(){ char a[10]="ABCD",b[10]={0}; strcpy(____空白8_______); puts(b); }
可以填写为:`b, a`。
完整程序如下:
```
#include <stdio.h>
#include <string.h>
int main() {
char a[10] = "ABCD", b[10] = {0};
strcpy(b, a);
puts(b);
return 0;
}
```
输出结果为:`ABCD`
帮我看看下面这段C语言程序当我输入“ABCD”是,输出的结果不是“ABCDDCBA” #include <conio.h> #include <stdio.h> #include <string.h> void fun(char *str,char *t) {int i,d; d=*str for(i=0;i<d;i++) *(t+i)=*(str+i); for(i=0;i<d;i++) *(t+d+i)=*(str+d-1-i); *(t+2*d)='\0'; } main(){ char s[100],t[100]; printf("\nPlease enter string S:"); scanf("%s",s); fun(s,t); printf("\nThe result is: %s\n",t); }
在这段程序中,变量 d 的值应该是字符串长度,但是却没有进行字符串长度的计算,而是直接将字符串第一个字符的 ASCII 码作为长度,所以当输入的字符串的第一个字符的 ASCII 码不是字符串长度时,程序就会出现错误。
例如,当输入字符串为“ABCD”时,程序会将字符 'A' 的 ASCII 码 65 作为字符串长度,因此只会复制字符串的前 65 个字符,然后程序会继续执行,将字符串的后 65 个字符再次复制到新的字符串中,这就导致了输出结果不是“ABCDDCBA”。
要解决这个问题,可以使用库函数 `strlen()` 来计算字符串的长度,将其作为参数传递给函数 `fun()`。修改后的程序如下:
```c
#include <conio.h>
#include <stdio.h>
#include <string.h>
void fun(char *str, char *t) {
int i, d;
d = strlen(str);
for (i = 0; i < d; i++)
*(t + i) = *(str + i);
for (i = 0; i < d; i++)
*(t + d + i) = *(str + d - 1 - i);
*(t + 2 * d) = '\0';
}
int main() {
char s[100], t[100];
printf("\nPlease enter string S:");
scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
return 0;
}
```
这样,无论输入的字符串是什么,程序都能正确输出“ABCDDCBA”。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)