版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://mp.csdn.net/mdeditor/103202844
————————————————
#scanf()中\n并不是为了题目所要求而用,也不是为了程序员设计时所使用,因为对象在使用该程序代码时下意识会换行,这时你需要使用getchar();来吸取字符而引发下一轮输入或者输出
getchar可以说是为了对象而产生,而设计的。
而scanf中使用换行,紧接着对象也会下意识换行,而本来对象输入一组东西时恰好第一个输入的是字符,这样会导致后来计算的一组结果前面部分出现错乱。而printf语句中你需要自己输入\n程序本身才会换行,否则它不会换行,所以printf语句不会自动换行,这好比了scanf语句有自动换行的魔力了。所以作为程序员的你可以有两种方式例如……。
#同志们可以看看以下的题目两种不一样的解,希望对你们有帮助。
题目链接
————专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。
下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。
输入格式:
输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。
输出格式:
对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。
输入样例:
2
M 1.75
F 1.8
输出样例:
1.61
1.96
————下面请看代码:
#include<stdio.h>
int main()
{
int i,n;
float t[10];// 记录输入人的身高
double g;
char s[10];// 记录输入人的性别
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
getchar();
scanf("%c%f",&s[i],&t[i]);//将输入的人的性别和身高存于预先数组
}
for(i=0;i<n;i++)
{
g=0;
if(s[i]=='M')
{
g=t[i]/1.09;//'M'即为男性,得到女性最佳身高
}
else
{
g=t[i]*1.09;//对立的:'F'即为女性,得到男性最佳身高
}
printf("%.2lf\n",g); //输出对应身高
}
return 0;
}
————再看输入样例运行结果:
如果我将上述的for结构语句中scanf语句改成这样:
scanf("%c %f",&s[i],&t[i]);
再看其运行结果:
##以上答案错误,是因为我占位符中%c和%d隔了一个空格,那么存字符的数组会在前面多存了一个\n,以致输出的结果都为 'F’对应的男性最佳身高
————还可以有以下做法:
Look!!!其他程序员做法链接
其scanf于printf主体语句如此:
scanf("\n%c%lf",&c,&h);
s=0;
if(c=='M')
{
s=h/1.09;
}
else
{
s=h*1.09;
}
printf("%.2lf\n",s);
————————————————
版权声明:本文为CSDN博主「horour」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/horour/article/details/81773541
————还可以这样呢!:
同志们再耐心看完
其scanf与printf主体语句如此:
scanf("%d",&n);
getchar();
while(n--){
scanf("%c%lf",&c,&m);
if(c == 'F')
printf("%.2lf\n",m * 1.09);
else
printf("%.2lf\n",m / 1.09);
getchar();
————————————————
版权声明:本文为CSDN博主「SlienceAccept」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37708702/article/details/89197383