A. c語言寫函數是寫在主程序前面好還是先聲明然後寫在主程序後面好呢 各有什麼優劣
main函數放在最前面,結構條例比較清晰,讀起來方便,先main,然後main調用的其他函數。這樣的話就需要在main前聲明被調函數。代價就是如果被調函數發生變化,譬如函數名稱、參數、返回值類型等發生變化,那麼聲明的地方也要同步改變。
如果是被調函數在main函數之前,就沒這個問題,但讀起來就要先找到main函數。這個現在稍微強大一點的編輯器找個函數還是很方便的。
運行速度沒什麼區別,聲明一下只是為了編譯器能識別函數的標識。
B. c語言不是從上至下運行的嘛為什麼被調用的intmax卻放在最後
int max是一個函數,他在主程序中被拿來調用了,其實很多函數都可以這樣寫,只要程序能讀到你調用的這個函數,無論你這個函數在哪裡都能被正常運作,在Java裡面這個叫回調函數,等於非同步傳輸。
C. C語言簡單問題
int的變數裝不下15位那麼大的,無法scanf("%d")輸入,要表示這種超過計算機long大小的數據,最簡單的就是使用字元串,例如要表示1000位的整數,可以定義的變數為:
char big1[1000], big2[1000],big3[1000];
用scanf("%s")或者gets讀入數據,按照按右對齊進行加運算結果存入big3,最簡單的辦法是逆向big1、big2然後按位加結果保存到big3,最後逆向big後就是結果,形象點舉例:
如果輸入的big1是:123456789999999999
程序逆向排序為:999999999987654321
對big2同樣的處理,然後就可以按位計算合計存入big3
整個程序,關鍵的就是兩個函數,第一個是計算求和的:
void big_sum(char a[], char b[], char c[]);
函數的功能是計算超大整數的加法:c=a+b
第二個是逆向字元串的函數:
void str_rev(char s[]);
功能是把字元串s收尾顛倒,下面以C語言的語法描述兩個函數演算法,如果看不懂就代碼就看注釋。
void str_rev(char s[]){
int n=0,i=0;
char t;
while(s[n]) n++;/*使得指針移動到字元串末尾的結束符*/
n--;
while(i>n){t=s[i];s[i]=s[n];s[n]=t;i++;n--;}/*首尾交換*/
}
加法函數的演算法邏輯如下:
void big_sum(char a[], char b[], char c[]){
int ia=0,ib=0,ic=0,s=0;
str_rev(a);/*逆向a*/
str_rev(b);/*逆向b*/
while(a[ia] && b[ib]){
if (a[ia]) {s+=a[ia]-'0'; ia++;}/*如果a沒有完,那麼取出一位累加到s,移動到下一位*/
if (b[ib]) {s+=b[ib]-'0'; ib++;}/*如果b沒有完,那麼取出一位累加到s,移動到下一位*/
c[ic]='0' + s%10;/*一位結果,轉換為字元*/
s/=10;/*保留進位*/
ic++;
}
c[ic]='\0';/*給結果添加結束符*/
str_rev(a);/*還原a*/
str_rev(b);/*還原b*/
str_rev(c);/*還原c*/
}
最後就是主程序了:
main(){
char a[1000],b[1000],c[1000];
printf("a=");gets(a);
printf("b=");gets(b);
big_sum(a,b,c);
printf("c=");pets(c);
}
D. c語言為什麼main函數都在最後
誰說的,main函數可以在代碼的任意一個地方,不過大家在習慣上放在最後.(這個和函數模塊放在前面供main函數調用有關,但如果你在.h文件中聲明了,就沒關系了)
在一個項目中,main函數也可以在項目代碼的任意一個地方,但是為了找到開始地址,放在最後是有好處的,放在前面也是可以的.所以說可隨意放置啦..
E. C語言程序都是由主程序開始的,結束時是什麼
C語言程序都是由主程序開始,由一個與第一個大括弧匹配的大括弧結束。
F. 一個c語言程序的執行總是從該函數的main開始,在main函數最後結束
main()函數稱之為主函數,一個C程序總是從main()函數開始執行的,但是不一定在main函數最後結束。
在 main() 之後的最後一條語句結束後,程序還要運行一些代碼,以正常返回操作系統。main函數執行完後還執行其他語句,
有時候需要有一種與程序退出方式無關的方法來進行程序退出時的必要處理,方法就是用atexit()函數來注冊程序正常終止時要被調用的函數,atexit()函數的參數是一個函數指針,函數指針指向一個沒有參數也沒有返回值的函數,它的原型是:
int atexit(void (*)(void));
(6)c語言為什麼把主程序放到最後擴展閱讀
main函數的使用
示例:
#include <stdlib.h>
#include <stdio.h>
void fn1(void);
void fn2(void);
int main(void)
{
atexit(fn1);
atexit(fn2);
printf("main exit ... ");
return 0;
}
void fn1()
{
printf("calling fn1()... ");
}
void fn2()
{
printf("calling fn2()... ");
}