若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是______。(1分) p=&a;scanf("%ld",p); *p=&a;scanf("%ld",p); scanf("%ld",p=&a); scanf("%ld",&a)
时间: 2023-10-19 09:32:50 浏览: 147
05-专业课-C 语言程序设计.pdf
不能通过 `scanf` 语句正确给输入项读入数据的程序段是第二个程序段 `*p=&a;scanf("%ld",p);`。
原因是:
- `p` 是一个指向 `long` 类型变量的指针,指向的是变量 `a` 的地址。
- 在第二个程序段中,`*p = &a;` 这条语句是错误的,因为 `*p` 表示 `p` 指向的内存中的值,是一个 `long` 类型的值,而 `&a` 是一个指向 `a` 变量地址的指针,类型为 `long *`,两者类型不匹配。
- 因此,第二个程序段会编译出错,不能正确给 `a` 变量赋值。正确的语句应该是 `scanf("%ld", p);`,该语句可以从标准输入读取一个 `long` 类型的值,并将其存储到 `a` 变量的地址中。
阅读全文