scanf和printf什么时候用&?
intn,i,h,m;chara[10];scanf("%d",&n);for(i=0;i<n;i++){scanf("%s%d%d",&a[i],&h,&m);if((...
int n,i,h,m;
char a[10];
scanf("%d",&n);
for
(i=0;i<n;i++)
{
scanf("%s%d%d",&a[i],&h,&m);
if((h<15||h>20)||(m<50||m>70))
printf("%s\n",&a[i]);
}
为什么这个程序里printf也要加&才能运行成功啊
要不然就是scanf不加&才能运行成功 展开
char a[10];
scanf("%d",&n);
for
(i=0;i<n;i++)
{
scanf("%s%d%d",&a[i],&h,&m);
if((h<15||h>20)||(m<50||m>70))
printf("%s\n",&a[i]);
}
为什么这个程序里printf也要加&才能运行成功啊
要不然就是scanf不加&才能运行成功 展开
6个回答
展开全部
这几个 & 是求地址运算符号。
普通变量,例如 int, float, double , 语句中的变量名,表示 变量的值,加上 & 才是地址。
字符串变量不同于上述普通变量,它用 char 数组表示,例如 char a[10]。 变量的名字 a , 表示的是字符串的首地址。
输入语句scanf 是有格式输入,输入参数都要用 变量的地址。
例如:scanf("%s%d%d",a, &h, &m); 这里的a 是 char a[10] 的首地址,等于 首字符 a[0] 的 地址 &a[0].
输入语句printf() 是有格式输出,普通变量,输出参数都要用 变量的值表示,字符串输出格式%s, 对应的参数 却是要用 输出字符串的首地址表示。
例如: printf("%s %d %d\n", a, h, m);
你的 printf("%s\n",&a[i]); 这里 &a[i] 意思是 输出字符串的首地址 是 &a[i], 也就是从 char a[10] 中 第 i 个 字符 开始输出。
例如: char a[10]="ABCDEFG";
printf("%s\n",a); 输出ABCDEFG
i=3; printf("%s\n", &a[i]); 输出 DEFG
printf("%c\n", a[i]); 输出 D
i=4; printf("%s\n", &a[i]); 输出 EFG
printf("%c\n", a[i]); 输出 E
注意,记住 与 %s 格式 有关的输入输出 比较 特殊,输入输出都要用字符串地址。
若是 %c 格式,那么 就要按普通 字符变量 对待。 不要混淆 “字符串”与 “字符”的概念。
普通变量,例如 int, float, double , 语句中的变量名,表示 变量的值,加上 & 才是地址。
字符串变量不同于上述普通变量,它用 char 数组表示,例如 char a[10]。 变量的名字 a , 表示的是字符串的首地址。
输入语句scanf 是有格式输入,输入参数都要用 变量的地址。
例如:scanf("%s%d%d",a, &h, &m); 这里的a 是 char a[10] 的首地址,等于 首字符 a[0] 的 地址 &a[0].
输入语句printf() 是有格式输出,普通变量,输出参数都要用 变量的值表示,字符串输出格式%s, 对应的参数 却是要用 输出字符串的首地址表示。
例如: printf("%s %d %d\n", a, h, m);
你的 printf("%s\n",&a[i]); 这里 &a[i] 意思是 输出字符串的首地址 是 &a[i], 也就是从 char a[10] 中 第 i 个 字符 开始输出。
例如: char a[10]="ABCDEFG";
printf("%s\n",a); 输出ABCDEFG
i=3; printf("%s\n", &a[i]); 输出 DEFG
printf("%c\n", a[i]); 输出 D
i=4; printf("%s\n", &a[i]); 输出 EFG
printf("%c\n", a[i]); 输出 E
注意,记住 与 %s 格式 有关的输入输出 比较 特殊,输入输出都要用字符串地址。
若是 %c 格式,那么 就要按普通 字符变量 对待。 不要混淆 “字符串”与 “字符”的概念。
更多追问追答
追问
“注意,记住 与 %s 格式 有关的输入输出 比较 特殊,输入输出都要用字符串地址。”
这句话是在一维数组中适用吗?我看了这一题的另一个答案,是用二维数组做的,他最后的printf里直接是a[i]没有加&。
刚开始学,不太懂,麻烦了
“注意,记住 与 %s 格式 有关的输入输出 比较 特殊,输入输出都要用字符串地址。”
这句话是在一维数组中适用吗?我看了这一题的另一个答案,是用二维数组做的,他最后的printf里直接是a[i]没有加&。
刚开始学,不太懂,麻烦了
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲、导入文档内容”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表...
点击进入详情页
本回答由AiPPT提供
展开全部
数字和字符连续的变量,scanf输入变量时,必须加&,因为它需要变量的地址。printf输出时不需要加&,因为它不需要地址。
字符串变量,输入和输出时,都需要地址。所以都应该需要&,但因为数组名就代表地址,所以,只写变量名时,就不需要加&了,但如果写元素名,就要加&了。
字符串变量,输入和输出时,都需要地址。所以都应该需要&,但因为数组名就代表地址,所以,只写变量名时,就不需要加&了,但如果写元素名,就要加&了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在scanf函数中读取整数、浮点数、单个字符时,相应的变量前要使用取地址符&。在scanf函数中使用%s读取字符串时,不用&的。在printf中,全部不使用&的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在输出的时候用&这个符号,scanf用户提示用户输入,printf用于计算后输出信息。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询