没p1和p2是指向同一个字符串的指針変量,C 为字符变量,则以下不能正确执行的赋值语 句是 A c=*p1+*p2; (B 02=c; (C) p1=p2 (D) c=p14*92)
时间: 2023-12-18 22:04:45 浏览: 40
不能正确执行的赋值语句是 A c=*p1+*p2;。
因为 *p1 和 *p2 是指向同一个字符串的指针变量,所以在执行 c=*p1+*p2 时,它们指向的字符串中的两个字符会相加,结果赋值给 c。但是由于 p1 和 p2 指向同一个字符串,所以它们指向的字符是相同的,因此 c 的值将是字符的 ASCII 码相加的结果,而不是两个字符的值相加的结果。
相关问题
输入一个字符串a,将字符串a复制给字符串b,并输出字符串b。要求用指针的进行赋值操作。
可以使用指针来实现字符串的复制和输出操作,具体步骤如下:
1. 定义两个字符指针变量,分别指向字符串a和字符串b。
2. 使用循环结构,将字符串a中的每个字符依次赋值给字符串b中对应的位置。
3. 最后输出字符串b即可。
示例代码如下:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char a[100], b[100];
char *p1, *p2;
int i;
printf("请输入字符串a:");
scanf("%s", a);
p1 = a;
p2 = b;
for (i = ; i < strlen(a); i++) {
*(p2 + i) = *(p1 + i);
}
*(p2 + i) = '\'; // 在字符串末尾添加结束符
printf("复制后的字符串b为:%s\n", b);
return ;
}
```
请输出一个利用指针比较字符串的s1
以下是一个利用指针比较两个字符串s1和s2的示例程序:
```c++
#include <iostream>
using namespace std;
int main() {
char s1[] = "Hello, world!";
char s2[] = "hello, world!";
char* p1 = s1;
char* p2 = s2;
while (*p1 != '\0' && *p2 != '\0') {
if (*p1 != *p2) {
cout << "Strings are not equal" << endl;
return 0;
}
p1++;
p2++;
}
if (*p1 == '\0' && *p2 == '\0') {
cout << "Strings are equal" << endl;
} else {
cout << "Strings are not equal" << endl;
}
return 0;
}
```
该程序将两个字符串s1和s2赋值给指向字符数组的指针p1和p2。然后,进入一个while循环,只要p1和p2指向的字符都不为空,就比较它们指向的字符是否相同。如果相同,就将指针向后移动一个位置,继续比较下一个字符。如果不相同,就说明两个字符串不相等,跳出循环并输出结果。最后,如果两个指针都指向字符串的末尾(即字符'\0'),则说明两个字符串相等,输出结果。