用c语言解决,下面程序是用指针法将一个字符串a复制到字符串b中,修改程序实现问题(1)(2)。void main(){char a[]="I am a boy.",b[20], *p1,*p2;int i;p1=a;p2=b;for( ; *p1!=’\0’;p1++,p2++)*p2=*p1;*p2=’\0’;printf("string a is:%s\n",a);printf("string b is:");for(i=0;b[i]!=’\0’;i++)printf("%c",b[i]);}(1)将第一个for循环改为while循环;(2)分别用指针变量p1和p2输出字符串a 和b。
时间: 2023-11-28 14:51:07 浏览: 60
修改后的程序如下:
```
#include <stdio.h>
void main(){
char a[] = "I am a boy.";
char b[20];
char *p1 = a;
char *p2 = b;
int i = 0;
// (1) 将第一个for循环改为while循环
while (*p1 != '\0') {
*p2 = *p1;
p1++;
p2++;
}
*p2 = '\0';
printf("string a is: %s\n", a);
// (2) 分别用指针变量p1和p2输出字符串a和b
printf("string b is: ");
while (*(p2-i) != '\0') {
printf("%c", *(p2-i));
i++;
}
printf("\n");
}
```
修改说明:
1. 在第一个for循环中,每次循环都会对指针p1和p2分别自增1。因此,我们可以将这个for循环改为while循环,在循环体内手动对指针进行自增操作。
2. 使用指针变量p1和p2分别输出字符串a和b,只需要在循环中对指针进行逆序遍历即可。注意,由于在循环中使用了指针自增操作,因此在输出字符串b时需要倒序输出,即从字符串结尾开始输出。
相关问题
用c语言解决问题将字符串a复制为字符串b,用指针方法。
可以使用strcpy()函数来将字符串a复制为字符串b,但是如果使用指针方法,可以自己实现一个函数来完成这个任务。以下是一个使用指针方法复制字符串的示例代码:
```c
#include <stdio.h>
void copy_string(char* dest, char* src) {
while (*src != '\0') {
*dest = *src;
src++;
dest++;
}
*dest = '\0';
}
int main() {
char a[] = "Hello, world!";
char b[20];
copy_string(b, a);
printf("a: %s\n", a);
printf("b: %s\n", b);
return 0;
}
```
这个程序中,copy_string()函数接受两个参数:目标字符串dest和源字符串src。它使用while循环来遍历源字符串中的每个字符,将其复制到目标字符串中,直到遇到字符串结束符'\0'。最后,它在目标字符串的末尾添加一个'\0',以确保目标字符串也是一个有效的C字符串。
在main()函数中,我们声明了一个字符串a和一个空字符串b,然后调用copy_string()函数将a复制到b中。最后,我们使用printf()函数打印出a和b的值,以检查复制是否成功。
下一个C语言程序,要求用指针实现下列程序:输入1个字符串,统计字符串中每个字符出现的次数
好的,以下是用指针实现输入一个字符串并统计每个字符出现次数的C语言程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
int len, i;
int count[128] = {0}; // 用于记录每个字符出现的次数
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
// 遍历字符串中的每个字符
for (i = 0; i < len; i++) {
count[(int)str[i]]++; // 对应字符出现次数加1
}
// 输出每个字符出现的次数
for (i = 0; i < 128; i++) {
if (count[i] > 0) {
printf("%c出现了%d次\n", (char)i, count[i]);
}
}
return 0;
}
```
这个程序中,我们使用一个长度为128的整型数组 `count` 来记录每个字符出现的次数。其中,数组下标对应字符的ASCII码,数组元素存储对应字符出现的次数。程序中先使用 `scanf()` 函数读入一个字符串,然后遍历该字符串中的每个字符,将对应字符出现次数加1。最后,再遍历整个数组 `count`,输出每个字符出现的次数。