当前位置:首页 » 编程语言 » c语言创建三元组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言创建三元组

发布时间: 2023-04-22 02:20:03

1. c语言编程

switch(r)
{//要是一个块
case 0:printf("请输入三个整数:"); //提示输入
scanf("%d %d %d",&v1,&v2,&v3);
InitTriplet(T,v1,v2,v3);break;//构造三孙塌元组

case 1:Get(T,2,e); printf("第2个元素是:%d\n\n",e);break; //测试Get函数
case 2:Put(T,1,e1); //测试Put函数
printf("将第1个元素置为10,");
Get(T,1,e1);
printf("置换结果为:%d\n\n",e1); //Put的置换结果
break;
case 3: Max(T,e2); //Max函数测试
printf("最大元素为:%d\n\n",e2);break;
case 4: Min(T,e3); //Min函数测试
printf("胡碧最小元素为:%d\n\n",e3);break;
case 5:View(T,e1,e2,e3);
printf("显示三个元素分别为:%d %d %d\n\n",e1,e2,e3);//显示三个元素
break;
case 6: Mult(T,1,3,M); //元素相乘
printf("第1个裤凯举元素和第3个元素相乘:%d\n\n",M);break;
case 7:
Pro(T,10); //乘以一个同量比例
printf("各元素乘以10:%d %d %d\n\n",T[0],T[1],T[2]);
break;
case 8:DestroyTriplet(T); //销毁三元组
if(!T)
printf("三元组已销毁!\n\n");
else
printf("销毁失败\n\n");break;
default: printf("输入错误\n");
}

2. 用C语言怎么编程 三元组

可以搭哗用运旁结构体实现
struct three{
//第一部分
/知悄行/第二部分
//第三部分
}

3. 用C语言实现整形三元组A(12,5,34)和浮点型三元组B(12.5,1.2,124.6)的构造,

// Triplet.h 头文件


#ifndef _TRIPLET_H_

#define _TRIPLET_H_


#include<malloc.h>

#include<stdio.h>

#include<process.h>

#define OK 1

#define ERROR 0

#define OVERFLOW -1


typedef int Status;

typedef int ElemType; // 更改三元组数据类型 int, float, double

typedef ElemType *Triplet;


Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3); // 初始化三元组

Status DestroyTriplet(Triplet &T); // 销毁三元组


Status Get(Triplet T, int i, ElemType &e); // 得到三元组的值

Status Put(Triplet T, int i, ElemType e); // 给三元组赋值


Status Ascending(Triplet T); // 升序排列

Status Descending(Triplet T); // 降序排列


Status Max(Triplet T, ElemType &e); // 取得三元组最大值

Status Min(Triplet T, ElemType &e); // 取得三元组最小值


#endif


——————————————————————————————————

// Triplet.cpp 三元组各函数定义源文件


#include "Triplet.h"

Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3)

{ // 操作结果:构造三元组T,依次置T的三个元素的初值为v1,v2和v3

if (!(T = (ElemType *)malloc(3 * sizeof(ElemType))))

exit(OVERFLOW);

T[0] = v1, T[1] = v2, T[2] = v3;

return OK;

}


Status DestroyTriplet(Triplet &T)

{ // 操作结果:三元组T被销毁

free(T);

T = NULL;

return OK;

}


Status Get(Triplet T, int i, ElemType &e)

{ // 初始条件:三元组T已存在,1≤i≤历孙3。操作结果:用e返回T的第i元的滑烂李值

if (i<1 || i>3)

return ERROR;

e = T[i - 1];

return OK;

}


Status Put(Triplet T, int i, ElemType e)

{ // 初始条件:三元组T已存在,1≤i≤3。操作结果:改变T的第i元的值为e

if (i<1 || i>3)

return ERROR;

T[i - 1] = e;

return OK;

}


Status Ascending(Triplet T)

{ // 初始条件:三元组T已存在。操作结果:将T的三个元素按升序排列

for (int i = 0; i < 3; i++){

for (int j = 0; j < 2 - i; j++){

if (T[j]>T[j + 1]){

ElemType temp = T[j];

信迟T[j] = T[j + 1];

T[j + 1] = temp;

}

}

}

return OK;

}


Status Descending(Triplet T)

{ // 初始条件:三元组T已存在。操作结果:将T的三个元素按降序排列

for (int i = 0; i < 3; i++){

for (int j = 0; j < 2 - i; j++){

if (T[j]<T[j + 1]){

ElemType temp = T[j];

T[j] = T[j + 1];

T[j + 1] = temp;

}

}

}

return OK;

}


Status Max(Triplet T, ElemType &e)

{ // 初始条件:三元组T已存在。操作结果:用e返回T的三个元素中的最大值

e = T[0] >= T[1] ? T[0] >= T[2] ? T[0] : T[2] : T[1] >= T[2] ? T[1] : T[2];

return OK;

}


Status Min(Triplet T, ElemType &e)

{ // 初始条件:三元组T已存在。操作结果:用e返回T的三个元素中的最小值

e = T[0] <= T[1] ? T[0] <= T[2] ? T[0] : T[2] : T[1] <= T[2] ? T[1] : T[2];

return OK;

}


——————————————————————————————————

// main1.cpp 如果Triplet.h里是typedef int ElemType; 即声明的整型三元组 主函数源文件


#include "Triplet.h"

int main(){

Triplet T;

ElemType m;

Status i;

i = InitTriplet(T, 12, 5, 34);


printf("整型三元组A:");

for (int k = 1; k <= 3; k++){

Get(T, k, m);

printf("%d ", m);

}

printf(" ");


if ((i = Max(T, m)) == OK)

printf("整型三元组中的最大值为:%d ", m);


Descending(T);

printf("降序排序后的三元组: 整型三元组A:");

for (int k = 1; k <= 3; k++){

Get(T, k, m);

printf("%d ", m);

}

printf(" ");


DestroyTriplet(T);


return 0;

}

4. C语言求解 毕达哥拉斯三元组

#include<iostream>
using namespace std;

void main()
{
int side1;
int side2;
int hypotenuse;
int sum1,sum2;
int count;

cout<<"Please enter the hypotenuse:"<<endl;
cout<<"Make sure that the length is above 0 and below 500!"<<endl;
cin>>count;
cout<岩键芹<"The length is "<< count <<"."亮仿<<endl;

for(side1=1;side1<count;side1++)
{
for(side2=side1+1;side2<count;side2++)
{
sum1=side1*side1+side2*side2;
for(hypotenuse=side2+1;hypotenuse<=count;hypotenuse++)
{
sum2=hypotenuse*hypotenuse;

if(sum2==sum1)
{
cout<<side1<<" "<<side2<<" "<<hypotenuse<<" "<<endl;
}
}
}
}
}

程序用vc6.0编译通过。粗毕

5. c语言三元组问题。

一、你这个代码写的是C++语言的方式,需要将文件名写成rrr.cpp才可以!

二、有一处错误,需要调整一下,以下为修改后的代码

#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#defineArSize3

typedefintElemSet;
typedefintStatus;
voidInitTriplet(ElemSet*&T,ElemSetv1,ElemSetv2,ElemSetv3);//
StatusDestroyTriplet(ElemSet*T);
ElemSetGet(ElemSet*T,inti,ElemSet*e);
StatusPut(ElemSet*T,inti,ElemSete);
ElemSetMax(ElemSet*T);
ElemSetMin(ElemSet*T);

intmain()
{
ElemSet*T;
InitTriplet(T,100,200,300);//
ElemSete;
printf("第二个元素的值=%d ",Get(T,2,&e));
Put(T,3,150);
ElemSeta=Get(T,3,&a);
printf("第三个元素的值=%d ",a);
printf("最大的元素值=%d ",Max(T));
printf("最小的元素值=%d ",Min(T));
DestroyTriplet(T);
system("pause");
return0;
}

voidInitTriplet(ElemSet*&T,ElemSetv1,ElemSetv2,ElemSetv3)//因为你传递的是一维指针,如果只是普通参数答缓传递,则,T的变化不能反应到主程序中去,所以,要定义成引用变量!
{
T卜举迟=(ElemSet*)malloc(ArSize*sizeof(ElemSet));
if(!T)
{
printf("内存分配失败! ");
exit(EXIT_FAILURE);
}
T[0]=v1;
T[1]=v2;
T[2]=v3;
}
StatusDestroyTriplet(ElemSet*T)
{
free(T);
T=NULL;
return1;
}
ElemSetGet(ElemSet*T,inti,ElemSet*e)
{
if(i<1&&i>3)
return0;
*e=T[i-1];
return*e;
}
StatusPut(ElemSet*T,inti,ElemSete)
{
if(i<1&&i>3)
return0;
T[i-1]=e;
return1;
}

ElemSetMax(ElemSet*T)
{
ElemSetmax=T[0];
for(inti=1;i<ArSize;i++)
if(T[i]>max)
max=T[i];
returnmax;
}
ElemSetMin(ElemSet*T)
{
ElemSetmin=T[0];
for(int型李i=1;i<ArSize;i++)
if(T[i]<min)
min=T[i];
returnmin;
}

6. C语言 三元组 问题

//三元组表示稀疏矩阵

#include<stdio.h>
#define N 1000

typedef struct Elem
{
int i,j;
int e;
} ELEM; /* 表示一个元素的三元组结构 */
void main()
{
ELEM mat[N];
int row,col; /* 行列数 */
int i,j,k=0,n;
int x;
char fn[]="data.txt";
FILE *pf=fopen(fn,"r");
if(!pf){
printf("Error: Can't open the file: %s\n",fn);
return;
}
fscanf(pf,"%d%d",&row,&col); /* 读取行列数 */
/* 读取矩阵数据,并存入三元组 */
for(i=0; i<row; i++)
for(j=0; j<col; j++){
fscanf(pf,"%d",&x);
if(x!=0){
mat[k].e=x;
mat[k].i=i;
mat[k].j=j;
if(k%5==0) printf("\n");
k++;
printf("[%2d][%2d]=%3d ",i,j,x);
}
}
printf("\n");
fclose(pf);
n=k; k=0;
/* 将给定的一个三元组(就用前面得到的这个三元组),输出稀疏矩阵 */
for(i=0; i<row; i++){
for(j=0; j<col; j++){
if(mat[k].i==i && mat[k].j==j){
printf("%3d ",mat[k].e);
k++;
}else
printf("%3d ",0);
}
printf("\n");
}
printf("\n");
}
/*
注意,为了便于测试,将一个稀疏矩阵保存于数据文件data.txt中(该文件放在源程序所在的目录中),文件的内容如下:
第一行两个数据(数据间用空格分隔):r c(分别表示矩阵行数和列数)
接下来是矩阵的数据,共有r行,每行c个数据。例如:
10 10
0 0 0 0 0 1 0 0 0 1
2 0 0 0 1 0 0 0 0 0
0 3 0 0 0 0 0 1 0 0
0 0 0 0 0 0 4 0 0 0
0 0 5 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0 0 1
2 0 0 0 1 0 0 0 0 0
0 3 0 0 0 0 0 1 0 0
0 0 0 0 0 0 4 0 0 0
0 0 5 0 0 0 0 0 1 0
*/

7. C语言数据结构问题,用结构体表示三元组(可以是不同类型的),并编程实现三元组基本操作给了我源代码

兄弟,你在fun函扮昌数中的雹缺袜t是局部变量,也就是说你并没有为全局变量分配内存。要源激这样改:
status fun(int **t,int v1,int v2,int v3)
{
*t=(int *)malloc(3*sizeof(int));
if(!(*t))exit(OVERFLOW);
(*t)[0]=v1;(*t)[1]=v2;(*t)[2]=v3;
return OK;
}
调用时:
fun(&t,v1,v2,v3);

8. 用C语言编写了一个三元组但程序一直有问题。。好像是一个类型的问题,请大神指点指点!!

#include<stdio.h>
#include<malloc.h>
#defineok1
#defineerror0
typedefintstatus;
typedefintelemtype;
typedefelemtype*triplet;
statusinittriplet(triplet&T,elemtypev1,elemtypev2,elemtypev3);
statusdestroytriplet(triplet败枯&T);
statusget(tripletT,intT,elemtype&e);
statusput(triplet&T,intT,elemtypee);
statusisascending(tripletT);
statusmax(tripletT,elemtype&e);
voidPrintE(elemtypee);
intmain()
{
inti;
inta;
tripletT;
inte;
statusflag;
flag=inittriplet(T,90,95,100);
if(flag)
{
printf("初始化成功! T中的元素是:");
printf(T);
}
else
{
printf("初始化失败!");
}
printf("输入返回第几元的值: ");
scanf("%d",&i);
flag=get(T,i,e);
if(flag)
{
printf("第%d元的值是:%d ",i,e);
}
printf("将第几元的值修改为多少:");
scanf("%d,%d",&i,&a);
flag=put(T,i,a);
if(flag)
{
printf("将第%d元修改为%d,重新输出T为:",i,a);
printf(T);
}
flag=isascending(T);
if(flag)
{
printf("该三元组元素升序排列!");
}
else
{
printf("该三元组降序或者无序排列!");
}
flag=max(T,e);
if(flag)
{
printf("该三元组的最大值为: ");
printE(e);

}
DestroyTriplet(T);
printf("销毁T后,T=%u ",T);
printf(" ");
return0;
}
statusinittriplet(triplet&T,elemtypev1,elemtypev2,elemtypev3)
{
T=(elemtype*)malloc(3*sizeof(elemtype));
if(!T)
exit(-1);
T[0]=v1,T[1]=v2,T[2]=v3;
returnok;
}
statusdestroytriplet(triplet&T)
{
free(T);
T=NULL;
returnok;
}
statusget(tripletT,inti,elemtype&e)
{
e=T[i-1];
returnok;
}
statusput(triplet&T,inti,elemtypee)
{
T[i-1]=e;
returnok;
}
statusisascending(tripletT)
哪袭{
return(T[0]<=T[1])&&(T[1]<=T[2]);
}
statusmax(tripletT,elemtype&e)
{
e=(T[0]>=T[1])?(T[0]>=T[2]?T[0]:T[2]):(T[1]>=T[2]?T[1]:T[2]);
returnok;
}
李枯兄voidPrintE(elemtypee)
{
printf("%d ",e);
}

//真不懂为毛网络知道已经支持代码高亮,还贴这种丑陋的代码。
//楼主你贴代码的时候能不能考虑下回答者的感受,帮你高亮,不谢,我是雷锋

9. c语言中的三元组的操作问题!!!

&本身表示引用,如此写会更明白 int*&,就是一个指向整形指针的引用。
这个引用起什么作用呢?它可以让T保留在函数中的改变。考虑如下程序:

typedef int ElemType;
typedef ElemType *Triplet;

void test(Triplet& T)
{
cout << *T << endl;

int two = 2;
T = &two;

cout << *T << endl;
}

int main()
{
int one = 1;
Triplet T = &one;

test(T);

cout << *T << endl;

return 0;
}

其结果为 1 2 2;
如果去掉&,结果为埋晌搏 1 2 1。
也就是说,用了&,T在函数的局部区域里,相当于一个全局变量,而不是局部变量。被改变后的值保留了下来。如果没有&,T在函数中被复制了一弯祥份,只作用于局部区域。谨吵
《Effective C++》的作者如是说:在C++底层实现中,&其实最终是用指针实现的。

10. C语言怎么在main函数中直接写出一个三元组

你是扰祥说输出一串数据,缓碧搏按3个一组?若是,程序如下。
程序用随机数,如果你自己已有数据,可以放在数组里,依次输出便可。
#include<stdio.h>
#include <time.h>
int main() {
int x;
int i,n;
srand(time(0)); //随机种子
n=5; //假定5组
printf("T={");
for (i=0;i<n;i++){
printf("慧汪(");
x=rand()%100;printf("%d,",x);
x=rand()%100;printf("%d,",x);
x=rand()%100;printf("%d),",x);
}
printf("\b}\n");
return 0;
}

例如输出:T={(54,65,4),(92,58,76),(30,36,70),(74,4,91),(48,31,32)}