float实数排序
10个float型实数存放在一个数组中,从小到大排序后输出。用“%f”输入数组元素,用格式符“%g ”输出数组元素,注意%g后有一个空格。
%g格式符用来输出实数,输出时从%e或%f中,选择一个合理的格式输出,不输出没有意义的0。
输入示例:1 3 5 7 9 6 8 2 4 -3.3
输出:-3.3 1 2 3 4 5 6 7 8 9
#include<stdio.h>
#define N 10
void sort(float a[],int n)//用来排序
{
int i,j;
float t;
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
if(a[i]>a[i+1])
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
int main()
{
float a[N];
int i;
for(i=0;i<N;i++)
scanf("%f",&a[i]);//输入数组
sort(a,N);//看来只需要数组名
for(i=0;i<N;i++)//输出排序后的数组
printf("%g ",a[i]);//用%g格式输出
printf("\n");
return 0;
}
debug:
1.没有看懂题目中的%g是什么,这个是因为知识点的不熟悉,之前没有碰到过类似的。
在输出的时候我们使用%g会有什么样的奇特用法呢,比如我们想要输出一个12.3,但是如果你选择使用%f作为格式符,就会输出12.300000。但是很多时候我们只想要打印出12.3,这个时候可以选择%g进行格式化,输出结果就会变成12.3。它将后面无用的0全部舍去了,可以在很多时候满足题目的要求。
————————————————
版权声明:本文为CSDN博主「桃花er」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45930241/article/details/108587822
输出格式们
%d整型输出,
%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
scanf(控制字符,地址列表) 格式字符的含义同printf函数,地址列表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。如scanf("%d%c%s",&a,&b,str);
2.记住排序的时候要-1
3.定义函数的时候要记得加上关键字定义变量类型!(t的类型是float!一定要想清楚)