gpt4 book ai didi

c - printf() 和 scanf() float* 变量有多少种方法?

转载 作者:行者123 更新时间:2023-11-30 20:44:15 24 4
gpt4 key购买 nike

我正在准备毕业考试,我有一些关于 C 编程语言的问题。我将结合其中两个我有答案但我不太理解的问题。第一个问题是选择正确的表达式来输出数组的第 i 个元素的值,这些是可能的答案:(请注意,两个问题的代码是相同的)

  1. printf("%f",B[i]);
  2. printf("%f",&B[i]);
  3. printf("%f",B+i);
  4. printf("%p",*(B+i));
  5. printf("%f",*(B+i));

第二个问题是选择输入数组第i个元素的值的正确表达式

  1. scanf("%f", B[i]);
  2. scanf("%f", B+i);
  3. scanf("%p", B+i);
  4. scanf("%f", &B[i]);
  5. scanf("%f", *(B+i));

我尝试编译并运行一个程序来模拟这些问题。 scanf 部分适用于答案 2-5,并且所有 printf 都打印出一个零,除了第四个th(当然在输入)。

float *B;
int n;
B=calloc(n,sizeof(float));

最佳答案

您对哪些答案是正确的理解存在缺陷。

打印 float 类型的值使用printf ,您需要使用%f格式说明符并传递 float 类型的值。读取 float 类型的值与 scanf ,您还可以使用 %f格式说明符,但传递 float * 类型的值.

关于数组索引,符号 A[N]完全相当于 *(A + N)并且具有数组元素的类型,并且 &A[N]完全相当于 A + N并且具有指向数组元素的类型指针。

基于此,我们有以下内容:

printf("%f",B[i]);    // Correct
printf("%f",&B[i]); // Incorrect, passing a float *, expected float
printf("%f",B+i); // Incorrect, passing a float *, expected float (same as prior)
printf("%p",*(B+i)); // Incorrect, %p is used to print a pointer (expects a void *)
printf("%f",*(B+i)); // Correct

scanf("%f", B[i]); // Incorrect, passing a float, expected float *
scanf("%f", B+i); // Correct
scanf("%p", B+i); // Incorrect, %p is used to read a pointer (expects a void *)
scanf("%f", &B[i]); // Correct
scanf("%f", *(B+i)); // Incorrect, passing a float, expected a float *

关于c - printf() 和 scanf() float* 变量有多少种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56445486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com