『壹』 編寫一個c語言程序,輸入兩個數的乘積和和,輸出這兩個數。
思路:使用for循環,用減法得到兩個數之後,驗證乘法是否符合要求,符合則輸出,不符合則跳過該循環。程序源碼及運行結果如下所示(程序排版系統會自動去掉句首空格,結構混亂請見諒):
#include<stdio.h>
int main()
{
int sum,proct;
printf("請輸入兩數之和:");
scanf("%d",&sum);
printf("請輸入兩數之積:");
scanf("%d",&proct);
for(int i=0;i<=sum/2;i++)
{
if(i*(sum-i)==proct)
{
printf(「兩數是%d和%d」,i,sum-i);
}
}
printf("結束!");
return 0;
}
『貳』 C語言中求兩數相乘的程序
思路:double類型的范圍:
-1.7*10(-308)~1.7*10(308),如果兩個數的乘積不超過這樣的精度,可以直接使用*符號進行運算。
參考代碼:
#include<stdio.h>
int main()
{
double a,b;
scanf("%lf%lf",&a,&b);
printf("%.2lf",a*b); //保留兩位小數
return 0;
}
/*
運行結果:
1205 5985
7211925.00
*/
『叄』 c語言怎麼編譯兩數相加
int
a,b;
char
c1,c2;
int
sum;
//求和
scanf("%d%c%d%c",&a,%c1,&b,&c2);
if(c1=='+'&&c2=='=')
sum=a+b;
else
sum=0;
printf("%d",sum);
或者
%#
//我記得scanf以前有跳過某種類型的變數方法,不知道是不是這個。
不過我推薦我第一種方法,不是+和=不能算sum值
『肆』 輸入m*n階矩陣A和B,用函數編程實現兩個函數相加和相乘
輸入m*n階矩陣A和B,用C語言編程實現兩個函數相加和相乘:
一、矩陣相乘。程序中先初始化矩陣,然後判斷第一個矩陣的列數和第二個矩陣的行數是否相等,如果不相等則直接提示錯誤後退出程序。相等的話則利用公式計算乘積,結果賦給matrix二維數組。最後用for循環列印出結果驗證。
#include<stdio.h>
#include<stdlib.h>
#define M 100
int main(void)
{
int i,j,k,matrix1[M][M],matrix2[M][M],row1,col1,row2,col2,matrix[M][M];
printf("輸入第一個矩陣的行數和列數:");
scanf("%d%d",&row1,&col1);
printf("輸入第一個矩陣: ");
for(i=0;i<row1;i++){
for(j=0;j<col1;j++){
scanf("%d",&matrix1[i][j]);
}
}
printf("輸入第二個矩陣的行數和列數:");
scanf("%d%d",&row2,&col2);
printf("輸入第二個矩陣: ");
for(i=0;i<row2;i++){
for(j=0;j<col2;j++){
scanf("%d",&matrix2[i][j]);
}}
for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
matrix[i][j]=0;
} }
if(col1!=row2){
fprintf(stderr,"enput error!");
exit(EXIT_FAILURE);
}
printf("The result: ");
for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
for(k=0;k<col1;k++){
matrix[i][j]=matrix[i][j]+matrix1[i][k]*matrix2[k][j];
} } }
for(i=0;i<row1;i++){
for(j=0;j<col2;j++){
printf("%d ",matrix[i][j]); }
printf(" "); }
return 0;}
二、矩陣相加:
#include<stdio.h>
#define M 20
#define N 20
float A[M][N];
float B[M][N];
float C[M][N];
int i,j,m,n,p,q;
float y=1.0;
void main()
{
scanf("%d,%d",&i,&j);
printf("請輸入矩陣B的行數和列數(用逗號隔開):");
scanf("%d,%d",&m,&n);
if(i!=m||j!=n)
printf("***對不起,您輸入的兩個矩陣不能相加,請重試.*** ");
else printf("請輸入矩陣A: ");
for(p=0;p<i;p++)
for(q=0;q<j;q++)
scanf("%f",&A[p][q]);
printf("輸出矩陣A: ");
for(p=0;p<i;p++)
for(q=0;q<j;q++)
{
printf("%10.2f",A[p][q]);
if((q+1)%j==0)
printf(" ");
}
printf("請輸入矩陣B: ");
for(p=0;p<i;p++)
for(q=0;q<j;q++)
scanf("%f",&B[p][q]);
printf("輸出矩陣B: ");
for(p=0;p<i;p++)
for(q=0;q<j;q++)
{
printf("%10.2f",B[p][q]);
if((q+1)%j==0)
printf(" ");
}
printf("矩陣A+矩陣B為: "); //計算兩個矩陣相加
for(p=0;p<i;p++)
for(q=0;q<j;q++)
C[p][q]=A[p][q]+B[p][q];
for(p=0;p<i;p++)
for(q=0;q<j;q++)
{
printf("%10.2f",C[p][q]);
if((q+1)%j==0)
printf(" ");
}
};
『伍』 C語言的兩個數相加怎麼寫
int a,b,c;
scanf("%d%d",&a,&b); //輸入a,b
c=a+b; //兩數相加給c
printf("%d",c); //輸出c
『陸』 c語言編程:用單鏈表實現兩個無限大的兩個數的加法和乘法,並將兩個數從低位到高位(如:100輸出00
//本程序主要由三個文件構成:
//BigInteger.h包涵了對節點的結構定義,以及類BigInteger的定義.
//BigInteger.cpp包涵了BigInteger類裡面成員函數的具體內容.
//main.cpp主函數...
/*********************************************************/
//BigInteger.h
structNode//定義了節點的結構
{
charNum;
Node*Prev,*Next;
};
classBigInteger//定義BigInteger類
{
Node*Head,*End,*TempNode;
voidAddHead(charNum);
voidAddEnd(charNum);
public:
BigInteger();
BigInteger(constBigInteger&BigNum);
voidGetNumber();
voiddisp();
BigIntegeroperator+(constBigInteger&BigNum);
BigIntegeroperator*(constBigInteger&BigNum);
BigIntegeroperator=(constBigInteger&BigNum);
~BigInteger();
};
//BigInteger.cpp
#include<iostream.h>
#include<stdio.h>
#include"BigInteger.h"
BigInteger::BigInteger()//構造函數,將每個節點置空.
{
Head=End=TempNode=NULL;
}
BigInteger::BigInteger(constBigInteger&BigNum)//拷貝構造
{
Node*p;
Head=End=TempNode=NULL;
p=BigNum.Head;
while(p)
{
AddEnd(p->Num);
p=p->Next;
}
}
BigInteger::~BigInteger()//析構
{
Node*NextNode;
if(Head==NULL)
return;
TempNode=Head;
while(TempNode)
{
NextNode=TempNode->Next;
deleteTempNode;
TempNode=NextNode;
}
Head=NULL;
End=NULL;
TempNode=NULL;
}
voidBigInteger::AddHead(charNum)//在鏈表頭插入節點的操作
{
TempNode=newNode;
TempNode->Num=Num;
TempNode->Prev=NULL;
if(!Head)
{
Head=End=TempNode;
TempNode->Next=NULL;
}
else
{
TempNode->Next=Head;
Head->Prev=TempNode;
Head=TempNode;
}
}
voidBigInteger::AddEnd(charNum)//在鏈表尾插入節點的操作
{
TempNode=newNode;
TempNode->Num=Num;
TempNode->Next=NULL;
if(!Head)
{
Head=End=TempNode;
TempNode->Prev=NULL;
}
else
{
TempNode->Prev=End;
End->Next=TempNode;
End=TempNode;
}
}
voidBigInteger::GetNumber()//輸入部分
{
charkey;
intcount=0,num=0;
while((key=getchar())!=10)//判斷輸入的是否是回車,不是的話將內容從後到前放到鏈表中.
{
if(key>='0'&&key<='9')
{
num=key-'0';
AddEnd(num);
num=0;
}
}
}
BigIntegerBigInteger::operator+(constBigInteger&BigNum2)//重載"+"
{
BigInteger&BigNum1=*this,result;
Node*temp1,*temp2;
intTempNum,rest=0;
temp1=BigNum1.End;//將臨時鏈表首地址放置到輸入鏈表的尾部
temp2=BigNum2.End;
while(temp1&&temp2)
{
TempNum=int(temp1->Num)+int(temp2->Num)+rest;//節點內元素相加並加上進位rest
if(TempNum>9)//判斷相加結果是否會產生進位.
{
TempNum=TempNum-10;
rest=1;
}
else
rest=0;
result.AddHead(char(TempNum));//將結果放置到最終結果鏈表裡
temp1=temp1->Prev;
temp2=temp2->Prev;
}
if(temp2)temp1=temp2;
while(temp1)
{
int(TempNum)=int(temp1->Num)+rest;//節點內元素加上進位rest
if(TempNum>9)
{
TempNum=TempNum-10;
rest=1;
}
else
rest=0;
result.AddHead(char(TempNum));//將結果放置到最終結果鏈表裡
temp1=temp1->Prev;
}
if(rest)
result.AddHead(char(rest));//考慮最後的進位是否存在,如果存在則存入鏈表的首部.
returnresult;
}
BigIntegerBigInteger::operator*(constBigInteger&BigNum2)//對*進行重載
{
BigInteger&BigNum1=*this,temp,result;
Node*temp1,*temp2,*tempa,*tempb;
intTempNum,rest,i=0,rest2;
temp1=BigNum1.End;
temp2=BigNum2.End;
while(temp2)//由乘數的存在與否判斷是否去乘被乘數的每個位
{
rest=0;
while(temp1!=NULL)
{
TempNum=int(temp1->Num)*int(temp2->Num)+rest;
if(TempNum>9)
{
rest=TempNum/10;//進位由相乘結果與10做商求得
TempNum=TempNum%10;//由相乘結果與10求模取個位
}
else
rest=0;
temp.AddHead(char(TempNum));//存入臨時鏈表
temp1=temp1->Prev;
}
if(rest!=0)temp.AddHead(char(rest));
for(intk=i;k>=1;k--)temp.AddEnd(char(0));//判斷應該在鏈表後面補幾個0
i++;//每次乘完後計數,用來下一次的補0
temp1=BigNum1.End;//把被乘數重新置到尾,用來讓乘數下一次去乘每個元素
temp2=temp2->Prev;//將乘數取出鏈表的前驅
tempa=result.End;//下面進行的是將每次乘數與被乘數的相乘結果累加放到最終鏈表裡等待輸出
if(result.Head!=NULL)//下面過程與"+"重載基本一樣,只是多了對臨時鏈表的置空,所以不在做詳細的注釋.
{
result.End=temp.Head;
result.Head=NULL;
}
tempb=temp.End;
rest2=0;
while(tempa!=NULL&&tempb!=NULL)
{
TempNum=int(tempa->Num)+int(tempb->Num)+rest2;
if(TempNum>9)
{
TempNum=TempNum-10;
rest2=1;
}
else
rest2=0;
result.AddHead(char(TempNum));
tempa=tempa->Prev;
tempb=tempb->Prev;
}
if(tempb)tempa=tempb;
while(tempa)
{
int(TempNum)=int(tempa->Num)+rest2;
if(TempNum>9)
{
TempNum=TempNum-10;
rest2=1;
}
else
rest2=0;
result.AddHead(char(TempNum));
tempa=tempa->Prev;
}
if(rest2)
result.AddHead(char(rest2));
if(temp.Head!=NULL)
{
temp.End=temp.Head;
temp.Head=NULL;
}
tempb=NULL;
}
returnresult;
}
BigIntegerBigInteger::operator=(constBigInteger&BigNum)//對=號進行重載
{
if(this==&BigNum)
return*this;
Node*p;
TempNode=Head=End=NULL;
p=BigNum.Head;
while(p)
{
AddEnd(p->Num);
p=p->Next;
}
return*this;
}
voidBigInteger::disp()//輸出鏈表
{
if(Head)
{
cout<<int(Head->Num);
TempNode=Head->Next;
}
elsereturn;
while(TempNode)
{
cout<<int(TempNode->Num);
TempNode=TempNode->Next;
}
cout<<endl;
}
//main.cpp
#include<iostream.h>
#include"BigInteger.h"
voidmain()
{
BigIntegerBigNum1,BigNum2,BigNum3;
intc;
cout<<"選擇你要進行的操作:"<<endl;
cout<<"1.大整數加法運算"<<endl;
cout<<"2.大整數乘法運算"<<endl;
cout<<"選擇你需要進行的運算:"<<endl;
cin>>c;
switch(c)
{
case1:
{
cout<<"A:"<<endl;
BigNum1.GetNumber();
cout<<"B:"<<endl;
BigNum2.GetNumber();
BigNum3=BigNum1+BigNum2;
cout<<"相加的結果是:"<<endl;
BigNum3.disp();
}break;
case2:
{
cout<<"A:"<<endl;
BigNum1.GetNumber();
cout<<"B:"<<endl;
BigNum2.GetNumber();
BigNum3=BigNum1*BigNum2;
cout<<"相乘的結果是:"<<endl;
BigNum3.disp();
}break;
default:break;
}
}
『柒』 C語言2個數相乘
兩數相乘的C語言編程:
(7)c語言兩個數相乘相加怎麼編程擴展閱讀:
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。