
标准C是不支持你这种变量定义动态数组的
struct item all[N]; 这达不到你想要的效果!需要定义成指针,然后malloc
int i,j;
printf("请输入%d组信息:\n",N);
struct item all ;
int i,j;
printf("请输入%d组信息:\n",N);
all=(struct item )malloc(sizeof(struct item)N ) ;
以下代码不变,文件头加上库函数头文件 #include <stdlibh>
你说matlab吗?
里面有个参数,可以用:
sort(a,'ascend')%升序
sort(a,'descend')%降序;
a为向量或数组
也可以这样:先对a求相反数,成-a,然后升序,然后再求相反数(这只是很简单的数学技巧!在编程时相当有用!)
如果你是C语言,我记得没有函数你可以自己写用一些排序算法实现
你好,
第一个参数是要排序的缓冲区,比如一个数组,第二个参数给出了数组的大小,第三个参数给出了数组中每个元素以字节为单位的大小,最后一个是一个函数,这个函数返回值是大于零的数或者返回零。如果compare函数的第一个参数所指数据大于第二个参数所指数据,则返回大于零的值,如果第一个参数所指数据等于第二个参数所指数据,则返回零。小于则返回负数。
c语言没有模板,针对不同类型的数组排序,需要不同的compare函数,下面是两个例子:
对int型数组排序:
int num[100];
int cmp(const void a,const void b)
{
return (int)a-(int)b;
}
qsort(num,100,sizeof(num[0]),cmp);
对char类型数组排序(同int类型)
char word[100];
int cmp( const void a , const void b )
{
return (char )a - (int )b;
}
qsort(word,100,sizeof(word[0]),cmp);
随机数
文件写入
排序
这三个模块即可
大体实现 如下
#include <stdioh>
#include <timeh>
#include <stdlibh>
#define N 10000
void sort(int a)
{
}
main()
{
int a[N],i;
FILE fp;
srand(time(NULL));
for(i=0;i<N;i++)
a[i]=rand()%10000+1;//随机数
sort(a);//排序
fp=fopen("atxt","w");
for(i=0;i<N;i++)
fprintf(fp,"%4d",a[i]);
fclose(fp);
}
//要求任意输入10个数,然后按从小到大顺序输出
#include<stdioh>
int main()
{
int a[10];
int i,j;
int temp;
printf("请输入10个整数:");
for(i=0;i<10;i++)
{
scanf("%d",&a<i>);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("排列后顺序为:");
for(i=0;i<10;i++)
{
printf("%d",a<i>);
}
printf("\n");
return 0;
}
扩展资料:
①printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。
格式输出,它是c语言中产生格式化输出的函数(在stdioh中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。
要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。
简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。
②printf函数是一个标准库函数,它的函数原型在头文件“stdioh”中。但作为一个特例,不要求在使用printf函数之前必须包含stdioh文件。
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。
#include <stdioh>
#define N 20
void input(int b[], int q);
void print(int b[], int q);
void sort(int b[], int q);
void slect_move_input(int b[], int q, int x1, int y1);
main()
{
int a[N], n, x, y, count=1;
printf("输入数组的长度:");
scanf("%d", &n);
input(a, n);
print(a, n);
printf("\n");
sort(a, n);
while(count>0)
{
printf("\n输入要查找的数:");
scanf("%d", &x);
printf("\n输入你想插入的数:");
scanf("%d", &y);
slect_move_input(a, n, x, y);
printf("\n输入一个大于零的整数继续\n否则输入一个小于零的整数:");
scanf("%d", &count);
}
}
void input(int b[], int q)
{
int i;
for(i=0; i<q; i++)
scanf("%d", &b[i]);
}
void print(int b[], int q)
{
int i;
for(i=0; i<q; i++)
printf("%d\t", b[i]);
}
void sort(int b[], int q)
{
int i, j, t;
for(i=1; i<q; i++)
{
for(j=0; j<q-i; j++)
{
if(b[j]>b[j+1])
{
t=b[j]; b[j]=b[j+1]; b[j+1]=t;
}
}
}
print(b, q);
}
void slect_move_input(int b[], int q, int x1, int y1)
{
int i, d=1;
for(i=0; i<q; i++)
{
if(b[i]==x1)
{
b[i]=y1;
d=0;
}
}
if(d) printf("没有你要查找的数!");
else sort(b, q);
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)