关于C语言初学者的疑惑

来源:百度知道 编辑:UC知道 时间:2024/06/05 05:04:12
我学习中编了这两个程序,有点问题请教下高手
一个是三角形的面积问题
#include "stdio.h"
main()
{
float a,b,s;
printf("请输入三角形的底和高:\n");
scanf("%f%f",&a,&b);///"%f%f"中间加个“,”和不加运行结果
s=a*b/2;
printf("a=%2.f,b=%2.f,s=%2.f",a,b,s);

}
中间不加可以得到正确的结果,要是加“,”的话,会得出
(我输入2 3)a=2,b=0,s=0
另外一个是比较大小的同样也是加“,”
#include "stdio.h"
int max(int x,int y)
{
int z;
if(x>y) z=x; else z=y;
return(z);
}
main()
{
int a,b,c;
printf("请输入两个数字,用空格隔开。\n");
scanf("%d%d",&a,&b);////%d%d中间加“,”
c=max(a,b);
printf("max=%d",c);
}
这个要是中间加逗号,我输入12 20会显示
12 20
max=4211640
这个是为什么呢?请高手详细说下原因

再C中规定 输入函数标准格式为scanf(格式符,变量地址)
其中的格式符只能输入规定的格式符号如:%f、%d。。。。 如果其中掺杂了其他字符 我们在输入的时候就要按照格式符后面出现的字符原样输入后才能给变量地址正确的赋值。
对于第二个问题来说: 你再两个%d加了个逗号后 正确的输入格式为常量1 逗号“,”常量2 才能得到正确结果 而你输入的是:常量1 空格 常量2 虽然貌似如入正确 但是你输入的常量所付给变量a的值为12 而变量b所得到的是个不确定的值 所以产生了接下来的结果啦

中间要是加上","的话 你是输入的时候应该按照格式输入数字
也就是应该输入2,3 而不应该是2 3这样就不符合格式了。
第二个程序既然要求用空格隔开,你在scanf中就应该写成这样的"%d %d".

不对啊回答的;
scanf和printf是有区别的;
比如说scanf("&d&d",&a,&b);
和printf("&d&d",a,b);
是不一样的。
若是scanf的话输入只能输入:
例子:
10 20
而不能输入10,20
但是若是scanf("&d,&d",&a,&b);
的话就必须:
10,20
这时候用10 20反而错了。
但是printf就不是这样了。
假如a=20;b=30;
则printf("&d&d",a,b);
结果却是2030。
你明白了吧

你输入的时候要按照 scanf 里的格式来输入 比如 加“,”的话 就要输入1,2
没有加“,”的话就不用加了