#include<stdio.h>
struct complex add(struct complex? c1,struct complex c2);
struct complex amass(struct complex? c1,struct complex c2);
struct complex
{?
int real;
int image;?
};
void main()
{
struct complex a,b;
while(scanf("%d%d%d%d",&a.real,&a.image,&b.real,&b.image)!=EOF)
{
add(a,b);
amass(a,b);
}
}
struct complex add(struct complex? c1,struct complex c2)
{
printf("%d+(%di)\n",c1.real+c2.real,c1.image+c2.image);
return c1;
}
struct complex amass(struct complex? c1,struct complex c2)
{
printf("%d+(%di)\n",(c1.real*c2.real-c1.image*c2.image),(c1.real*c2.image+c2.real*c1.image));
return c1;
}
擴展資料:
main()函數用法:
大多數UNIX系統對main函數提供了三個參數,原型如下:
intmain(intargc,char*argv[],char*env[]);
其中第三個參數是環境表地址。
ANSIC規定main函數只有兩個參數,而且第三個參數與全局變量environ相比也沒有帶來更多益處,所以POSIX.1也規定應使用environ而不使用第三個參數。
通常用getenv和putenv函數來存取特定的環境變量,而不是用environ變量。
main函數的原型多是下面這種形式:
intmain(intargc,char*argv[]),參數argc代表了輸入參數的個數,char*argv[]表示傳入的參數的字符串,是壹個字符串數組。
例如在linux平臺下編寫壹個小程序:
int main(intargc,char*argv[])
{
int i;
printf("argc:%d\n",argc);
for(i=0;i<argc;i++)
{
printf("argv[%d]:%s\n",i,argv[i]);
}
exit(0);
}
用gcc編譯後形成壹個a.out的可執行的文件,運行a.out,其結果是:
argc=1,argv[0]=”a.out”
運行的程序的文件名,也占用壹個參數位置,也就是說argv數組中的第壹個單元指向的字符串總是可執行程序的名字,以後的單元指向的字符串依次是程序調用時的參數。這個賦值過程是操作系統完成的,只需要拿來用就可以了。
在命令行參數的提交中,系統會自動給指針數組後加上壹個NULL,所以for(i=0;i<argc;i++)這句也可以換成while(*argv!=NULL)
int main(intargc)省略其它參數的定義也是可以的,這樣運行時候argc就直接返回參數個數,而不返回其它。
運行命令行參數帶有char*argv[]的時候,如果輸入參數帶有空格,應該用雙引號括起來。