版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2023年2月4日內(nèi)容概述C語言的發(fā)展及特點(diǎn)。C程序的基本結(jié)構(gòu)和書寫風(fēng)格。簡單的C程序設(shè)計(jì)。C程序的上機(jī)步驟和VisualC++6.0的基本用法。2023年2月4日1.1C語言的發(fā)展及特點(diǎn)
1.1.1C語言的發(fā)展使用計(jì)算機(jī),必須與計(jì)算機(jī)進(jìn)行溝通、交流。計(jì)算機(jī)語言是人們定的一套與計(jì)算機(jī)溝通的規(guī)則。計(jì)算機(jī)語言分低級語言和高級語言機(jī)器語言:由數(shù)字0、1組合而成。匯編語言:用助記符描述的指令系統(tǒng)。高級語言:面向過程的語言或稱算法語言。 如:Fortran,Basic,Pascal,C等等。2023年2月4日C語言是在1972年至1973年間由美國的貝爾實(shí)驗(yàn)室的M.D.Ritchie和K.Thompson以及英國劍橋大學(xué)的M.Richards等為描述和實(shí)現(xiàn)UNIX操作系統(tǒng)而設(shè)計(jì)的。
經(jīng)進(jìn)一步改進(jìn),至1977年出現(xiàn)了與具體機(jī)器無關(guān)的C編譯文本,從而使C語言廣泛應(yīng)用,各種機(jī)器皆可使用。3.1983年,美國標(biāo)準(zhǔn)化協(xié)會(ANSI)制定了ANSIC。以ANSIC為基礎(chǔ):
不同機(jī)器有不同版本,尤其是函數(shù)均應(yīng)參考相應(yīng)的機(jī)器。
C語言的編譯環(huán)境有多種,如: DOS/Windows平臺:Borland/TurboC,MicrosoftC等Unix/Linux平臺:GNUCC語言的誕生2023年2月4日4.1987年,ANSIC公布了新標(biāo)準(zhǔn)——87ANSIC5.1990年,國際標(biāo)準(zhǔn)化組織(InternationalStandardizationOrganization,ISO)接受了87ANSIC為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)。6.進(jìn)入二十世紀(jì)八九十年代,計(jì)算機(jī)語言從面向過程轉(zhuǎn)化為面向?qū)ο蟪绦蛟O(shè)計(jì),可視化多媒體程序設(shè)計(jì)模式的概念得到了推廣、普及。C語言在發(fā)展的同時(shí),也朝著支持面向?qū)ο?、可視化程序設(shè)計(jì)語言方向發(fā)展,如BorlandC++、VisualC++、C++Builder等先后問世。C語言已經(jīng)成為編寫系統(tǒng)軟件、應(yīng)用軟件和進(jìn)行程序設(shè)計(jì)、教學(xué)的重要編程語言,甚至許多硬件開發(fā)系統(tǒng)也使用C語言。C語言已經(jīng)成為世界上應(yīng)用最廣泛的計(jì)算機(jī)語言之一。
2023年2月4日1.1.2C語言的特點(diǎn)C語言既有高級語言的優(yōu)點(diǎn),又在很多方面保留了低級語言的長處。用C語言編寫的程序非常簡潔。C語言只有32個關(guān)鍵字,9種控制語句。autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizofstructswitchtypedefunionunsignedvoidvolatilewhile2023年2月4日運(yùn)算符和數(shù)據(jù)結(jié)構(gòu)豐富(共有34種運(yùn)算符)。除了最基本的+、-、×、÷、%等運(yùn)算外,還將括號、賦值、類型強(qiáng)制轉(zhuǎn)換等均作為運(yùn)算符。除基本的整型、實(shí)型、字符型類型外,還有指針,結(jié)構(gòu)體、共同體等類型。語法靈活,不太嚴(yán)格。如:數(shù)據(jù)類型可相互通用:整型、字符型通用。2023年2月4日允許直接訪問物理內(nèi)存,能實(shí)現(xiàn)對位的操作。
直接訪問內(nèi)存地址,具有“高”、“低”級語言的功能。生成目標(biāo)代碼質(zhì)量高,執(zhí)行效率高。語言簡潔,可移植性好可移植性優(yōu)于匯編語言。C語言是一種過程化的語言。C語言有優(yōu)秀的實(shí)現(xiàn)工具。微軟公司的MicrosoftVisualC++6.0(VC6.0)和Borland公司的TurboC等。編程集成開發(fā)環(huán)境(IDE)。2023年2月4日1.2C程序的基本結(jié)構(gòu)和書寫風(fēng)格
1.2.1C程序的基本結(jié)構(gòu)
【例1.1】編寫程序在顯示器輸出一行信息:Hello,World!#include<stdio.h>
/*文件包含*/main(){
printf("Hello,World!\n");
/*顯示文本Hello,World!*/}
程序運(yùn)行結(jié)果如下:HelloWorld!
2023年2月4日1.3簡單的C程序設(shè)計(jì)
【例1.2】從鍵盤輸入兩個整數(shù),輸出它們的和。
#include<stdio.h>/*文件包含*/
intsum(inta,intb)/*子函數(shù)及其形式參數(shù)*/
{
intc; /*定義局部變量*/
c=a+b; /*計(jì)算和*/
return(c);/*返回值*/}2023年2月4日main()
/*主函數(shù)名*/{
/*函數(shù)體開始*/
inta,b,c;
/*局部變量類型定義*/
printf("輸入兩個整數(shù):");
/*屏幕提示信息*/
scanf("%d%d",&a,&b);
/*輸入兩個整數(shù)*/
c=sum(a,b);
/*調(diào)用計(jì)算求和的函數(shù)*/
printf("和=%d\n",c);
/*打印總分值*/}
/*函數(shù)體結(jié)束*/程序運(yùn)行情況為:輸入兩個整數(shù):7896↙
和=1742023年2月4日通過實(shí)例,初步看到C的程序結(jié)構(gòu)C程序全部由一個一個的函數(shù)構(gòu)成。至少有且僅有一個主函數(shù)main(),也稱為主程序,其內(nèi)容在其后的一對花括號{}內(nèi),其它函數(shù)可被主函數(shù)調(diào)用或相互調(diào)用。其它函數(shù)可為C函數(shù)庫中函數(shù),也可為用戶定義的函數(shù)。2023年2月4日一個函數(shù)有兩部分組成:
1)函數(shù)的首部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)參數(shù)(形參)名和參數(shù)類型。
例如:intsum(inta,intb)
2)函數(shù)體,即函數(shù)首部下面的大括弧{……}內(nèi)的部分。 函數(shù)體一般包括:聲明部分:在這部分中定義所用到的變量,如果需要,也要對所調(diào)用的函數(shù)進(jìn)行聲明。執(zhí)行部分:有若干個語句組成。在某些情況下也可以沒有聲明部分,甚至可以既無聲明部分,也無執(zhí)行部分。如:
dump() {}2023年2月4日一個C程序總是從main函數(shù)開始執(zhí)行的,而不論main函數(shù)在整個程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序的最后面,或在一些函數(shù)之前,在另一些函數(shù)之后)。函數(shù)由語句構(gòu)成,語句由基本單詞組成。C程序書寫格式自由,一行也可以寫幾個語句,一個語句可以寫在多行上。但為了程序的閱讀和理解,C程序書寫需按照某些書寫規(guī)則,稍后將介紹。2023年2月4日6.
每個語句和數(shù)據(jù)定義的最后必須有一個分號。7.C語言本身沒有輸入、輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成。8.可以用“/*……*/”對C程序中的任何部分作注釋;也可用“//……
”對C程序中的一行作注釋。2023年2月4日1.2.2C程序的書寫風(fēng)格
每一對{}上下對齊;每一對{}都對應(yīng)于段首和段尾;每一行只寫一條語句;每一對{}內(nèi)的語句左對齊;不同的語句段采用縮進(jìn)格式以示區(qū)別;關(guān)鍵語句要有注釋。C程序的書寫格式完全自由,為便于閱讀,養(yǎng)成良好的程序書寫風(fēng)格。2023年2月4日1.3簡單的C程序設(shè)計(jì)
【例1.3】求長方形的周長和面積。
分析數(shù)據(jù)輸入數(shù)據(jù):長、寬輸出數(shù)據(jù):周長、面積算法周長=(長+寬)x2面積=長x寬2023年2月4日程序中涉及的數(shù)據(jù)有兩類常量:計(jì)算周長算法中的“2”變量:長、寬、周長和面積需要用變量來存儲。變量需要有名稱變量名由字母、數(shù)字和下劃線構(gòu)成變量名的第一個字符不能是數(shù)字變量需要有類型整型變量,用int表示2023年2月4日變量定義長、寬兩個變量的名稱用a和b inta; 每行定義一個變量 intb;周長和面積兩個變量的名稱用l和s intl,s; 一行定義兩個變量2023年2月4日算法實(shí)現(xiàn)周長計(jì)算: l=(a+b)*2面積計(jì)算: s=a*b表達(dá)式由變量、常量、運(yùn)算符和括號構(gòu)成算術(shù)運(yùn)算符:加+
減–
乘*除/運(yùn)算符的優(yōu)先級:先乘除后加減賦值語句等號用于賦值,把右邊表達(dá)式的值賦給左邊的變量2023年2月4日intmain() /*定義main函數(shù)*/{ inta; /*定義矩形的長度變量a*/ intb; /*定義矩形的寬度變量b*/ intl,s; /*定義矩形的周長、面積變量l和s*/ a=12; /*給長度賦值12*/ b=8; /*給寬度賦值8*/ l=(a+b)*2; /*計(jì)算矩形周長*/ s=a*b; /*計(jì)算矩形面積*/ return(0); /*main函數(shù)返回*/}代碼如下:2023年2月4日程序中存在的問題程序運(yùn)行后沒有看到結(jié)果變量l和s中得到了計(jì)算結(jié)果,但是沒有輸出它們的值解決辦法在程序中增加輸出語句
printf("l=%ds=%d\n",l,s);printf是C語言的庫函數(shù),它的功能是把程序中變量的值輸出到計(jì)算機(jī)的屏幕上。使用printf前,需要在程序頭部加入下面的語句
#include<stdio.h>2023年2月4日#include<stdio.h>intmain() /*定義main函數(shù)*/{ inta; /*定義矩形的長度變量a*/ intb; /*定義矩形的寬度變量b*/ intl,s; /*定義矩形的周長、面積變量l和s*/ a=12; /*給長度賦值12*/ b=8; /*給寬度賦值8*/ l=(a+b)*2; /*計(jì)算矩形周長*/ s=a*b; /*計(jì)算矩形面積*/ printf(“l(fā)=%ds=%d\n”,l,s); /*輸出結(jié)果*/ return(0); /*main函數(shù)返回*/}運(yùn)行結(jié)果:l=40s=96代碼如下:2023年2月4日程序中存在的不足矩形長、寬在程序中通過賦值的方式給定的,如果它們的值改變了,須重新編譯、連接,才能計(jì)算。解決方法:在程序中增加輸入語句
scanf("%d%d",&a,&b);scanf是C語言的庫函數(shù),它的功能是從鍵盤輸入數(shù)據(jù),把數(shù)據(jù)賦給程序中變量。使用scanf前,需要在程序頭部加入下面的語句
#include<stdio.h>2023年2月4日#include<stdio.h>intmain() /*定義main函數(shù)*/{ inta; /*定義矩形的長度變量a*/ intb; /*定義矩形的寬度變量b*/ intl,s; /*定義矩形的周長、面積變量l和s*/ scanf(“%d%d”,&a,&b); /*從鍵盤輸入長、寬*/ l=(a+b)*2; /*計(jì)算矩形周長*/ s=a*b; /*計(jì)算矩形面積*/ printf(“l(fā)=%ds=%d\n”,l,s); /*輸出結(jié)果*/ return(0); /*main函數(shù)返回*/}運(yùn)行結(jié)果:1012l=44s=120代碼如下:2023年2月4日C語言程序?qū)嵗C
ApacheHTTP服務(wù)器源代碼片段#include"apr.h"#include"apr_strings.h"#include"apr_getopt.h"#include"apr_general.h"#include"apr_lib.h"#include"apr_md5.h"#defineAPR_WANT_STDIO#defineAPR_WANT_STRFUNC#include"apr_want.h"
#defineCORE_PRIVATE#include"ap_config.h"#include"httpd.h"#include"http_main.h"#include"http_log.h"#include"http_config.h"#include"http_core.h"#include"http_vhost.h"#include"apr_uri.h"#include"util_ebcdic.h"#include"ap_mpm.h"#include"mpm_common.h"/*WARNING:Win32bindshttp_main.cdynamicallytotheserver.Pleaseplace*externfunctionsandglobaldatainanotherappropriatemodule.**Mostsignificantmain()globaldatacanbefoundinhttp_config.c*/
2023年2月4日staticvoidshow_mpm_settings(void){intmpm_query_info;apr_status_tretval;printf("ServerMPM:%s\n",ap_show_mpm());retval=ap_mpm_query(AP_MPMQ_IS_THREADED,&mpm_query_info);if(retval==APR_SUCCESS){printf("threaded:");if(mpm_query_info==AP_MPMQ_DYNAMIC){printf("yes(variablethreadcount)\n");}elseif(mpm_query_info==AP_MPMQ_STATIC){printf("yes(fixedthreadcount)\n");}else{printf("no\n");}}retval=ap_mpm_query(AP_MPMQ_IS_FORKED,&mpm_query_info);if(retval==APR_SUCCESS){printf("forked:");if(mpm_query_info==AP_MPMQ_DYNAMIC){printf("yes(variableprocesscount)\n");}elseif(mpm_query_info==AP_MPMQ_STATIC){printf("yes(fixedprocesscount)\n");}else{printf("no\n");}}}2023年2月4日intmain(intargc,constchar*constargv[]){charc;intconfigtestonly=0;constchar*confname=SERVER_CONFIG_FILE;constchar*def_server_root=HTTPD_ROOT;constchar*temp_error_log=NULL;constchar*error;process_rec*process;server_rec*server_conf;apr_pool_t*pglobal;apr_pool_t*pconf;apr_pool_t*plog;/*Pooloflogstreams,reset_after_eachreadofconf*/apr_pool_t*ptemp;/*Poolfortemporaryconfigstuff,resetoften*/apr_pool_t*pcommands;/*Poolfor-D,-Cand-cswitches*/apr_getopt_t*opt;apr_status_trv;module**mod;constchar*optarg;APR_OPTIONAL_FN_TYPE(ap_signal_server)*signal_server;AP_MONCONTROL(0);/*turnoffprofilingofstartup*/apr_app_initialize(&argc,&argv,NULL);process=create_process(argc,argv);pglobal=process->pool;pconf=process->pconf;ap_server_argv0=process->short_name;#ifAPR_CHARSET_EBCDICif(ap_init_ebcdic(pglobal)!=APR_SUCCESS){destroy_and_exit_process(process,1);}#endif2023年2月4日apr_pool_create(&pcommands,pglobal);apr_pool_tag(pcommands,"pcommands");ap_server_pre_read_config=apr_array_make(pcommands,1,sizeof(char*));ap_server_post_read_config=apr_array_make(pcommands,1,sizeof(char*));ap_server_config_defines=apr_array_make(pcommands,1,sizeof(char*));error=ap_setup_prelinked_modules(process);if(error){ap_log_error(APLOG_MARK,APLOG_STARTUP|APLOG_EMERG,0,NULL,"%s:%s",ap_server_argv0,error);destroy_and_exit_process(process,1);}ap_run_rewrite_args(process);
/*MaintainAP_SERVER_BASEARGSlistinhttp_main.htoallowtheMPM*tosafelypassonourargsfromitsrewrite_args()handler.*/apr_getopt_init(&opt,pcommands,process->argc,process->argv);while((rv=apr_getopt(opt,AP_SERVER_BASEARGS,&c,&optarg))==APR_SUCCESS){char**new;switch(c){case'c':new=(char**)apr_array_push(ap_server_post_read_config);*new=apr_pstrdup(pcommands,optarg);break;case'C':new=(char**)apr_array_push(ap_server_pre_read_config);*new=apr_pstrdup(pcommands,optarg);break;2023年2月4日 case'd':def_server_root=optarg;break;case'D':new=(char**)apr_array_push(ap_server_config_defines);*new=apr_pstrdup(pcommands,optarg);
/*Setting-DDUMP_VHOSTSisequivalenttosetting-S*/if(strcmp(optarg,"DUMP_VHOSTS")==0)configtestonly=1;
/*Setting-DDUMP_MODULESisequivalenttosetting-M*/if(strcmp(optarg,"DUMP_MODULES")==0)configtestonly=1;break;}}
/*badcmdlineoption?thenwedie*/if(rv!=APR_EOF||opt->ind<opt->argc){usage(process);}apr_pool_create(&plog,pglobal);apr_pool_tag(plog,"plog");apr_pool_create(&ptemp,pconf);apr_pool_tag(ptemp,"ptemp");
/*Notethatwepreflighttheconfigfileonce*beforereadingit_again_inthemainloop.*Thisallowsthings,logfilesconfiguration*forexample,tosettledown.*/2023年2月4日ap_server_root=def_server_root;if(temp_error_log){ap_replace_stderr_log(process->pool,temp_error_log);}server_conf=ap_read_config(process,ptemp,confname,&ap_conftree);if(!server_conf){destroy_and_exit_process(process,1);}
if(ap_run_pre_config(pconf,plog,ptemp)!=OK){ap_log_error(APLOG_MARK,APLOG_STARTUP|APLOG_ERR,0,NULL,"Pre-configurationfailed");destroy_and_exit_process(process,1);}rv=ap_process_config_tree(server_conf,ap_conftree,p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科貿(mào)職業(yè)學(xué)院《英語閱讀4》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東酒店管理職業(yè)技術(shù)學(xué)院《安全人機(jī)工程課程設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東交通職業(yè)技術(shù)學(xué)院《教師職業(yè)道德規(guī)范》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工商職業(yè)技術(shù)大學(xué)《生物制藥過程自動化技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東第二師范學(xué)院《系統(tǒng)化品牌設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東潮州衛(wèi)生健康職業(yè)學(xué)院《名案研討》2023-2024學(xué)年第一學(xué)期期末試卷
- 《總分析誤差》課件
- 《干部管理技能精座》課件
- 廣安職業(yè)技術(shù)學(xué)院《中醫(yī)眼科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 共青科技職業(yè)學(xué)院《品牌與形象》2023-2024學(xué)年第一學(xué)期期末試卷
- 人教版5年級上冊音樂測試(含答案)
- 中國電信-空地一體5G增強(qiáng)低空網(wǎng)絡(luò)白皮書2024
- 2023-2024學(xué)年江蘇省連云港市贛榆區(qū)九年級(上)期末英語試卷
- 八年級上冊道德與法治期末試卷3(開卷)
- 機(jī)械工程學(xué)科研究前沿
- 朝鮮戶籍制度
- 汽車電器DFMEA-空調(diào)冷暖裝置
- 河北省滄州市2023-2024學(xué)年高一上學(xué)期期末考試語文試題(含答案解析)
- 2024屆四川省成都市中考數(shù)學(xué)第一輪復(fù)習(xí)之中考考點(diǎn)研究《一次函數(shù)與反比例函數(shù)綜合問題》教學(xué)
- 2023AECOPD診治中國專家共識
- 2024-2025年上半學(xué)期(三年級)教科版上冊科學(xué)平時(shí)訓(xùn)練試卷【可打印】
評論
0/150
提交評論