1. 請寫一個c語言函數,要有結構和函數,結構定義復數,函數加減復數,主函數調用printf
我感覺都是C++寫這個。。
#include<iostream>
usingnamespacestd;
classcomplex
{
public:
complex(complex&c);//深度復制構造函數
complex(floatr,floati);//普通構造函數
voidset(floatr,floati);//變數重新賦值
complex();//無參構造函數
friendcomplexadd(complex&b,complex&c);//相加
friendcomplexsub(complex&b,complex&c);//相減
friendcomplexmul(complex&b,complex&c);//相乘
voidshow();
private:
floatreal;
floatimag;
};
complex::complex()
{
real=0;
imag=0;
}
complex::complex(floatr,floati)
{
real=r;
imag=i;
}
complex::complex(complex&c)
{
real=c.real;
imag=c.imag;
}
voidcomplex::set(floatr,floati)
{
real=r;
imag=i;
}
voidcomplex::show()
{
cout<<"resultis:"<<real<<(imag>0?"+":"-")<<abs(imag)<<"i"<<endl;//abs()取絕對值函數
}
complexadd(complex&b,complex&c)
{
floatt1,t2;
t1=b.real+c.real;
t2=b.imag+c.imag;
returncomplex(t1,t2);
}
complexsub(complex&b,complex&c)
{
floatt1,t2;
t1=b.real-c.real;
t2=b.imag-c.imag;
returncomplex(t1,t2);
}
complexmul(complex&b,complex&c)
{
floatt1,t2;
t1=b.real*c.real-b.imag*c.imag;
t2=b.real*c.imag+c.real*b.imag;
returncomplex(t1,t2);
}
intmain()
{
complexc1(3,5);
complexc2(4,8);
complexc3;
c3=add(c1,c2);//調用賦值構造函數
c3.show();
c3=sub(c1,c2);
c3.show();
c3=mul(c1,c2);
c3.show();
return0;
}
你要C的也有,還是大一無聊弄的……
#include<stdio.h>
#include<stdlib.h>
typedefstruct{
floatrmz;
floatlmz;
}complex;
//構造一個復數
complexgetAComplex(floata,floatb){
complexcomplex1;
complex1.rmz=a;
complex1.lmz=b;
returncomplex1;
}
//兩個復數求和
complexaddComplex(complexcomplex1,complexcomplex2)
{complexcomplex3;
complex3.rmz=complex1.rmz+complex2.rmz;
complex3.lmz=complex1.lmz+complex2.lmz;
returncomplex3;
}
//求兩個復數的差
complexsubComplex(complexcomplex1,complexcomplex2)
{
complexcomplex3;
complex3.rmz=complex1.rmz-complex2.rmz;
complex3.lmz=complex1.lmz-complex2.lmz;
returncomplex3;
}
//求兩個復數的積
complexproctComplex(complexcomplex1,complexcomplex2)
{
complexcomplex3;
complex3.rmz=complex1.rmz*complex2.rmz-complex1.lmz*complex2.lmz;
complex3.lmz=complex1.lmz*complex2.rmz+complex2.lmz*complex1.rmz;
returncomplex3;
}
//分離出實部
floatgetComplexRmz(complexcomplex1)
{
returncomplex1.rmz;
}
//分離出虛部
floatgetComplexLmz(complexcomplex1)
{
returncomplex1.lmz;
}
//列印復數
voidPrintCom(complexcom1)
{
if(com1.rmz!=0&&com1.lmz!=0)
printf("%.2f+%.2fi ",com1.rmz,com1.lmz);
elseif(com1.rmz==0&&com1.lmz!=0)
printf("%.2fi ",com1.lmz);
elseif(com1.rmz!=0&&com1.lmz==0)
printf("%.2f ",com1.rmz);
elseif(com1.rmz==0&&com1.lmz==0)
printf("%.2f ",com1.rmz);
}
//主函數
voidmain()
{
floatrmz1,lmz1,rmz2,lmz2;
complexcom1,com2,com3;
intchoice;
printf("1.求兩個復數的和 2.求兩個復數的差 3.求兩個復數的積 4.分離出實部 5.分離出虛部 6.退出 ");
printf("輸入第1個復數的實部和虛部:");
scanf("%f,%f",&rmz1,&lmz1);
com1=getAComplex(rmz1,lmz1);
printf("所生成的復數1為:");
PrintCom(com1);
printf("輸入第2個復數的實部和虛部:");
scanf("%f,%f",&rmz2,&lmz2);
com2=getAComplex(rmz2,lmz2);
printf("所生成的復數2為:");
PrintCom(com2);
while(1){
printf("輸入你的選擇:");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
com3=addComplex(com1,com2);
printf("兩個復數的和為:");
PrintCom(com3);
break;
case2:
com3=subComplex(com1,com2);
printf("兩個復數的差為:");
PrintCom(com3);
break;
case3:
com3=proctComplex(com1,com2);
printf("兩個復數的積為:");
PrintCom(com3);
break;
case4:
printf("復數1的實部為:%.2f ",getComplexRmz(com1));
printf("復數2的實部為:%.2f ",getComplexRmz(com2));
break;
case5:
printf("復數1的虛部為:%.2f ",getComplexLmz(com1));
printf("復數2的虛部為:%.2f ",getComplexLmz(com2));
break;
case6:
break;
default:
printf("請輸入1~6的數字! ");break;
}
if(choice==6)break;
}
}
不知道有沒有別的錯誤……
不懂再問吧
上課去了……
2013 5 27 14:14
2. c語言編寫下面的函數
doubleinner_proct(doublea[],doubleb[],intn)
{
doubler=0;
inti;
for(i=0;i<n;i++)
r+=a[i]*b[i];
returnr;
}
3. 一、要求以C語言,編寫幾個子函數(至少4個子函數)
#include<stdio.h>
floatsum(floatx,floaty){
returnx+y;
}
floatquotient(floatx,floaty){
returnx/y;
}
floatproct(floatx,floaty){
returnx*y;
}
floatdifferrent(floatx,floaty){
returnx-y;
}
intmain(void){
floata,b;
a=12;
b=2;
printf("sumis%f ",sum(a,b));
printf("quotientis%f ",quotient(a,b));
printf("proctis%f ",proct(a,b));
printf("differrentis%f ",differrent(a,b));
}
函數的知識和函數的調用
上面的代碼是函數的嵌套使用。函數作為另一個函數(printf)的參數
4. C語言中int proct (int,int)是什麼意思
int proct (int,int);是函數聲明。函數proct的返回類型是int,需要兩個int類型的參數。
5. C語言inner_proct函數編寫
#include <stdio.h>
int inner_proct(int *a,int *b,int n){
int i;
int sum;
for(i=0;i<n;i++)
{
sum+=(*(a+i))*(*(b+i));
}
printf("%d",sum);
return sum;
}
int main(){
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[10]={1,2,3,4,5,6,7,8,9,10};
inner_proct(a,b,10);
}
6. 在C語言中,乘積的函數名是什麼
在C語言中,沒有標准庫函數計算乘積。
我們可以自定義計算乘積的函數,函數名符合標識符命名規則即可。「乘積」的英文是「proct」,常用於乘法的標識符通常使用「Multi」這個單詞。
C語言標識符命名規則:
標識符由字母(A-Z,a-z)、數字(0-9)、下劃線「_」組成,並且首字元不能是數字,但可以是字母或者下劃線。例如,正確的標識符:abc,a1,prog_to。
不能把C語言關鍵字作為用戶標識符,例如if ,for, while等.
標識符長度是由機器上的編譯系統決定的,一般的限制為8字元(註:8字元長度限制是C89標准,C99標准已經擴充長度,其實大部分工業標准都更長)。
標識符對大小寫敏感,即嚴格區分大小寫。一般對變數名用小寫,符號常量命名用大寫。
標識符命名應做到「見名知意」,例如,長度(外語:length),求和、總計(外語:sum),圓周率(外語:pi)。
7. 這段c語言是什麼意思
在main函數之前先聲明一個自己要定義的函數名稱(proct)和所帶的形參類型(int x,int y),返回值類型(proct前面的int),在main之後定義函數體,即int proct(int x,int,y)
{
int z;
z=x*y;
return z;
}部分(求兩數之積),在main函數中在將a,b的值傳給proct函數,返回的值賦給c,然後輸出c就是兩數之積。其實也可以在函數聲明同時就直接定義,效果也是一樣的。就像這樣:#include<stdio.h>
int proct(int x,int,y)
{
int z;
z=x*y;
return z;
}
void main ()
{
int a,b,c;
printf(〃輸入兩個整數:10 20〃);
scanf(〃%d%d〃,&a,&b);
c=proct(a,b);
printf(〃%d*%d=%d\n〃,a,b,c)
}
8. 這里的C語言函數是怎麼定義的
intc_comp_proct(a1,a2,c)
structc_comp*a1,*a2,*c;
{
……
}
這是舊式(K&R C 時代,大約是上世紀八十年代)的函數定義語法,函數形參的類型不是在括弧里聲明,而是寫在函數聲明以後,函數體之前
ANSI C 之後,這種寫法就廢棄(obsolete)了。現代的代碼不應該使用這種語法
9. C語言函數遞歸調用,主函數與子函數順序
在y!=0的情況下,fun會調用自己,要等y=0後,一層層往上。就到到fun(1)的時候再會執行printf("%d",d);putchar('\n');然後會執行fun(y*2+d)後面的,printf("%d",d);putchar('\n'),然後再往上,,,直到你最初的fun(n)後面的printf("%d",d);putchar('\n')。
你可以在printf("%d",d),後面加一個printf("n
=
%d\n",
n);
可以看到如下結果
8
n
=
1
1
n
=
2
0
n
=
4
0
n
=
8
0
10. C語言中proct是什麼意思
proct在C語言中不是關鍵字,C庫中也沒有這樣的函數名,所以pruct有兩種可能。
1是編程者自己定義的變數,2是編程者自定義的函數的名字。
這里proct是自定義函數的名字,功能就是返回a乘b的結果,實現一個乘法功能。
那為什麼要用proct呢,因為當一個程序很大時,變數很多的時候,我們需要對變數或函數做標記。因為時間久了,比如說過一個月回過頭來看我們自己寫的程序,我們很可能就會忘記n,j,k這種沒有意義的變數或者函數名字到底是什麼?所以編程人員都喜歡用英文拼寫來代替,即便時間久了,看到它就會知道當時這個變數/函數到底是做什麼用的。