2、已知:floatx,*y=&a;则下列函数调用错误的是_ A)scanf("%f",&x); B)scanf("%f",y); C)printf("%f",x); D)printf("%f",y); 答案:D为什么
时间: 2024-01-08 19:21:41 浏览: 316
根据引用[1]中的答案,下列函数调用错误的是D)printf("%f",y)。因为y是一个指向float类型变量的指针,而printf函数中的"%f"格式化符号需要一个float类型的变量作为参数,所以这个函数调用是错误的。
根据引用中的答案,以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是scanf("%d",&a)。这是因为变量a是一个float类型的变量,而scanf函数中的"%d"格式化符号是用来读取整数的,所以这个方法是错误的。
所以,根据已知条件,下列函数调用错误的是D)printf("%f",y)。
相关问题
若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是______。(1分) p=&a;scanf("%ld",p); *p=&a;scanf("%ld",p); scanf("%ld",p=&a); scanf("%ld",&a)
不能通过 `scanf` 语句正确给输入项读入数据的程序段是第二个程序段 `*p=&a;scanf("%ld",p);`。
原因是:
- `p` 是一个指向 `long` 类型变量的指针,指向的是变量 `a` 的地址。
- 在第二个程序段中,`*p = &a;` 这条语句是错误的,因为 `*p` 表示 `p` 指向的内存中的值,是一个 `long` 类型的值,而 `&a` 是一个指向 `a` 变量地址的指针,类型为 `long *`,两者类型不匹配。
- 因此,第二个程序段会编译出错,不能正确给 `a` 变量赋值。正确的语句应该是 `scanf("%ld", p);`,该语句可以从标准输入读取一个 `long` 类型的值,并将其存储到 `a` 变量的地址中。
以下程序功能为通过函数调用实现两个变量值交换,填空完成程序。#include<stdio.h> void swap(int *pa,int *pb) int t; t=*pa;*pa=*pb; /***************FILL****************/ 1_ ; void main() int a,b,*p1=&a,*p2=&b; p1=&a; /***************FILL****************/ 2_; scanf("%d%d",&a,&b); printf("A=%d,B=%d\n",a, b) ; swap(pl,p2); printf("A=%d,B=%d\n",a,b); }
以下是正确的程序代码:
```
#include<stdio.h>
void swap(int *pa,int *pb) {
int t;
t = *pa;
*pa = *pb;
*pb = t;
}
void main() {
int a, b, *p1 = &a, *p2 = &b;
p1 = &a;
p2 = &b;
scanf("%d %d", &a, &b);
printf("A=%d,B=%d\n", a, b);
swap(p1, p2);
printf("A=%d,B=%d\n", a, b);
}
```
注:程序中填空部分应该为 `*pb=t;`。