代码没有问题,
不过你的输入没按照你自己scanf所设定的格式来
scanf("%d,%d,%d",&a,&b,&c);
这么写的话,你应该这么输入:
1,7,8(回车)
或者
2,5,3(回车)
别忘了逗号,也别忘了将3个数都输完再回车
如果这么写,
scanf("%d%d%d",&a,&b,&c);
就可以这么输入:
2(回车)
3(回车)
1(回车)
扩展资料
C语言编写3个数比较大小其他代码样例:
# include <stdioh> //头文件
int max(int x,int y,int z); //声明子函数
void main()//主函数
{
int a,b,c,d;//定义变量名
printf("shuru a,b,c"); //打印出shuru a,b,c
scanf("%d,%d,%d",&a,&b,&c); //录入数据
d=max(a,b,c);//调用子函数
printf("max = %d\n",d);
}
int max(int x,int y,int z)//子函数体,比较大小返回最大值
{
int m,int n;
if(x>y) m = x;
else m = y;
if(m>z) n = m;
else n = z;
return(n);
}
程序分析:
我们想办法把最小的数放到a上,先将a与b进行比较,r如a>b则将a与b的值进行交换,然后再用a与c比较,如a>c则将a与c的值进行交换,这样a的值最小。
程序源代码如下
#include <stdioh>
main()
{
int a,b,c,t;
printf("Please input 3 numbers:");
scanf("%d%d%d",&a,&b,&c);
if (a>b)
{t=a;a=b;b=t;} /交换a,b的值/
if (a>c)
{t=c;c=a;a=t;} //交换a,c的值
if (b>c)
{t=b;b=c;c=t;} //交换b,c的值
printf("small to big:%d,%d,%d\n",a,b,c);
}
输出结果
首先,我们需要接收键盘的输入,将三个数字存入对应的变量中。为了提高适用性,在这里建议大家使用 double 类型的变量来接收。然后,再进行第一轮比较,以便找出最大数。
比较方法:
1)比较从第一个数开始,先比较第一个数和第二个数的大小,如果第一个数大于第二个数,则将第一个数和第二个数互换;不大于(即等于或小于)则不作处理。
2)然后,再将第二个数和第三个数比较,同样,若大于则将它们互换。
注意:
如果仅是需要找出最大数,只需要进行一轮比较即可;同样的道理,如果只需要找出最小数,也只需要进行一轮比较,只是将上面的大于改成小于即可。
2
如果同时还需要求出最小数和中间数,则还需要进行第二轮比较。我们再从第一个数开始,方法与第一轮一样,只是已经不需要进行第一轮中的第 2)步比较,因为最后的第三个数已经是最大。
第二轮比较方法:
1)比较从第一个数开始,先比较第一个和第二个数的大小,如果第一个数大于第二个数,则将第一个数和第二个数互换。
这样,就分别得到了最小数、中间数和最大数。
如何实现
下面,根据上面的思路来编写 C 语言代码。为了让大家理解起来更容易,我这里采用的是思路最简单的编码方法,而不是代码最精简的方法。同时,我也尽量做到为每句关键的代码都添加相应的注释。
首先,包含相应的头文件 <stdioh>,并添加一个 main 函数。
随后接收输入的三个数。在此需要注意的是,接收 double 类型的数值时应使用 %lf,而不是 %f。
接收输入的数之后,便可以开始进行第一轮比较。注意,第一轮比较共有两步,第一步是将第一个数与第二个数比较,第二步是将第二个数与第三个数比较。
然后,进行第二轮比较。
5
最后,输出结果。注意,输出时使用 %g 参数的作用是打印小数时不输出末尾的 0,这样更加整洁漂亮些。
参考资料
百度经验百度[引用时间2018-5-3]
首先用scanf获取输入的三个double型变量,存入arr数组。然后利用冒泡排序法将数组进行排序。冒泡排序法:遍历数组第0到N-1个元素,依次比较相邻的两个元素,使较大的那个向前移。
示例代码如下:
#include <iostream>using namespace std;int main(){ int a, b, c; cin >> a >> b >> c;//输入三个数 if (a < b)a=b;//如果b比a大,更新a if (a < c)a=c;//如果c比a大,更新a cout << a << endl;//输出最大数a return 0;}
扩展资料:
用C++库函数strcmp(char a,char b)就可以比较出两字符串是否相等,对于字符型数组也是一样的,只要分别带入数组地址就可以了。函数返回0 ,表示相等;大于0表示字符串a大于字符串b;反之小于则串a小于b。
而这里的库函数做的比较是一次比较字符串中相同位置的单个字符的ASCII得出的结果。你也可以自己用C++代码实现这个比较,下面我随便写了一个函数来单个单个的比较,只判断是否相等,返回1(true)为相等,返回0(false)为不相等。
具体代码如下:
char a[]={a,b,c};
char b[]={a,b,c};
bool function(char a[],char b[])
{int n = 0;
if(strlen(a) != strlen(b)) //判断两数组/字符串的长度是否相等,不相等就肯定不会有数组/字符串相等了
return 0;
else
{while(a[n]!='\0' && b[n]!='\0')
{if(a[n] == b[n])
n++;
else
return 0; }}
return 1;}
改成这样:
#include<stdioh>
void main()
{
int max(int x,int y,int z);
int a,b,c,e;
scanf("%d%d%d",&a,&b,&c);
e=max(a,b,c);
printf("max=%d\n",e);
}
int max(int x,int y,int z)
{
int m;
if (x>y) m=x;
else m=y;
if (z>m) m=z;
else return(m);
}
扩展资料:
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
参考资料:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)