本文目錄一覽:
C語言函數的特點及其定義?
C語言中一個函數(function)是一個可以從程序其它地方調用執行的語句塊。
1、通過使用函數(functions)我們可以把我們的程序以更模塊化的形式組織起來,從而利用C語言所支持的結構化程序設計。
2、從數學角度,函數即集合A和集合B之間的映射關係。實際上計算機中的函數概念也是源於此,因此,一般函數,都有形參和返回值。
3、從計算機組成原理的角度來看,函數即是一個小型的計算機系統,依據馮諾伊曼的“存儲程序原理”,每一個計算機系統包含:輸入系統、輸出系統、運算器以及控制器,實際上對於C語言中的函數來說,它是“存儲程序原理”的軟實現,其中形參、實參這是輸入系統,返回值是輸出系統,函數體中的運算符,比如+、-、*、/四則運算即為運算器,而邏輯運算符以及if、while等控制語句便是一個控制器。
詳細的C語言函數介紹
函數名: cleardevice
功 能: 清除圖形屏幕
用 法: void far cleardevice(void);
程序例:
#include graphics.h
#include stdlib.h
#include stdio.h
#include conio.h
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
/* initialize graphics and local variables */
initgraph(gdriver, gmode, “”);
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */
{
printf(“Graphics error: %s/n”, grapherrormsg(errorcode));
printf(“Press any key to halt:”);
getch();
exit(1); /* terminate with an error code */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor());
/* for centering screen messages */
settextjustify(CENTER_TEXT, CENTER_TEXT);
/* output a message to the screen */
outtextxy(midx, midy, “press any key to clear the screen:”);
/* wait for a key */
getch();
/* clear the screen */
cleardevice();
/* output another message */
outtextxy(midx, midy, “press any key to quit:”);
/* clean up */
getch();
closegraph();
return 0;
}
c語言 求總結字符串輸入、輸出函數使用的區別。
C語言中的輸入輸出函數總結
C語言中數據輸入輸出的概念及在C語言中的實現
(1)所謂輸入輸出是以計算機為主體而言的。
(2)本章介紹的是向標準輸出設備顯示器輸出數據的語句。
(3)在C語言中,所有的數據輸入/輸出都是由庫函數完成的。 因此都是函數語句。
(4)在使用C語言庫函數時,要用預編譯命令#include將有關“頭文件”包括到源文件中。使用標準輸入輸出庫函數時要用到 “stdio.h”文件,因此源文件開頭應有以下預編譯命令:#include stdio.h 或#include ”stdio.h”,stdio是standard input outupt的意思。
(5)考慮到printf和scanf函數使用頻繁,系統允許在使用這兩個函數時可不加#include stdio.h 或#include ”stdio.h”
一、字符數據的輸入輸出
( 1 ) putchar 函數(字符輸出函數)
putchar 函數是字符輸出函數, 其功能是在顯示器上輸出單個字符。其一般形式為:putchar(字符變量).對控制字符則執行控制功能,不在屏幕上顯示。使用本函數前必須要用文件包含命令:#includestdio.h或#include “stdio.h”
( 2 ) getchar函數(鍵盤輸入函數)
getchar函數的功能是從鍵盤上輸入一個字符。其一般形式為:getchar();
通常把輸入的字符賦予一個字符變量,構成賦值語句,如:char c; c=getchar();使用getchar函數還應注意幾個問題:
1)getchar函數只能接受單個字符,輸入數字也按字符處理。輸入多於一個字符時,只接收第一個字符。
2)使用本函數前必須包含文件“stdio.h”。
3)在TC屏幕下運行含本函數程序時,將退出TC 屏幕進入用戶屏幕等待用戶輸入。輸入完畢再返回TC屏幕。
二、格式輸入與輸出
(1)printf函數(格式輸出函數)
printf函數稱為格式輸出函數,其關鍵字最末一個字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數據顯示到顯示器屏幕上。在前面的例題中我們已多次使用過這個函數。
(1)printf函數調用的一般形式
printf函數是一個標準庫函數,它的函數原型在頭文件“stdio.h”中。但作為一個特例,不要求在使用 printf 函數之前必須包含stdio.h文件。printf函數調用的一般形式為:printf(“格式控制字符串”,輸出表列),其中格式控制字符串用於指定輸出格式。格式控制串可由格式字符串和非格式字符串兩種組成。格式字符串是以%開頭的字符串,在%後面跟有各種格式字符,以說明輸出數據的類型、形式、長度、小數位數等。如:“%d”表示按十進制整型輸出;“%ld”表示按十進制長整型輸出;“%c”表示按字符型輸出等。非格式字符串在輸出時原樣照印,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式字符串和各輸出項在數量和類型上應該一一對應。
***格式字符串
格式: [標誌][輸出最小寬度][.精度][長度]類型
1)類型:類型字符用以表示輸出數據的類型,其格式符和意義如下表所示:
d,以十進制形式輸出帶符號整數(正數不輸出符號)
o,以八進制形式輸出無符號整數(不輸出前綴0)
x或X ,以十六進制形式輸出無符號整數(不輸出前綴Ox)
u,以十進制形式輸出無符號整數
f,以小數形式輸出單、雙精度實數
e或E,以指數形式輸出單、雙精度實數
g或G,以%f或%e中較短的輸出寬度輸出單、雙精度實數
c,輸出單個字符
s,輸出字符串
2)標誌:標誌字符為-、+、#、空格四種,其意義下表所示:
-,結果左對齊,右邊填空格
+,輸出符號(正號或負號)
空格,輸出值為正時冠以空格,為負時冠以負號
#,對c,s,d,u類無影響;對o類,在輸出時加前綴o;對x類,在輸出時加前綴0x;對e,g,f 類當結果有小數時才給出小數點
3)輸出最小寬度:用十進制整數來表示輸出的最少位數。若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或0。
4)精度:精度格式符以“.”開頭,後跟十進制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字符,則表示輸出字符的
個數;若實際位數大於所定義的精度數,則截去超過的部分。
5.長度:長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。
(2)scanf函數(格式輸入函數)
scanf函數稱為格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量之中。
(1) scanf函數的一般形式
scanf函數是一個標準庫函數,它的函數原型在頭文件“stdio.h”中,與printf函數相同,C語言也允許在使用scanf函數之前不必包含stdio.h文件。scanf函數的一般形式為:scanf(“格式控制字符串”,地址表列);其中,格式控制字符串的作用與printf函數相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運算符“”後跟變量名組成的。這個地址就是編譯系統在內存中給a,b變量分配的地址。在C語言中,使用了地址這個概念,這是與其它語言不同的。應該把變量的值和變量的地址這兩個不同的概念區別開來。變量的地址是C編譯系統分配的,用戶不必關心具體的地址是多少。
(2) 格式字符串
格式字符串的一般形式為:%[*][輸入數據寬度][長度]類型其中有方括號[]的項為任選項。各項的意義如下:
1) 類型:表示輸入數據的類型,其格式符和意義如下表所示。
d,輸入十進制整數
o,輸入八進制整數
x,輸入十六進制整數
u,輸入無符號十進制整數
f或e,輸入實型數(用小數形式或指數形式)
c,輸入單個字符
s,輸入字符串
2) “*”符:用以表示該輸入項,讀入後不賦予相應的變量,即跳過該輸入值。
如:
scanf(“%d %*d %d”,a,b);
當輸入為:123時,把1賦予a,2被跳過,3賦予b。
3) 寬度:用十進制整數指定輸入的寬度(即字符數)。
例如:
scanf(“%5d”,a);
輸入:12345678
只把12345賦予變量a,其餘部分被截去。
又如:
scanf(“%4d%4d”,a,b);
輸入:12345678
將把1234賦予a,而把5678賦予b。
4) 長度:長度格式符為l和h,l表示輸入長整型數據(如%ld) 和雙精度浮點數(如%lf)。h表示輸入短整型數據。
使用scanf函數還必須注意以下幾點:
1))scanf函數中沒有精度控制,如:scanf(“%5.2f”,a);是非法的。不能企圖用此語句輸入小數為2位的實數。
2))scanf中要求給出變量地址,如給出變量名則會出錯。如 scanf(“%d”,a);是非法的,應改為scnaf(“%d”,a);才是合法的。
3))在輸入多個數值數據時,若格式控制串中沒有非格式字符作輸入數據之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到空格,TAB,回車或非法數據(如對“%d”輸入“12A”時,A即為非法數據)時即認為該數據結束。
4))在輸入字符數據時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。
例如: scanf(“%c%c%c”,a,b,c);
輸入為:def
則把’d’賦予a, ‘ ‘ 賦予b,’e’賦予c。
只有當輸入為:def
時,才能把’d’賦於a,’e’賦予b,’f’賦予c。
如果在格式控制中加入空格作為間隔,
如:scanf (“%c %c %c”,a,b,c);
則輸入時各數據之間可加空格。
5) 如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符。
例如:scanf(“%d,%d,%d”,a,b,c);
其中用非格式符“ , ”作間隔符,故輸入時應為:5,6,7
又如:scanf(“a=%d,b=%d,c=%d”,a,b,c);
則輸入應為:a=5,b=6,c=7
6) 如輸入的數據與輸出的類型不一致時,雖然編譯能夠通過,但結果將不正確。
學習c語言函數這一章的心得,和方法技巧。
我個人認為函數這部分的重點給你說下哦:
1.函數的返回值類型,也就是你函數return的內容的類型,注意如果有多種結束函數途徑的話一定要有多個return,譬如說
int fun(int x)
{
if(x0)
return 0;
else
return 1;
}
2.函數形參的傳遞關係,有的可以改變值,有的不可以改變值,也是給你個例子:
void fun1(int x,int *y,int z)
{
x=1;
*y=1;
z=1;
}
如果主函數有變量int a=b=c=2;fun(a,b,c);的話,那麼b和c的值會改變,而a的值不會改變,那是因為:
a並不對變量a所佔用內存空間的內容進行操作。
b是把b變量的內存空間地址傳遞進去了,fun函數直接對b變量所在內存空間進行操作,所以b會改變。
至於c,你暫時不用知道,因為形參int c表示的是一個引用,是c++裡面會涉及的,你現在用c所以暫時只要知道有這麼種方法就可以了。
3.就是注意函數中變量的存活期,這個說起來有點麻煩,你看下書上關於局部變量和全局變量那部分的內容吧,那個說的比較詳細。
C語言 函數功能解析
本函數為求字符長度的函數。
int
fun(char
*s)
{char
*t=s;
//t取s的首地址
while(*t++);
//t自己遍歷,到字符末也就是
‘\0’的時候,也是,s有幾個字符,就++幾次,到不能加的時候,停止循環,
return(t-s);
//首先,字符是一個字節的大小,所以t-s就是char
*s的長度,又因為*t到‘\0’的時候還加一次,所以長度包括‘\0’.
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/300724.html