當前位置:首頁 » 編程語言 » 有關函數的代碼c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

有關函數的代碼c語言

發布時間: 2022-10-17 09:57:14

c語言程序 關於函數

#include <stdio.h>

char *mystrcpy(char str1[], char str2[])
{
int i = 0;
while (str2[i])
{
str1[i] = str2[i];
i++;
}
str1[i] = '\0';
return str1;
}

char *mystrcat(char str1[], char str2[])
{
int i = 0, j = 0;

while (str1[i]) i++;
while (str2[j]) str1[i++] = str2[j++];
str1[i] = '\0';
return str1;
}

int mystrcmp(char str1[], char str2[])
{
int i = 0, j = 0;

while (str1[i] || str2[i])
{
if (str1[i] != str2[i])
return str1[i] - str2[i];
i++;
}
return 0;
}

int main(void)
{
char str1[100] = "abc", str2[100] = "def", str3[200];
mystrcpy(str3, str1);
puts(str3);
mystrcat(str3, str2);
puts(str3);
if (mystrcmp(str3, str2) > 0)
printf("%s > %s\n", str3, str2);
else
printf("%s < %s\n", str3, str2);
return 0;

}

② 用C語言編寫:編寫一個函數,要求在主函數中輸入兩個數,輸出其中最大值。

C語言代碼如下:

#include<stdio.h>

int main()

{

int a,b;

printf("please enter two number:"); -----兩個數字用空格隔開,以回車鍵結束輸入。

scanf("%d %d",&a,&b);if(a>b)

printf("The max is %d",a);

else if(b>a)

printf("The max is %d",b);

else

printf("The two Numbers are the same");

return 0;

}

運行結果圖:

(2)有關函數的代碼c語言擴展閱讀:

c語言特點:

基本特性:

1、高級語言:它是把高級語言的基本結構和語句與低級語言的實用性結合起來的工作單元。

2、結構式語言:結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。

C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。

3、代碼級別的跨平台:由於標準的存在,使得幾乎同樣的C代碼可用於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。C語言對編寫需要進行硬體操作的場合,優於其它高級語言。[

4、使用指針:可以直接進行靠近硬體的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。

C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由於這些改進增加語言的復雜度,也為另一部分所詬病。

Java則吸取了C++的教訓,取消了指針操作,也取消了C++改進中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低於C++/C。

一般而言,C,C++,java被視為同一系的語言,它們長期占據著程序使用榜的前三名。

特有特點:

1.C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。

2.C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。

3.不同的變數類型可以用結構體(struct)組合在一起。

4.只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。

5.部份的變數類型可以轉換,例如整型和字元型變數。

6.通過指針(pointer),C語言可以容易的對存儲器進行低級控制。

7.預編譯處理(preprocessor)讓C語言的編譯更具有彈性。

優缺點:

優點

1.簡潔緊湊、靈活方便

C語言一共只有32個關鍵字,9種控制語句,程序書寫形式自由,區分大小寫。

把高級語言的基本結構和語句與低級語言的實用性結合起來。

C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。

2.運算符豐富

C語言的運算符包含的范圍很廣泛,共有34種運算符。

C語言把括弧、賦值、強制類型轉換等都作為運算符處理。

從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。

3、數據類型豐富

C語言的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據結構的運算。並引入了指針概念,使程序效率更高。

4、表達方式靈活實用

C語言提供多種運算符和表達式值的方法,對問題的表達可通過多種途徑獲得,其程序設計更主動、靈活。

它語法限制不太嚴格,程序設計自由度大,如對整型量與字元型數據及邏輯型數據可以通用等。

5、允許直接訪問物理地址,對硬體進行操作

由於C語言允許直接訪問物理地址,可以直接對硬體進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位(bit)、位元組和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統軟體。

6、生成目標代碼質量高,程序執行效率高

C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與匯編語言相當.

C語言一般只比匯編程序生成的目標代碼效率低10%~20%。

7、可移植性好

C語言在不同機器上的C編譯程序,86%的代碼是公共的,所以C語言的編譯程序便於移植。在一個環境上用C語言編寫的程序,不改動或稍加改動,就可移植到另一個完全不同的環境中運行。

8、表達力強

C語言有豐富的數據結構和運算符。包含了各種數據結構,如整型、數組類型、指針類型和聯合類型等,用來實現各種數據結構的運算。

C語言的運算符有34種,范圍很寬,靈活使用各種運算符可以實現難度極大的運算。

C語言能直接訪問硬體的物理地址,能進行位(bit)操作。兼有高級語言和低級語言的許多優點。

它既可用來編寫系統軟體,又可用來開發應用軟體,已成為一種通用程序設計語言。

另外C語言具有強大的圖形功能,支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。

缺點

1、 C語言的缺點主要表現在數據的封裝性上,這一點使得C在數據的安全性上有很大缺陷,這也是C和C++的一大區別。

2、 C語言的語法限制不太嚴格,對變數的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。

從應用的角度,C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設計更熟練一些。

③ C語言函數的編程代碼,

#include<stdio.h>
void func();
void main()
{
func();
}
void func()
{
printf(「函數func被調用~\n」);
}

④ 在C語言里,關於庫函數中各種數學函數的代碼。

你說的就是庫函數的源碼,也就是glibc,源碼在ftp://ftp.gnu.org/gnu/glibc可以下到,比如下載ftp://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.gz,打開後就可以看到你需要的各種庫的具體實現代碼,比如在string中的strcat.c中就有

char*strcat(dest,src)
char*dest;
constchar*src;
{
char*s1=dest;
constchar*s2=src;
reg_charc;
/*Findtheendofthestring.*/
do
c=*s1++;
while(c!='');
/*,sowecanincrement
itwhilememoryisread(winsonpipelinedcpus).*/
s1-=2;
do
{
c=*s2++;
*++s1=c;
}
while(c!='');
returndest;
}

⑤ 求一個C語言程序,關於求和和函數調用的

#include<stdio.h>

int sum(int n)

{

int i=0,s=0;

while(i<=n)

{

s=s+i;

i++;

}


return s;

}

int main()

{

int n;

printf("請輸入要累積的數:");

scanf("%d",&n);

sum(n);

printf("累加的結果為%d",sum(n));

return 0;

}

(5)有關函數的代碼c語言擴展閱讀:

使用函數的優勢:

C語言程序鼓勵和提倡人們把一個大問題劃分成一個個子問題,對應於解決一個子問題編制一個函數,因此,C語言程序一般是由大量的小函數而不是由少量大函數構成的,即所謂「小函數構成大程序」。

這樣的好處是讓各部分相互充分獨立,並且任務單一。因而這些充分獨立的小模塊也可以作為一種固定規格的小「構件」, 用來構成新的大程序。

參考資料來源:網路-C語言

⑥ C語言常用的函數有哪些

C語言庫函數,常用庫函數有:

1、scanf格式輸入函數

2、printf格式輸出函數

3、systemdos命令函數

4、sort排序

5、main主函數

6、fgets文件讀取字元串函數

7、fputs文件寫入字元串函數

8、fscanf文件格式讀取函數

9、fprintf文件格式寫入函數

10、fopen打開文件函數

11、getchar輸入字元函數

12、putchar輸出字元函數

13、malloc動態申請內存函數

14、free釋放內存函數

15、abs求絕對值數學函數

16、sqrt求平方根數學函數

(6)有關函數的代碼c語言擴展閱讀

語言組成:


1、數據類型

C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。

2、常量與變數

常量其值不可改變,符號常量名通常用大寫。

變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。

3、數組

如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。

4、指針

如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。

⑦ c語言中有哪些函數

C語言輸入輸出函數有很多,標准I/O函數中包含了如下幾個常用的函數:
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int
getc(FILE
*fp)
getc主要是從文件中讀出一個字元.常用的判斷文件是否讀取結束的語句為
(ch
=
getc(fp))
!=
EOF.EOF為文件結束標志,定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當fp為stdin時,getc(stdin)就等同於getchar()了.
int
putc(int
ch,FILE
*fp)
putc主要是把字元ch寫到文件fp中去.如果fp為stdout,則putc就等同於putchar()了.
int
getchar(void)
getchar主要是從標准輸入流讀取一個字元.默認的標准輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字元時又涉及到緩沖的問題,所以並不是在屏幕中敲上一個字元程序就會運行,一般是通過在屏幕上敲上回車鍵,然後將回車前的字元串放在緩沖區中,getchar就是在緩沖區中一個一個的讀字元.當然也可以在while循環中指定終止字元,如下面的語句:while
((c
=
getchar())
!=
'#')這是以#來結束的.
int
putchar(int
ch)
putchar(ch)主要是把字元ch寫到標准流stdout中去.
char
*
gets(char
*str)
gets主要是從標准輸入流讀取字元串並回顯,讀到換行符時退出,並會將換行符省去.
int
puts(char
*str)
puts主要是把字元串str寫到標准流stdout中去,並會在輸出到最後時添加一個換行符.
char
*fgets(char
*str,
int
num,
FILE
*fp)
str是存放讀入的字元數組指針,num是最大允許的讀入字元數,fp是文件指針.fgets的功能是讀一行字元,該行的字元數不大於num-1.因為fgets函數會在末尾加上一個空字元以構成一個字元串.另外fgets在讀取到換行符後不會將其省略.
int
fputs(char
*str,
file
*fp)
fputs將str寫入fp.fputs與puts的不同之處是fputs在列印時並不添加換行符.
int
fgetc(FILE
*fp)
fgetc從fp的當前位置讀取一個字元.
int
fputc(int
ch,
file
*fp)
fputc是將ch寫入fp當前指定位置.
int
fscanf(FILE
*fp,
char
*format,
輸入列表)
fscanf按照指定格式從文件中出讀出數據,並賦值到參數列表中.
int
fprintf(FILE
*fp,
char
*format,
輸出列表)
fprintf將格式化數據寫入流式文件中.
數據塊讀寫函數
fread
(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
參數說明:
buffer:是一個指針。
對fread
來說,它是讀入數據的存放地址。
對fwrite來說,是要輸出數據的地址(均指起始地址)。
size:
要讀寫的位元組數。
count:
要進行讀寫多少個size位元組的數據項。
fp:
文件型指針。

⑧ C語言代碼:應用函數求解

#include<stdio.h>

#define N 100

void fun(int *a,int n) { int i,k; k=a[n-1]; for ( i=n-1;i>0;i-- ) a[i]=a[i-1]; a[0]=k; }

void main() { int a[N],n,m,i;

printf("請輸入n: "); scanf("%d",&n); if ( n>=N ) n=N;

printf("請輸入%d個整數: ",n); for ( i=0;i<n;i++ ) scanf("%d",&a[i]);

printf("請輸入後移數據個數: "); scanf("%d",&m);

for ( i=0;i<m;i++ ) fun(a,n);

for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf(" ");

}

⑨ 急求C語言中查找函數的代碼

我去,幾乎沒有對的地方。
首先,指針默認只有一個地址的長度的空間,存不了那麼多的字元。
其次,傳值和傳地址一塌糊塗,完全就是亂寫么。
scanf的第二個參數是地址,如果本身不是指針則需要取址符。
我給你重寫了算了
#include<stdio.h>
int Retrieve(int array[],int length,int x);/*形參x直接傳值就可以了*/
int main()
{
int *a,x;
int length,i;

scanf("%d",&length);
a = (int)malloc(sizeof(int)*length); /*申請一個內存空間用來存放數據,或者直接用一個大數組也可以*/

for(i=0;i<length;i++)
scanf("%d",a+i);/*a本身就是一個地址,不需要加什麼符號*/
scanf("%d",&x);/*x是變數,需要取址符*/

printf("%d\n",Retrieve(a,length,x));
return 0;
}
int Retrieve(int array[],int length,int x)
{
int i;
i=0;
/* p=array; 這句其實沒必要*/
while(i<length)
{
if(x==array[i])
return i;/*既然找到了,那就直接返回就行了*/
i++;
}

return -1;
}

⑩ C語言strcmp函數是什麼樣的代碼

C語言中strcmp函數是string庫的常用函數。其原型代碼和介紹如下:

1.先說一下這個函數的實現原理,向strcmp()函數中傳入兩個字元串(記為str1,str2).傳入之後,通過把str1的各字母的ASCII碼值和str2的各字母的ASCII碼值進行比較。若str1>str2則返回正數,若str1=str2則返回0,否則,則返回負數。

2.下面實現代碼:

3.整個函數的原型中得益於「(*str1!='')&&(*str1==*str2)」這一句的代碼,因為這樣當字元指針指向空,意味著字元串已經移動到最後了,比較結束,此時可以退出循環。而如果兩個字元串不相等時,則此時函數也可以退出了。

(10)有關函數的代碼c語言擴展閱讀:

這個函數要注意一下幾點:

①使用*(unsigned char*)str1而不是用*str1。這是因為傳入的參數為有符號數,有符號字元值的范圍是-128~127,無符號字元值的范圍是0~255,而字元串的ASCII沒有負值,若不轉化為無符號數這回在減法實現時出現錯誤。

②While循環中ret=*(unsigned char*)str1-*(unsigned char*)str2) && *str1,最後與上str1也可以換成str2,因為前面已經做了相減,無論哪個先為『』都會退出。因為最後與上str1是為了判斷str1是否結束,即是否為『』。

③這個函數沒有判斷參數為NULL時的情況,所以當傳入NULL時程序會崩潰。網上看別人說商業化代碼都會在調用strcmp前先判斷是否為NULL,所以可以不用判斷NULL;我在VC6上測試string.h中的strcmp(NULL,NULL),程序也會崩潰。這里可以根據實際情況來決定。

參考資料來源:網路-strcmp函數