void change(int *sum) { int i,a; char b,c; while(a==0) { printf("\n请输入你想更改的人的姓名:"); scanf("%s",&c); for(i=0;i<N;i++) { if(c==person[i].name) break; } for(i;i<=i+1;i++) { printf("\n请分别输入更改后姓名、昵称、电话号码、邮箱、家庭地址(用英文逗号隔开):\n"); scanf("%s %s %s %s %s",person[i].name,person[i].pet,person[i].phone,person[i].email,person[i].address); } printf("\n是否继续更改:"); scanf("%c",b); if(b="否") a==1; } }
时间: 2023-06-25 07:04:07 浏览: 32
这段代码存在一些问题,我来给你分析一下:
1. while 循环中的 a 变量没有初始化,可能会导致不可预期的结果。
2. scanf("%s",&c) 语句中,c 变量为字符型,但是 %s 格式化符号表示字符串,应该使用 %c 格式化符号。
3. 在 for 循环中,如果输入的姓名不在数组 person 中,i 的值会超出数组范围,可能会导致程序崩溃。
4. for 循环中的第二个条件 i<=i+1 没有意义,应该直接写成 i++。
5. 在 scanf("%c",b) 语句中,应该使用 &b 而不是 b,因为 b 是一个字符型变量的地址。
6. 在 if(b="否") 语句中,应该使用 == 而不是 =,因为 == 表示相等比较,= 表示赋值操作。
7. a==1 应该改为 a=1。
综上所述,这段代码需要进行一些修正才能正确运行。
相关问题
int a = 10; char *p = NULL: p = &a; printf(p);输出是什么
这段代码会出现编译警告,因为 printf 函数中使用了 char * 类型的指针 p,但是传入的参数是 int 类型的变量 a 的地址,这会导致类型不匹配。
即使忽略编译警告,程序也会出现运行时错误,因为 printf 函数在执行时会按照字符类型解析传入的参数,但是传入的参数是一个整型变量的地址,因此会导致输出结果不确定,甚至会导致程序崩溃。
因此,这段代码的输出结果是不确定的,应该避免这种类型不匹配的操作。如果想要输出变量 a 的值,应该使用以下代码:
```
int a = 10;
printf("变量 a 的值为:%d\n", a);
```
或者使用以下代码将变量 a 的地址强制转换为 void* 类型指针,然后输出该指针的值(注意不要使用 %s 或者 %c 格式化字符):
```
int a = 10;
void *p = (void *)&a;
printf("变量 a 的地址为:%p\n", p);
```
#include<stdio.h> int sum(int a,int b); int swap(int a,int b); int main(void) { int a,b,c; int (*p)(int,int); scanf("%d,%d",&a,&b); p=sum; c=(*p)(a,b); p=swap; (*p)(a,b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); return 0; } int sum(int a,int b) { return a + b; } void swap(int*a,int *b) { int t =*a; *a=*b; *b=t }这串代码怎么修改
这段代码有一处错误,`swap`函数的参数应该是指针类型,而不是整型。修改后的代码如下:
```
#include <stdio.h>
int sum(int a, int b);
void swap(int *a, int *b);
int main(void) {
int a, b, c;
int (*p)(int, int);
scanf("%d,%d", &a, &b);
p = sum;
c = (*p)(a, b);
p = swap;
(*p)(&a, &b);
printf("sum=%d\n", c);
printf("a=%d,b=%d\n", a, b);
return 0;
}
int sum(int a, int b) {
return a + b;
}
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
```
修改后的代码中,我们将`swap`函数的参数类型改为了指针类型,并在调用`swap`函数时传递了`a`和`b`的地址。