当前位置:编程学习 > 汇编语言 >>

用c语言或汇编语言编写一个:将数组按由小到大的顺序排列的程序。要求1:数组元素的个数由键盘输入。

范围5-10个。2:数组元素由键盘输入。3:显示排序后的数组。4:附加(将排序后的数组存到文本文件中,格式自定)。很急!!!!!
追问:太感谢拉老师出的原题,我也不清楚。第四个选作。每个元素输入。谢谢
答案:忘了有什么文件函数,搞得晚了。。。。
#include<stdio.h>

int main(void)
{
	int iNum, i, j, iArray[10], iTemp;
	FILE *fp;

	printf("输入数组个数:");
	scanf("%d", &iNum);
	for(i = 0; i < iNum; ++i)
	{
		scanf("%d", (iArray + i));
	}
	//排序
	for(i = 1; i < iNum; ++i)
	{
		for(j = 0; j < i - j; ++j)
		{
			if(iArray[j] > iArray[j + 1])
			{
				iTemp = iArray[j];
				iArray[j] = iArray[j + 1];
				iArray[j + 1] = iTemp;
			}
		}
	}
	fp = fopen("C:\\1.txt", "wb+");
	for(i = 0; i < iNum; ++i)
	{//写入文件,有个可以一次写入的函数,但我忘了
		fprintf(fp, "%d ", iArray[i]);
	}
	fclose(fp);
	return 0;
}
其他:元素个数键盘输入么?还是每个元素键盘输入,如果是个数那就要动态的了,而且你的第四个条件,视乎文件存的没格式的 #include <stdio.h>
#include <stdlib.h>

void Order(int *num,int n) //bubble sort
{
	int s=0;
	int tag = false ; // 设置是否需要继续冒泡的标志位
	for ( int i = 0 ; i < n ; i++)
	{
		for ( int j = 0 ; j < n - i - 1 ; j++)
		{
			if ( num[j] > num[j+1])
			{
				tag = true ;
				int temp = num[j] ;
				num[j] = num[j+1] ;
				num[j+1] = temp ;
			}
		}
		if ( !tag )
			break ;
	}

}


int main()
{
	printf("输入数据:");
	int a[10];
	for (int i =0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	
	Order(a,10);

	printf("\n");

	FILE *fp; 
	if((fp=fopen("d:\\test.txt","w"))==NULL)  /*以只写方式打开文件*/
	{
		printf("cannot open file!\n");
		exit(0);
	}


	for (int j = 0;j<10;j++)
	{
		fprintf(fp,"%d ",a[j]);
		printf("%d",a[j]);
		printf(" ");
	}
	printf("\n");
	fclose(fp);

	return 0;
		
} 

上一个:汇编问题,求高手指点
下一个:简单汇编

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,