编写一个C语言程序,从键盘输入两个实数,求它们的乘积并输出,要求12位有效数字,小数点后保留4位。

编写一个C语言程序,从键盘输入两个实数,求它们的乘积并输出,要求12位有效数字,小数点后保留4位。,第1张

//C语言程序,实现输入的两个实数的加减乘除

#include <stdioh>

void main()

{

float x,y;

//提示输入需要计算的两个数

printf("\n 请输入两个非0的实数x、y:");

do {

scanf("%f,%f",&x,&y);

if (x==0 || y==0) printf("\n 你输入的数字不能为零,请重新输入");

} while (x==0 || y==0);

//实现加减乘除运算

printf("\n %f+%f=%f\n",x,y,x+y);

printf("\n %f-%f=%f\n",x,y,x-y);

printf("\n %f×%f=%f\n",x,y,xy);

printf("\n %f÷%f=%f\n",x,y,x/y);

}

参考代码如下:

#include<stdioh>

#define N 5

int main()

{

int a[N]={25,10,10,2,1};

int mul=1,i;

for(i=0;i<N;++i)

mul=a[i];

printf("%d",mul);

return 0;

}

#include <iostream>

int main()

{

int p = new int ;

int p1 = new int ;

printf("输入第一个向量\n");

scanf("%d",p1);

printf("输入第二个向量\n");

scanf("%d",p);

printf("乘积为""%d\n",(p)(p1));

delete p;

delete p1;

system("pause");

}

#include<iostreamh>

#include<stdlibh>

#include<iomaniph>

void caidan();

#define max 12500

typedef struct{

int e;

int i; //行下标

int j; //列下标

}triple;

typedef struct{

triple data[max+1];

int rpos[10];

int m,n,t;

}ts;

//矩阵的转置实现函数

void fasttransposesmatrix(ts M,ts &T)

{

int col,num[10],cpot[10]={0},p,q;

Tm=Mn;

Tn=Mm;

Tt=Mt;

if(Tt){

for(col=1;col<=Mn;++col)

num[col]=0;

for(int t1=1;t1<=Mt;++t1)

++num[Mdata[t1]j];

cpot[1]=1;

for(col=2;col<=Mn;++col)

cpot[col]=cpot[col-1]+num[col-1];

for(p=1;p<=Mt;++p){

col=Mdata[p]j;

q=cpot[col];

Tdata[q]i=Mdata[p]j;

Tdata[q]j=Mdata[p]i;

Tdata[q]e=Mdata[p]e;

++cpot[col];

}

}

}

//矩阵的乘法Y=MQ实现函数

void multsmatrix(ts M,ts Q,ts &Y){

int arow,brow=0,p,q,i1,tp,t1,ctemp[10],ccol;

if(Mn!=Qm)

cout<<"错误!"<<endl;

Ym=Mm;

Yn=Qn;

Yt=0;

if(MtQt!=0)

{

for(arow=1;arow<=Mm;++arow)

{

for(i1=1;i1<=Mm;i1++)

ctemp[i1]=0;

Yrpos[arow]=Yt+1;

if(arow<Mm)

tp=Mrpos[arow+1];

else

tp=Mt+1;

for(p=Mrpos[arow];p<tp;++p)

{

brow=Mdata[p]j;

if(brow<Qm)

t1=Qrpos[brow+1];

else

t1=Qt+1;

for(q=Qrpos[brow];q<t1;++q)

{

ccol=Qdata[q]j;

ctemp[ccol]+=Mdata[p]eQdata[q]e;

}

}

for(ccol=1;ccol<=Yn;++ccol)

if(ctemp[ccol]){

++Yt;

if(++Yt>max)

cout<<"错误"<<endl;

Ydata[Yt]i=arow;

Ydata[Yt]j=ccol;

Ydata[Yt]e=ctemp[ccol];

cout<<Ydata[Yt]i<<Ydata[Yt]j<<Ydata[Yt]e<<endl;

}

}

}

}

//将数组转换成三元组

void exchange1(int a,ts &M,int m,int n)

{

int i1,j1,z=1,pos[10];

for(i1=0;i1<=n;i1++)

{

pos[i1]=0;

Mrpos[i1]=0;

}

pos[0]=1;

for(i1=0;i1<m;i1++)

for(j1=0;j1<n;j1++)

if(a[i1][j1])

{

Mdata[z]i=i1+1;

Mdata[z]j=j1+1;

Mdata[z]e=a[i1][j1];

z++;

pos[i1+1]++;

}

for(i1=0;i1<=m;i1++)

{

Mrpos[i1+1]=Mrpos[i1]+pos[i1];

}

Mt=z-1;

Mm=m;

Mn=n;

}

//将三元组转换成数组形式

void exchange2(int a,ts &T)

{

int i1,j1,z1;

for(i1=0;i1<Tm;i1++)

for(j1=0;j1<Tn;j1++)

{

a[i1][j1]=0;

}

for(z1=1;z1<=Tt;z1++)

for(i1=0;i1<Tm;i1++)

for(j1=0;j1<Tn;j1++)

if((i1==Tdata[z1]i-1)&&(j1==Tdata[z1]j-1))

{

a[i1][j1]=Tdata[z1]e;

}

}

//输出结果

void output(int a,int m,int n)

{

int i1,j1;

for(i1=0;i1<m;i1++)

{

for(j1=0;j1<n;j1++)

{

cout<<a[i1][j1]<<',';

}cout<<endl;

}

}

//转置的 *** 作函数

void zhuanzhi(){

int i1,j1,m,n;

cout<<"初始矩阵:"<<endl;

cout<<"请输入你要输入的数组的行数:"<<endl;

cin>>m;

cout<<"请输入你要输入的数组的列数:"<<endl;

cin>>n;

intpp=new int[m];

for(i1=0;i1<m;i1++)

pp[i1]=new int[n];

cout<<"请依次输入矩阵的元素:"<<endl;

for(i1=0;i1<m;i1++)

for(j1=0;j1<n;j1++)

{

cin>>pp[i1][j1];

}

cout<<endl;

ts M,T;

exchange1(pp,M,m,n);

fasttransposesmatrix(M,T);

intpp1=new int[Tm];

for(i1=0;i1<Tm;i1++)

pp1[i1]=new int[Tn];

exchange2(pp1,T);

cout<<"转置后的矩阵是:"<<endl;

output(pp1,Tm,Tn);

delete pp;

delete pp1;

caidan();

}

//相乘的 *** 作函数

void xiangcheng(){

ts M,Q,Y;

int i1,j1,m,n;

cout<<"请输入你要输入的数组的行数:"<<endl;

cin>>m;

cout<<"请输入你要输入的数组的列数:"<<endl;

cin>>n;

intp=new int[m];

for(i1=0;i1<m;i1++)

p[i1]=new int[n];

cout<<"请依次输入矩阵的元素:"<<endl;

for(i1=0;i1<m;i1++)

for(j1=0;j1<n;j1++)

{

cin>>p[i1][j1];

}

cout<<endl;

exchange1(p,M,m,n);

cout<<"请再次输入一个矩阵(即乘数):"<<endl;

cout<<"请输入你要输入的数组的行数:"<<endl;

cin>>m;

cout<<"请输入你要输入的数组的列数:"<<endl;

cin>>n;

intp2=new int[m];

for(i1=0;i1<m;i1++)

p2[i1]=new int[n];

cout<<"请依次输入矩阵的元素:"<<endl;

for(i1=0;i1<m;i1++)

for(j1=0;j1<n;j1++)

{

cin>>p2[i1][j1];

}

cout<<endl;

exchange1(p2,Q,m,n);

multsmatrix(M,Q,Y);

intp1=new int[Ym];

for(i1=0;i1<Ym;i1++)

p1[i1]=new int[Yn];

exchange2(p1,Y);

cout<<"两矩阵相乘结果为:"<<endl;

output(p1,Ym,Yn);

delete p2;

delete p1;

caidan();

}

//菜单

void caidan()

{

int i;

cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;

cout<<" 1矩阵的转置 2两个矩阵的乘法 3退出 "<<endl;

cout<<"请选择:"<<endl;

cin>>i;

switch(i){

case 1:zhuanzhi();

break;

case 2:xiangcheng();

break;

case 3: exit(0);

}

}

//主函数

void main()

{

caidan();

}

以上就是关于编写一个C语言程序,从键盘输入两个实数,求它们的乘积并输出,要求12位有效数字,小数点后保留4位。全部的内容,包括:编写一个C语言程序,从键盘输入两个实数,求它们的乘积并输出,要求12位有效数字,小数点后保留4位。、编写程序统计a数组中所有元素的乘积、利用指针形式编写一个程序,求两个向量的乘积。C++等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9321841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存