试编写一个函数void sort(int n, double x[]),其功能是:将具有n个元素的x数组按从小到大的顺序重新排列

如题所述

第1个回答  2010-11-25
#include <stdio.h> //头文件
main()
{
void sort(int x[],int n); 声明函数
int *p,i,a[10];
p=a; p指向a的第一个元素
for(i=0;i<10;i++)
scanf("%d",p++); 输入10个整数,作为a[10]的值
p=a; q指向a的首地址
sort(p,10); 对a的10个元素进行排序
for(p=a,i=0;i<10;i++)
打印出a的所有数值
}
void sort(int x[],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++) 访问数组中每个成员
if(x[j]>x[k]) k=j; 如果后一个元素比前一个大,则k的值为最大元素的序号
if(k!=i)如果后一个比前一个大
{t=x[i]; t是临时中间变量,把x[i]的值存在t中
x[i]=x[k]; 把x[k]的值赋给x[i],即后者比前者大的情况下,交换两者的位置
x[k]=t;把先前x[i]的值赋给x[k]
}
}
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
第2个回答  2010-11-24
#include <iostream>
using namespace std;

void sort(int n, double x[])
{
int i,j;
double temp;

for (i = 0; i < n; ++i)
{
for (j = 1 + i; j < n; ++j)
{
if (x[j] < x[i])
{
temp = x[j];
x[j] = x[i];
x[i] = temp;
}
}
}
}

int main(void)
{
double anArr[10] = {9, 23, 45, 22, 76, 1, 79, 100, 41, 74};
sort(10, anArr);
int i;
for (i = 0; i < 10; ++i)
printf("%.2f\n", anArr[i]);
return 0;
}

不明白加我MSN [email protected]本回答被网友采纳
第3个回答  2010-11-28
1)
#include <stdio.h>
#include <string.h>

void sort(char s[])
{
int i = 0;
int j = 0;
char Temp;
for (i = 0; s[i] != '\0'; i++)
{
for (j = i+1; s[j] != '\0'; j++)
{
if (s[i] > s[j])
{
Temp = s[i];
s[i] = s[j];
s[j] = Temp;
}
}
}
return;
}

int main()
{
FILE *fp = NULL;
char Str[] = "hellworld123";

fp = fopen("file1.txt", "w");
sort(Str);
fprintf(fp, "%s\n", Str);
fclose(fp);
return 0;
}

2)

#include <stdio.h>
#include <string.h>

int main()
{
FILE *fp = NULL;
char szBuffer[128];
int nLineCount = 0;

fp = fopen("file.txt", "r");

nLineCount = 0;
while (fgets(fp, szBuffer) > 0)
{
if ('\n' == szBuffer[strlen(szBuffer) - 1])
szBuffer[strlen(szBuffer) - 1] = '\0';
puts(szBuffer);
nLineCount++;
}
printf("%d\n", nLineCount);

fclose(fp);
return 0;
}
希望对你有帮助
第4个回答  2010-11-24
#include <stdio.h>
void BubbleSort(int n,double x[])
{
int i,j;
double tmp;
for (i=0;i<n;i++){
for (j=n-1;j>i;j--){
if (x[j-1]>x[j]){
tmp=x[j-1];
x[j-1]=x[j];
x[j]=tmp;
}
}
}
}本回答被提问者采纳