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)}