用C语言或汇编语言编写一个将数组按由小到大的顺序排序的程序,并在DSP的CCS平台上调试。
#include
#include
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("
");
FILE *fp;
if((fp=fopen("d:\est.txt","w"))==NULL) /*以只写方式打开文件*/
{
printf("cannot open file!
");
exit(0);
}
for (int j = 0;j<10;j++)
{
fprintf(fp,"%d ",a[j]);
printf("%d",a[j]);
printf(" ");
}
printf("
");
fclose(fp);
return 0;
}
源程序以及算法注释如下:
#define _CRT_SECURE_NO_WARNINGS//VS编译环境需要进行宏定义,VC6.0可忽略
#include//输入输出头文件
int main()
{
int number[10], New_number[10];//定义数组的数据类型为整型
int i, j, m, n, k;//定义变量的数据类型为整型
printf("input 10 number:");//文字提示
for (i = 0; i <= 9; i++)//用循环输入数值给数组number并赋给数组New_number
{
scanf("%d", &number[i]);//输入10个整形数字到数组中
New_number[i] = number[i];//数组number元素赋给数组New_number
}
for (n = 0; n <= 8; n++)//要进行(10-1)组比较
for (j = 0; j <= 8 - n; j++)//每组进行(10减第几组)次比较
{
if (number[j] > number[j + 1])//比较大小并将小的赋给前面的数组
{
k = number[j];//将相对较大的元素赋值给中间元素
number[j] = number[j + 1];//将相对较小的元素送达前面一个位置
number[j + 1] = k;//将中间变量元素送给后面一个位置
}
if (New_number[j] < New_number[j + 1])//比较大小并将大的赋给前面的数组
{
k = New_number[j + 1];//将相对较小的元素赋值给中间元素
New_number[j + 1] = New_number[j];//将相对较大的元素送达前面一个位置
New_number[j] = k;//将中间变量元素送给后面一个位置
}
}
printf("min-->max:
");//文字提示
for (m = 0; m <= 9; m++)//依次从小到大输出
printf("%d ", number[m]);//输出元素
printf("
");
printf("max-->min:
");//文字提示
for (m = 0; m <= 9; m++)//依次从大到小输出
printf("%d ", New_number[m]);//输出元素
printf("
");
return 0;
}
程序运行结果如下:
扩展资料:
其他简单实现程序:
#include
int main()
{
int a[10]={0};
int i,j,temp;
for(i = 0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i<10;i++)
{
for(j = 0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
#include<malloc.h>
int main()
{
int num;
printf("请输入元素的个数:");
scanf("%d",&num);
char *p=(char*)malloc(sizeof(char)*num);
for(int i=0;i<num;i++)
{
printf("请输入第%d个元素",i);
fflush(stdin);
scanf("%c",p+i);
}
for(int i=0;i<num;i++)
{
printf("%c ",*(p+i));
}
FILE *fp;
if(!(fp=fopen("a.txt","wb+")))
{
printf("打开文件失败");
return 1;
}
for(int i=0;i<num;i++)
{
fputc(*(p+i),fp);
}
return 0;
}
在ccs上已经调试了,还有不懂的话留邮箱!
#include<stdio.h>
void main()
{
int a[10],i,t,n,s;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
n=0;s=1;
while(n<=9)
{
for(s=n+1;s<=9;s++)
{if(a[s]<a[n]){t=a[s];a[s]=a[n];a[n]=t;}}
n++;
}
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n");}
汇编语言键盘输入10个数据,然后按相同顺序显示
DATA SEGMENT DATA ENDS DATAA SEGMENT DATA1 DB '0123456789'DATAA ENDS STACK1 SEGMENT STACK DW 100 DUP(0)STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK1,DS:DATA,ES:DATAA START:MOV AX,DATA MOV DS,AX MOV AX,DATAA MOV ES,AX XOR AX...
在数据段有一个字节数组,编程统计其中的正数的个数放入W单元,统计负数...
C语言?汇编?下面是汇编代码,好久没写了,可能有错,请自行修正。segment data Array DB dup(100) ; dup语法可能不对 Array_end DB 0 W DB 0 R DB 0 segment code mov ax,OFFSET Array_end; OFFSET 取地址偏移值 sub ax, OFFSET Array mov cx, ax; 得到数组长度 mov si, OFFSET...
汇编语言怎么从键盘输入一个十进制的两位数,并把它存到数组里面?
;=== ; 键盘输入数值数组子程序(数组名为@array,元素个数存放在@num中); 可以是负数 INPUTNUM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSHF ; 对数组@array清零 MOV CX,100 MOV AX,0 LEA DI,@ARRAY REP STOSW MOV WOR...
用汇编语言用汇编语言编写从键盘上输入N个学生的成绩,然后按成绩降序输 ...
===; 键盘输入数值数组子程序(数组名为@array,元素个数存放在@num中); 可以是负数; 采用字符串缓冲方式输入 INPUTNUM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSHF ...
汇编语言中数组如何保存?
数组存放实际上是一片连续的空间,所有的n维数组存放的时候都是按照一位数组的格式存放的数组a[2][2]的存放方式是从a[0][0]开始,依次是a[0][1],a[1][0],a[1][1],他们的存放空间是连续的.在汇编语言中,就可以在数据段中按照这个次序存放,DSEG SEGMENT ARRAY1 A00,A01,A10,A11 DSEG ...
利用汇编语言统计学生成绩,按优秀、良好、中等、及格、不及格加以区分...
设内存中有一个字节数组SCORE,存有10个学生的考试成绩,编写多分支程序,统计大于(含等于,以下同)90分,大于80分,大于70分,大于60分,小于60分的人数,结果分别置于A、B、C、D、E字节单元。.model small .486 .stack .data score 70,86,90,45,60,96,100,65,72,87 count equ ...
汇编语言程序设计,实现两个数组的合并.设数组a和b中均包含6个数据,要 ...
8086汇编代码:a(array1)、b(array2)两数组均为降序排列,元素个数不限。程序重点是如何使用字串的传送指令(lodsw、stosw、movsw),对整数数据类型而言,比高级语言编制的程序简明太多了。code segment assume cs:code org 100hstart: jmp bbbarray1: dw 89,67,56,45,34,23,12n1 ...
汇编语言已知数组A包含15个互不相等的整数,
;已知数组A包含10个互不相等的整数,数组B包含15个互不相等的整数,试编写一程序,将既在A中出现又在B中出现的偶数存放在数组C中,;请帮忙写一下汇编程序,谢谢 ;--- ;Microsoft (R) Macro Assembler Version 6.11 编译、调试通过 ;--- data segment Ar dw 0,1,...
编写一个C程序,运行时输入a,b,c三个值,输出其中值最大者
include<stdio.h> int main(){ int a,b,c,max;printf("请输入三个数:\\n");scanf("%d%d%d",&a,&b,&c);if(a>b)max=a;if(c>max)max = c;printf("三个数中最大的数为:%d",max);return 0;}
C语言 可变长数组
但是也可以这样获得:int *a = (int *) malloc ( sizeof( int ) * 5 );也就是说我们给一个指针分配了内存,从而得到一个数组,而a[5]这样定义也是需要编译器在编译程序的时候分配内存的 而编译器会根据你的代码优化你的程序,并把代码转化为汇编再者machine code 说多了,继续给你分析 你...