求用排列编一个c语言的程序
求编一个程序,用排列,求3个向量的和数据要从.in文件里读取.in文件如下:410.05.06.032.07.09.050.04.05.010.52.45.0第1列的数是...
求编一个程序,用排列,求3个向量的和
数据要从.in文件里读取
.in文件如下:
4
10.0 5.0 6.0
32.0 7.0 9.0
50.0 4.0 5.0
10.5 2.4 5.0
第1列的数是在第1个向量里的
第2列的数是在第2个向量里的
第3列的数是在第3个向量里的
输出大概是:
Element Value
0 21.000000
1 48.000000
2 59.000000
3 17.900000
其中value那一列,就是3个向量的和了
有点复杂,我一定追加到最高分以示感谢
`` 展开
数据要从.in文件里读取
.in文件如下:
4
10.0 5.0 6.0
32.0 7.0 9.0
50.0 4.0 5.0
10.5 2.4 5.0
第1列的数是在第1个向量里的
第2列的数是在第2个向量里的
第3列的数是在第3个向量里的
输出大概是:
Element Value
0 21.000000
1 48.000000
2 59.000000
3 17.900000
其中value那一列,就是3个向量的和了
有点复杂,我一定追加到最高分以示感谢
`` 展开
5个回答
展开全部
#include <stdio.h>
/*交换两个数*/
void Swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
/*输出一行十个数字*/
void Write(int array[], int begin, int end)
{
for(int i = begin; i <= end; i ++)
// cout <<array[i] << " ";
printf("%d ",array[i]);
printf("\n");
// cout << endl;
}
/*插入排序*/
void InsertionSort(int array[], int begin, int end)
{
int i, j;
int tmp;
for(i = begin+1; i <= end; i ++) /*循环几次就输出几行*/
{
tmp = array[i];
for(j = i-1; j >= begin; j --)
{
if(tmp > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
array[j + 1] = array[j];
else
break;
}
array[j+1] = tmp;
Write(array, begin, end); /*输出排序结果(一行)*/
}
}
/*选择排序*/
void SelectionSort(int array[], int begin, int end)
{
int i, j;
int position;
for(i = begin; i < end; i ++)
{
for(j = i+1, position = i; j <= end; j ++)
{
if(array[j] > array[position]) /*如果要从小到大排序,则改将'>'改为'<'*/
position = j;
}
Swap(array[i], array[position]);
Write(array, begin, end);
}
}
/*冒泡排序*/
void BubbleSort(int array[], int begin, int end)
{
int i, j;
for(i = begin; i < end; i ++)
{
for(j = begin; j <= end - begin -1; j ++)
{
if(array[j+1] > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
Swap(array[j], array[j+1]);
}
Write(array, begin, end);
}
}
/*将原始数组拷贝到要排序的数组,因为有3个排序方法,所以必须保留原始数组,以备其他调用*/
bool Copy(int array1[], int array2[], int n1, int n2)
{
if(n1 != n2)
return false;
else
{
for(int i = 0; i < n1; i ++)
{
array1[i] = array2[i];
}
return true;
}
}
/*主函数*/
void main()
{
/*如果需要输入排序的个数不是10个数,可以将3个地方的10改为你要的个数就可以了*/
int number, i; /*定义2个整型变量*/
int initinal[10], sort[10]; /*定义2个数组,第一个是保存输入的10个数,第2个是用来排序的数组*/
printf("请输入十个要排序的数字:\n");
number = 10; /*排序个数是10个*/
for(i = 0; i < number; i ++)
scanf("%d",&initinal[i]);
printf("从大到小插入排序:\n");
Write(initinal, 0, number-1); /*输出原始十个数据*/
Copy(sort,initinal,number, number); /*将原始数组拷贝到排序数组*/
InsertionSort(sort,0,number-1); /*调用排序函数*/
printf("从大到小选择排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
SelectionSort(sort,0,number-1);
printf("从大到小冒泡排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
BubbleSort(sort,0,number-1);
}
/*交换两个数*/
void Swap(int &a, int &b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
/*输出一行十个数字*/
void Write(int array[], int begin, int end)
{
for(int i = begin; i <= end; i ++)
// cout <<array[i] << " ";
printf("%d ",array[i]);
printf("\n");
// cout << endl;
}
/*插入排序*/
void InsertionSort(int array[], int begin, int end)
{
int i, j;
int tmp;
for(i = begin+1; i <= end; i ++) /*循环几次就输出几行*/
{
tmp = array[i];
for(j = i-1; j >= begin; j --)
{
if(tmp > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
array[j + 1] = array[j];
else
break;
}
array[j+1] = tmp;
Write(array, begin, end); /*输出排序结果(一行)*/
}
}
/*选择排序*/
void SelectionSort(int array[], int begin, int end)
{
int i, j;
int position;
for(i = begin; i < end; i ++)
{
for(j = i+1, position = i; j <= end; j ++)
{
if(array[j] > array[position]) /*如果要从小到大排序,则改将'>'改为'<'*/
position = j;
}
Swap(array[i], array[position]);
Write(array, begin, end);
}
}
/*冒泡排序*/
void BubbleSort(int array[], int begin, int end)
{
int i, j;
for(i = begin; i < end; i ++)
{
for(j = begin; j <= end - begin -1; j ++)
{
if(array[j+1] > array[j]) /*如果要从小到大排序,则改将'>'改为'<'*/
Swap(array[j], array[j+1]);
}
Write(array, begin, end);
}
}
/*将原始数组拷贝到要排序的数组,因为有3个排序方法,所以必须保留原始数组,以备其他调用*/
bool Copy(int array1[], int array2[], int n1, int n2)
{
if(n1 != n2)
return false;
else
{
for(int i = 0; i < n1; i ++)
{
array1[i] = array2[i];
}
return true;
}
}
/*主函数*/
void main()
{
/*如果需要输入排序的个数不是10个数,可以将3个地方的10改为你要的个数就可以了*/
int number, i; /*定义2个整型变量*/
int initinal[10], sort[10]; /*定义2个数组,第一个是保存输入的10个数,第2个是用来排序的数组*/
printf("请输入十个要排序的数字:\n");
number = 10; /*排序个数是10个*/
for(i = 0; i < number; i ++)
scanf("%d",&initinal[i]);
printf("从大到小插入排序:\n");
Write(initinal, 0, number-1); /*输出原始十个数据*/
Copy(sort,initinal,number, number); /*将原始数组拷贝到排序数组*/
InsertionSort(sort,0,number-1); /*调用排序函数*/
printf("从大到小选择排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
SelectionSort(sort,0,number-1);
printf("从大到小冒泡排序:\n");
Write(initinal, 0, number-1);
Copy(sort,initinal,number, number);
BubbleSort(sort,0,number-1);
}
展开全部
dingpwen - 初入江湖 三级的程序有C++的语法, C下通不过,另外有些错误,稍做修改如下:
#include<stdio.h>
#include<stdlib.h>
void main()
{
int N;
int i,j;
double data,total;
FILE *fp;
if((fp=fopen("D:\\data.in","r"))==NULL)
{
printf("file can not open!\n");
exit(0);
}
fscanf(fp, "%d", &N);
printf("Element Value\n");
for(i=0; i<N; ++i)
{
total = 0;
for(j=0; j<3; ++j)
{
fscanf(fp, "%lf", &data);
total+= data;
}
printf("%d %f\n", i, total);
}
fclose(fp);
}
#include<stdio.h>
#include<stdlib.h>
void main()
{
int N;
int i,j;
double data,total;
FILE *fp;
if((fp=fopen("D:\\data.in","r"))==NULL)
{
printf("file can not open!\n");
exit(0);
}
fscanf(fp, "%d", &N);
printf("Element Value\n");
for(i=0; i<N; ++i)
{
total = 0;
for(j=0; j<3; ++j)
{
fscanf(fp, "%lf", &data);
total+= data;
}
printf("%d %f\n", i, total);
}
fclose(fp);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
if((fp=fopen("D:\\data.in","r"))==NULL)
{
printf("file can not open!\n");
exit(0);
}
int N;
fread(&N, sizeof(int), 1, fp);
int i,j;
double data,total(0);
printf("Element Value");
for(i=0; i<N; ++i)
{
total = 0;
for(j=0; j<3; ++j)
{
fread(&data, sizeof(double), 1, fp);
total+= data;
}
printf("%d %f\n", i, total);
}
fclose(fp);
}
#include<stdlib.h>
void main()
{
FILE *fp;
if((fp=fopen("D:\\data.in","r"))==NULL)
{
printf("file can not open!\n");
exit(0);
}
int N;
fread(&N, sizeof(int), 1, fp);
int i,j;
double data,total(0);
printf("Element Value");
for(i=0; i<N; ++i)
{
total = 0;
for(j=0; j<3; ++j)
{
fread(&data, sizeof(double), 1, fp);
total+= data;
}
printf("%d %f\n", i, total);
}
fclose(fp);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言学得不行,不好意思,帮你顶下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
d许多风格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询