C語言實驗手冊2_第1頁
C語言實驗手冊2_第2頁
C語言實驗手冊2_第3頁
C語言實驗手冊2_第4頁
已閱讀5頁,還剩111頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

ZTE中興軟件技術(shù) 中興軟件技術(shù)南昌培訓(xùn)中心C語言程序設(shè)計學(xué)習(xí)手冊學(xué)號: 姓名: 班級: 老師: TOC\o"1-5"\h\z\o"CurrentDocument"第一講:概述 2\o"CurrentDocument"第二講:數(shù)據(jù)類型 8\o"CurrentDocument"第三講:控制結(jié)構(gòu)(一) 12\o"CurrentDocument"第四講:控制結(jié)構(gòu)(二) 17\o"CurrentDocument"第五講:運算符和表達式 22\o"CurrentDocument"第六講:函數(shù) 28\o"CurrentDocument"第七講:數(shù)組 32\o"CurrentDocument"第ハ講:字符串 38\o"CurrentDocument"第九講:變量類別與編譯預(yù)處理 43\o"CurrentDocument"第十講:指針(一) 51\o"CurrentDocument"第十一講:指針(二) 55\o"CurrentDocument"第十二講:指針(三) 60\o"CurrentDocument"第十三講:指針(四) 66\o"CurrentDocument"第十四講:結(jié)構(gòu)體、共用體和枚舉類型 71\o"CurrentDocument"第十五講:數(shù)據(jù)結(jié)構(gòu)及算法(鏈表) 76\o"CurrentDocument"第十六講:數(shù)據(jù)結(jié)構(gòu)及算法(對列、堆棧) 81\o"CurrentDocument"第十七講:Windows程序設(shè)計初步 85\o"CurrentDocument"第十八講:基于WindowsGDI的圖形程序設(shè)計 90|'/L: "力、、/",j“?“”““?“”?“?“??““?“???“?“??“?”?“?“?““?“?““““?““?“???“““““?““““?“““““?““?“一””ナ\o"CurrentDocument"第二十講:Windows菜單和對話框 97\o"CurrentDocument"第二H—?講:Windows通用控件 101\o"CurrentDocument"第十七講:文件處理 105引言本課程的教學(xué)目的在于使學(xué)生通過學(xué)習(xí)C程序設(shè)計的基本語言知識(數(shù)據(jù)類型、控制結(jié)構(gòu)、語法規(guī)則等)和基本編程技術(shù)(程序分析、算法與編程、常用程序模塊等),對面向過程的高級語言程序設(shè)計技術(shù)有比較完整的理解,并形成程序設(shè)計的初步能力,能自己分析問題,按模塊化程序設(shè)計的要求,編寫結(jié)構(gòu)完整、具有一定難度的控制和出錯處理功能、由多個功能模塊組合形成的小型程序。第一講:概述ー、學(xué)習(xí)目標:了解C語言的簡史、特點理解C語言程序的基本結(jié)構(gòu)熟練應(yīng)用printfO、scanf()函數(shù)的使用規(guī)則、轉(zhuǎn)義符二、學(xué)習(xí)重點:C語言程序的基本結(jié)構(gòu)printf、scanf函數(shù)的使用三、學(xué)習(xí)難點:printf、scanf函數(shù)的使用四、課堂筆記:五、上機試驗:.寫出最簡單的C語言程序——Hello,World!第一步、打開VC++6.0的集成環(huán)境中,點擊菜單欄中文件菜單再選擇新建一項,彈出如下對話框第二步:點擊對話框文件選項,并選中“C++SourceFile”ー項,如圖:第三步:在右邊文件框內(nèi)鍵如本程序的文件名稱“Hello.c”,并可在下邊目錄文本框內(nèi),點擊旁邊帶有省略號的按扭來選擇文件存放的位置,最后點擊確定按扭。彈出如下界面:我開始1eq? enca!音實整手sjv30…I 語音曇村.創(chuàng)天中:stvc++n…4喫。個5!るス33文行第四步:在右邊的編輯器中鍵入以下代碼:#include<stdio.h>voidmain()(printf(*'Helloworld!");)第五步:點擊菜單欄中編譯菜單中編譯Hello.cー項,對該文件進行編譯。第六步:點擊菜單欄中編譯菜單中構(gòu)件Hello.exe一項或在鍵盤上按F7,對該文件進行連接。第七步:點擊菜單欄中編譯菜單中執(zhí)行Hello.exe??項或在鍵盤上同時按住Ctrl+F5,執(zhí)行該文件,并觀察結(jié)果。a.將main改為Main(注意大小寫),再看看程序是否還能運行?b.去掉printf函數(shù)后面的分號,程序還可以運行嗎?c,將#include<stdio.h>這句話去掉看是否能運行?.把上述程序改成以下代碼#include<stdio.h>voidmain()printfC'hello,M);printf("woiicT);}觀察以上代碼的運行結(jié)果是否會顯示在同一行?.轉(zhuǎn)義字符的使用下列語句的運行結(jié)果:primf("I'mastudent\t!you\are\teacher.\n^^);printf(4t\thisisa\book\n^^);primf("a\baskel\ba小b\b");primf("\x64\078\087”);printf(u\872n);printfCヤ872”);printf(4tSomeNum:%%d%c,\081;B');.已知三角形邊長求面積#include<stdio.h>#include<math.h> 頭文件math.h中含函數(shù)sqrt()的定義?/voidmain(){doublea,b,c,s,area;a=3;b=4;c=5;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c)); /?函數(shù)sqrt()用于求一個數(shù)的平方?/printf(n%4.If,%4.1f,%4.If,areais%4.2f\n,',a,b,c,area);.鍵入以下代碼#include<stdio.h>voidmain()printfCThisprintsacharacter,%c\nanumber,%d\nafloating\point,123,456.789);觀察輸出結(jié)果。(提示:printf()函數(shù)占了兩行,在第一行末尾使用了一個反斜杠(ヽ)指出字符串將延續(xù)到下一行,因此編譯器將把這兩行代碼視為一行)六、作業(yè):1.printf和scanf函數(shù)的詳細使用方式答案:答案:.寫出語句scanf(44yy-mm-dd=%d-%d-%d”,&year,&month,&date);從鍵盤上的輸入形式。答案:.指出下列程序的錯誤并改正。(D#include<stdio.h>voidmain();doubledbPi,dbRjdbArea;dbPi=3.14159;dbR=10;dbArea=dbR*dbR*dbPi;dbL=2*dbR*dbPi;printfCk\nate=%d,cir=%f\n,dbArea,dbL);?#include<stdio.h>voidmain()(intnA;printf(\npleaseintputaintegrate:);$canf("%d”,nA);if(nA>0)printf(44nA>0\nM);elseprinlf("nAv=O\n”)5.用C語言編寫ー個程序,實現(xiàn)如下菜單樣式:MenuInputthestudents'namesandscoresSearchscoresofsomestudentsModifyscoresofsomestudentsListallstudents'scoresQuitthesystemPleaseinputyourchoise(1-5):選做題:.編寫ー個程序,從鍵盤上輸入華氏溫度,屏幕顯示對應(yīng)的攝氏溫度。華氏溫度和攝氏溫度轉(zhuǎn)換公式為:c=(f-32)/1.8

.編程實現(xiàn)求三個數(shù)中的最大數(shù)。七、經(jīng)驗積累序號問題描述經(jīng)驗級別1ロロロ2ロロ口3ロロ口4ロロ口5ロロ口6ロロ口7ロロ口8ロロ口9ロロ口10ロロ口第二講:數(shù)據(jù)類型ー、學(xué)習(xí)目標:理解數(shù)值數(shù)據(jù)的表示理解文字數(shù)據(jù)的表示理解C語言中數(shù)據(jù)類型的分類熟練應(yīng)用變量的定義和賦值熟練應(yīng)用表達式中數(shù)據(jù)類型的轉(zhuǎn)換二、學(xué)習(xí)重點:C語言中數(shù)據(jù)類型的分類變量的定義和賦值表達式中數(shù)據(jù)類型的轉(zhuǎn)換三、學(xué)習(xí)難點:表達式中數(shù)據(jù)類型的轉(zhuǎn)換單個字符與字符串存儲區(qū)別四、課堂筆記:五、上機試驗:.仔細思考如下程序,試驗以下三個問題:a.將shortint改為long,看看輸出結(jié)果;b.將signedchar改為unsignedchar,看看輸出結(jié)果;#include<stdio.h>voidmain()(shortintsX;signedcharcCh;sX=32767;cCh=127;printf(**X=%d,Ch=%d,,,sX,cCh);sX=sX+1;cCh=cCh+l;printfCtX=%d,cCh=%d,\sX,cCh);).變量的初始化方式intnA=096;charnB=,\028,;intnC=987654321;intnD=987654321LdoubledbE=123.456;intnX=nY,nY=6;在我們編寫程序時,如果按以上方式編寫,會出現(xiàn)什么問題?.從鍵盤輸入ー個整數(shù),以十進制、ハ進制、十六進制的形式輸出:#include<stdio.h>voidmain()(intnA,nB,nC,nM,nN;nA=ll;nB=011;nC=0x11;nM=65;nN=97;printf("十進制11等于%d,ハ進制11等于%d,十六進制11等于%d,\n”,nA,nB,nC);printff十進制ハ進制十六進制字符、ガ);printf(M65 %〇 %x %c,\n”,nM,nM,nM);printff97 %o %x %c,\n",nN,nN,nN);)4.強制類型轉(zhuǎn)換:運行如下程序段的觀察輸出結(jié)果:charcM=100,cCh=,a,;intnA=5,nB=3;doubledbC=2.5,dbD;dbD=nB/2+(int)(nA/2.0+cM/,\062,+cCh*2)/2.0cCh=cCh+b/1.5;printf(*<dbD=%d,cCh=%c\n,\dbD,cCh);5.輸入下列程序,用于輸入ー個學(xué)生的姓名、學(xué)號、英語、數(shù)學(xué)、計算機成績,輸出學(xué)生姓名、學(xué)號和平均成績。#include<stdio.h>voidmain()(charcName[31];/?數(shù)組cName[31]最多可以放30個字符或15個漢字?/intnEng,nMath,nComp,nNum;doubledbAver;printf(''Pleaseinputthestudent'sname:");scanf("%sn,cName);/?字符串用格式符“%s”,并且數(shù)組名cName前不需要取址符"&”*/printf("Pleaseinputthestudent'sID:");scanf("%d'\&cNum);printf("Pleaseinputscores(Englishmathcomputer):");scanf("%d%d%d",&nEng,&nMath,&nComp);dbAver=(nEng+nMath+nComp)/3.0;printf("thestudent'snamedis%s,hisIDis%d,hisaveragescoreis%.If\n",cName,cNum,dbAver);}六、作業(yè):.請寫出C語言中基本的數(shù)據(jù)類型已經(jīng)它們在內(nèi)存中所占的字節(jié)數(shù)。答案:.請問charcA=H與字符串"a”在內(nèi)存中是否有區(qū)別?如有請寫出它們的區(qū)別。答案:.請問在編程過程中什么時候用自動類型轉(zhuǎn)換,什么時候用強制類型轉(zhuǎn)換?答案:.編寫輸出字符〇、9、A、Z、a、z的ASCH碼的十進制、ハ進制和十六進制的表示形式的程序。.參考上機試驗中例5編寫ー個程序,輸入2個學(xué)生的姓名、學(xué)號、英語、數(shù)學(xué)、計算機成績,輸出這兩個學(xué)生的姓名、學(xué)號和平均分。選做題:.編寫ー個程序輸出5!、10!的結(jié)果七、經(jīng)驗積累序號問題描述經(jīng)驗級別1□ロロ2□□□3□□□4□ロロ5□□□6□□□7□□□8□□□9□□□10□□□第三講:控制結(jié)構(gòu)(一)ー、學(xué)習(xí)目標:了解程序設(shè)計的…般方法、結(jié)構(gòu)化程序設(shè)計熟悉順序結(jié)構(gòu)、簡單程序流程圖的畫法熟練應(yīng)用if語句的使用規(guī)則以及相應(yīng)的程序流程熟練應(yīng)用switch語句的使用規(guī)則及相應(yīng)的程序流程if語句的使用規(guī)則以及相應(yīng)的程序流程switch語句的使用規(guī)則及相應(yīng)的程序流程三、學(xué)習(xí)難點:if語句的嵌套的應(yīng)用四、課堂筆記:五、上機試驗:.求ax*x+bx+c=O方程的解。a、b、c由鍵盤輸入,且b*b-4ac>0。#include<stdio.h>#include<math.h>voidmain()floatユb,c,p,xl,x2;scanf(ua=%f,b=%f,c=%f',&a,&b,&c);p=sqrt(b*b-4*a*c);xl=(-b+p)/(2*a);x2=(-b-p)/(2*a);printf(nxl=%6.2f,x2=%6.2f\n\xl,x2);).編寫程序,輸入ー個x,按照函數(shù)要求輸出y值。#include<stdio.h>voidmain(){intx,y;scanf(',%dn,&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=l;printf(ux=%d,y=%d\n",x,y);).仔細閱讀如下程序段,編譯運行:intnX=5,nY=3,nZ=2;if(nX>6)printf("******\n*);if(nY=3)printf('用#####\n");elseif(nZ<3)printf(“$$$$$$\n“);elseprintf(“%%%%%%\n");.閱讀下列兩個程序段,看看運行結(jié)果:a、intnX=0,nY=1;if(nX&&nY)printW"*********\n'');elseprintf("######\n");printf("nX=%d,nY=%d”,nX,nY);b、intnX=0,nY=1;if(nX++=0II++nY=2)printf("******\n");elseprintf("######\n^^);printfC'nX=%d,nY=%ザ,nX,nY);.先不編譯,寫出如下程序的運行結(jié)果:#include<stdio.h>voidmain()intnX=l,nY=2;switch(nX){case1:switch(nY){printf("aaaaaa\n");break;printf(ttbbbbbb\nM);break;)case2:switch(nY-l){printf(t4cccccc\n^^);break;printf("dddddd\n'');break;)default:printf(4tnX=%d\n,nY=%d",nX,nY);})ー個字符,判斷是數(shù)字、英文字符還是其它字符#include<stdio.h>voidmain()(charcCh;scanf("%c”,&cCh);/*在C中"并且"含義即"邏輯與"用"&&"表示,"或者"含義即"邏輯或"用"『‘表示?/if(cCh>='0'&&cCh<='9,) /?等價與if(cCh>=48&&cCh<=57)*/printf("%cisadigit\n",cCh);elseif((cCh>='A'&&cCh<='Z')II(cCh>='a'&&cCh<='z,))/*等價與if((cCh>=65&&cCh<=90)ll(cCh>=97&&cCh<=122))*/printf(M%cisaletter\nu,cCh);elseprintf(M%canothercharacter.\n'\cCh);)六、作業(yè):.請指出下列語句中else與誰匹配(nN、nA、nB、nZ都為整形)if(nN>0)if(nA>nB)nZ=nA;elsenZ=nB;答案:.考慮下面程序輸出結(jié)果:voidmain()|intnX=100,nA=10,nB=20;intnTempl=5,nTemp2=0;if(nA<nB)if(nB!=15)if(inTemp1)nX=l;elseif(nTemp2)nX=10;printf("%d”,nX);)答案:.判斷ax?+bx+c=0方程有幾個解,如果有解則輸出。系數(shù)a、b、c由鍵盤輸入。.輸入兩數(shù)并判斷其大小關(guān)系選做題:.編寫ー個程序以統(tǒng)計各個數(shù)字、空白符及其他所有字符出現(xiàn)的次數(shù)。七、經(jīng)驗積累序號問題描述經(jīng)驗級別1ロロロ2ロロ口3ロロ口4ロロ口5ロロロ6ロロ口7ロロ口8ロロ口9ロロ口10ロロ口第四講:控制結(jié)構(gòu)(二)ー、學(xué)習(xí)目標:.理解while語句的使用規(guī)則和相應(yīng)程序流程.理解do-while語句的使用規(guī)則和相應(yīng)程序流程.理解for語句的使用規(guī)則和相應(yīng)程序流程.熟練應(yīng)用各種循環(huán)語句的組合使用.理解break、continue語句的使用特性以及應(yīng)用范疇.了解goto語句的使用方法二、學(xué)習(xí)重點:各種循環(huán)語句的組合使用break、continue語句的使用特性三、學(xué)習(xí)難點:for語句的循環(huán)嵌套五、上機試驗:.求1+2+ +100的結(jié)果。#include<stdio.h>voidmain()(intsum,counter;sum=0;counten=l;do(sum=sum+counter;counter=counter+l;)while(counter<=100);printfC*1+2+3+ +100=%d\nK,counter);).將下列程序段分別用C語言的for、while、d〇…whi加結(jié)構(gòu)改寫,使其能產(chǎn)生相同的運行結(jié)果:intnX=l;abc:printfC4######nX=%d\n,\nX);nX++;if(nX<5)gotoabc;.寫出下列程序的輸出結(jié)果:#include<stdio.h>voidmain(){intnX,nY;for(nY=0,nX=l;nX<4;nX++)(if(nY=2){nX-=nY;continue;}switch(nX){printf(*4x=%d'\nX);continue;printf("x+y=%d”,nX+nY);break;printf(4*x*y=%d,\nX*nY);continue;printf("x?y=%d”,nX-nY);break;)printf("y=%d”,++nY);))程序段的輸出結(jié)果:intnX=l,nY=0;do{while(nX==0){printf("y=%d\n”,nY);nY++;if(nY>3)break;)printf("x=%d\n”,nX);if(nY==4)continue;nX--;}while(!nX);、空白符及其他字符出現(xiàn)的次數(shù)#include<stdio.h>voidmain()(intnCh,nl,nWhite,nNother;intnDigit[10];〃變量nDigit聲明為有10個整形數(shù)構(gòu)成的數(shù)組nWhite=nNother=0;for(nl=0;nl<10;4-+nl)nDigit[nI]=O;while((nCh=getchar())!=EOF)if(nCh>=,0,&&nCh<=,9,)++nDigit[nCh-*0*];elseif(nCh==,,llnCh=,\n,llnCh==,\f)++nWhite;else++nNother;printf(4kDigits=");for(nl=0;nl<10;++nI)printf(u%d,,,nDigit[i]);printf(44,whitespace=%d,other=%d\n,\nWhite,nNother);:12TOC\o"1-5"\h\z12 312 3 412 3 4 512 3 4 5 612 3 4 5 6712345678123456789#include<stdio.h>voidmain()(intm,n;for(n=1;n<=9;n=n+1){for(m=1;m<=n;m=m+1)printグ%-4d”,m);printf(H\nM); /?一行結(jié)束需要換行?/7.輸出3~100的所有素數(shù)。#include<stdio.h>voidmain()(intnNum,nI;for(nNum=3;nNum<=100;nNum=nNum+l){for(nI=2;nI<=nNum-1;nl=nl+1)if(nNum%nI==0)break;if(nI>=nNum)printf(M%d\t",nNum);六、作業(yè):.請寫出break語句和continue語句的區(qū)別。答案:.計算Fibonacci數(shù)列的前30項,并輸出。.求水仙花數(shù)。如果一個三位數(shù)的百位數(shù)、十位數(shù)和個位數(shù)的立方和等于這個數(shù)則該數(shù)為水仙花數(shù)。.從鍵盤輸入ー個數(shù),求出這個數(shù)的階乘(10的階乘即為10*9*8モ..*2*1).設(shè)計程序,在屏幕上輸出如下圖形:****.求輸入的十個整數(shù)中正數(shù)的個數(shù)及其平均值.設(shè)計程序,計算公式的值:1/1+2/(1+2)+3/(1+2+3)+...+10/(1+2+3+...+10)七、經(jīng)驗積累序號問題描述經(jīng)驗級別1ロロロ2ロロ口3ロロ口4ロロ口5ロロ口6ロロ口7ロロ口8ロロ口9ロロ口10ロロ口第五講:運算符和表達式學(xué)習(xí)目標:熟練應(yīng)用各種算術(shù)運算符的優(yōu)先級和結(jié)合性熟練應(yīng)用各關(guān)系運算符的優(yōu)先級和關(guān)系表達式值的判定熟練應(yīng)用各邏輯運算符的優(yōu)先級和邏輯表達式值的判定熟練應(yīng)用賦值運算符的結(jié)合性和優(yōu)先級熟練應(yīng)用自增/減運算符的作用、自增/減運算的前置方式和后置方式的區(qū)別理解逗號表達式的作用及其值的計算了解C語言的常用運算符的優(yōu)先級學(xué)習(xí)重點:算術(shù)運算符的優(yōu)先級和結(jié)合性關(guān)系運算符的優(yōu)先級和關(guān)系表達式值的判定邏輯運算符的優(yōu)先級和邏輯表達式值的判定?學(xué)習(xí)難點:?自增/減運算符的作用、自增/減運算的前置方式和后置方式的區(qū)別四、課堂筆記:五、上機試驗:.生成一個簡單的密電碼。輸入一段英文,然后按照下列規(guī)律轉(zhuǎn)換:英文字母變?yōu)槠浜蟮牡?個字母,例如A變?yōu)镕,B變?yōu)镚,直到U變?yōu)閆后,V再變?yōu)锳,以此類推直到Z變?yōu)镋。非英文字母的字符不變。直到輸入換行結(jié)束。此種方法可以生成最簡單的密電碼。ttinclude<stdio.h>voidmain(){charcCh;doscanf(*%c*,&cCh);if((cCh>=,a'&&cChく='z')I|(cCh>='A'&&cCh<='Z?))(cCh=cCh+5;if(cCh>,Z*&&cCh<='Z'+51IcCh>'z')cCh-=26;)printf("%c”,cCh);}while(cCh!=,\n);).輸入兩個正整數(shù)m和n,求它們的最大公約數(shù)算法:1)求m除n的余數(shù)r;2)若r等于0,n為最大公約數(shù);3)否則令m=n,n=r,回到第1步。#include<stdio.h>voidmain(){intnM,nN,nR;printf("PleaseinputTwonumbers:");scanf("%d%d",&nM,&nN);while(1){nR=nM%nN;if(nR==0)break;else(nM二nN;nN二nR;}printf("%disthegreastestcommondivisor\n",n);.上機運行觀察下列程序段的運行結(jié)果:int=2,nY=3,nA=4,nB=5;if(++nX==nY-)(if(nX!=0IInY+=5)printf(44x=%d,y=%d\n”,nX,nY);elseprintf(t4a=%d,b=%d\n”,nA,nB);}else{if(nA-=4&&++nB)printf(44x=%d,y=%d\n”,nX,nY);elseif(nA++IInB-)printf(44a=%d,b=%d\n”,nA,nB);}printf("x=%d,y=%d,a=%d,b=%d\n",nX,nY,nA,nB);.自增運算符和自減運算符的演示示例。#include<stdio.h>voidmain()(intnA1,nA2,nA3,nA4,nB1,nB2,nB3,nB4;nAl=nA2=nA3=nA4=10;nBl=(nAl++)+(nAl++)+(nAl++);nB2=(++nA2)+(++nA2)+(++nA2);nB3=(nA3-)+(nA3-)+(nA3-);nB4=(-nA4)+(—nA4)+(—nA4);printf(na1=%d,a2=%d,b1=%d,b2=%d\n",nAl,nA2,nBl,nB2);printf("a3=%d,a4=%d,b3=%d,b4=%d\n",nA3,nA4,nB3,nB4);).統(tǒng)計1?50之間不能被3整除的數(shù)的個數(shù)并輸出這些數(shù)。#include<stdio.h>voidmain()(intn,s;for(n=1,s=0;n<=20;n=n+1){if(n%3==0)continue;printf("%d\t",n);s=s+l;)printf("\ntotal:%d\n",s);.計算1山3+1/5?1/7+…直到最后一項的絕對值小于le-6o#include<stdio.h>voidmain()(intn=l;floatx=l,t=l,s=0; /*x控制通項正負號,t為通項值?/while(t>=le-6){t=1.0/(2*n-l);s=s+x*t;x=(-l)*x;n=n+l;)printf(Hl-l/3+l/5-l/7+...=%f\nn,s);)六、作業(yè):.計算出下面表達式的值:intnX=2,nY=4,nZ=5,nA=6,nB=7;(nX==3&&nY>4II!nZ==0)+(nA+nB)=(nY-nX>=nB-2)答案:.計算以下代碼的循環(huán)的執(zhí)行次數(shù):intnX=-l;do{nX-}while(!++nX==0)答案:.如下表達式可以在C語言中運行嗎?如果能,寫出運算結(jié)果,不過不能,說說原因:intnX=1,nY=2,nZ=3;nX+=nX-=nX*=nX+=3;nY-=nY+=nY/=nY*=nY-2;nZ+=nZ-=nZ*2=nZ-1;答案:.寫出如下程序段的運行結(jié)果:intnX=1,nY=2,nZ=3;nX+nY+nZ<=5?printf("Hello,Computer!\n"):nZ>=nX+nY?printf("Hello,Programmer!\n"):printfC4Hello,CLanguageprintf(nX==1?"%d####'n”:“%d$$$$\n”,(nZ-2,nY<3));printf(4*nX=%d,nY=%d,nZ=%d\n'\(nX<3),(nZ<6,nY=nX+nY,nY>3),(nZ*=4,--nZ,nZ=2),nX+nY+nZ);答案:.從鍵盤輸入一串二進制數(shù)(比如“OHOIOUOOIOOKH"):將它轉(zhuǎn)換成十進制輸出;答案:.輸入ー個全部是字母的字符串,將其中的大寫字母全部轉(zhuǎn)化為小寫字母,小寫字母全部轉(zhuǎn)化為大寫字母;.從鍵盤輸入ー個人的生日,再輸入當(dāng)前時間,計算這個人迄今為止活的天數(shù);.在屏幕打印輸出2000年一年當(dāng)中所有天數(shù)為質(zhì)數(shù)的日期(如2月6日是第37天,應(yīng)該被輸出);七、經(jīng)驗積累序號問題描述經(jīng)驗級別1□ロロ2ロロ口3ロロ口4ロロ口5ロロ口6ロロ口7ロロ口8ロロ口9ロロ口10□□□第六講:函數(shù)ー、學(xué)習(xí)目標:了解函數(shù)的分類和執(zhí)行過程理解函數(shù)定義的一般形式、函數(shù)的聲明熟練應(yīng)用函數(shù)調(diào)用的一般形式理解函數(shù)形參和實參的關(guān)系、函數(shù)的返回值理解函數(shù)的嵌套調(diào)用和遞歸調(diào)用二、學(xué)習(xí)重點:函數(shù)定義的一般形式、函數(shù)的聲明函數(shù)調(diào)用的一般形式函數(shù)形參和實參的關(guān)系、函數(shù)的返回值三、學(xué)習(xí)難點:函數(shù)的嵌套調(diào)用和遞歸調(diào)用四、課堂筆記:1.求兩個數(shù)的階乘之和。#includevstdio.h〉/?文件包含編譯預(yù)處理命令?/longsum(intnNuml,intnNum2);/?函數(shù)類型說明?/longfactorial(intnN);voidmain(){intnNl,nN2;longISum;scanf(,,%d,%d,,,&nNl,&nN2);lSum=sum(nNl,nN2);/?函數(shù)調(diào)用*/printf("sum=%1d",lSum);)longsum(intnNuml,intnNum2)/?函數(shù)定義?/(longITemplJTemp2;ITempl=factorial(nNuml);/*函數(shù)調(diào)用*/!Temp2=factorial(nNum2);return(lTempl+lTemp2);/?函數(shù)返回值?/}/?求階乘?/longfactorial(intnN){longlRtn=l;intnl;for(nl=1;nl<=n;nl++)1Rtn*=nI;retum(lRln);)2,如下函數(shù)能完成主調(diào)函數(shù)傳過來的三個數(shù)從大到小排序目的嗎?為什么?voidfun(intnNuml,intnNum2,intnNum3){intnTemp;if(nNuml<nNum2)nTemp=nNuml,nNuml=nNum2,nNum2=tnTemp;if(nNum2<nNum3)nTemp=nNum2,nNum2=nNum3,nNum3=nTemp;if(nNuml<nNum3)nTemp=nNuml,nNuml=nNum3,nNum3=nTemp;)voidmain()(intnNuml,nNum2,nNum3;scanf("%d,%d,%d”,&nNuml,&nNum2,&nNum3);fun(nNuml,nNum2,nNum3);printf(**%d,%d,%d,\nNuml,nNum2,nNum3);).連續(xù)三次調(diào)用如下函數(shù),輸出結(jié)果如何?#include<stdio.h>voidfun(){staticintnS=6;intnX=3,nY=4;nS+=++nX;if(nS<10)nY+=6;elsenY-=6;nS+=nY/3;printf("x=%d,y=%d,s=%d\n”,nX,nY,nS);}.已知遞歸公式,輸入x值,輸出qn(x)的前10項值。TOC\o"1-5"\h\zr1 (n=0)qn(x)=Xx (n=l)I2*x*qn-i(x)-qn.2(x) (n>l)#include<stdio.h>doubleq(doubledbX,intnNum)(if(nNum==0)return1.0;elseif(nNum=l)returndbX;elsereturn(2*dbX*q(dbX,nNum-l)-q(dbX,nNum-2));voidmain()doubledbX;intnl;scanf(H%f;&dbX);for(nl=0;nl<10;nI++)printf(n%fM,q(dbX,nI));printf(M\n");)六、作業(yè):1、談?wù)労瘮?shù)聲明和定義的區(qū)別:2、函數(shù)的聲明都寫在main函數(shù)后面行嗎?寫在main函數(shù)內(nèi)部呢?3、函數(shù)調(diào)用進行參數(shù)傳遞時,如何區(qū)分傳值與傳地址?.寫出如下程序輸出結(jié)果:#include<stdio.h>intfun(intnX,intnY)(if(nX>nY)returnnX;returnnY;)voidmain(){intnX=2,nY=3;printf('tresult=%d\nM,fun(nX++,nY+=2));printf(*4result=%d\nM,fun(nY+nX,nX=l));).編寫ー個能打印1000以內(nèi)所有水仙花數(shù)的函數(shù)(比如水仙花數(shù)153具有的性質(zhì)為:1*1*1+5*5*5+3*3*3=153).編寫ー個函數(shù),向該函數(shù)傳入ー個整數(shù)n,則該函數(shù)打印1+2+3+…+n的值.如下是斐波納契數(shù)列的前幾項:1,1,2,3,5,8,13….,編寫函數(shù),要求向該函數(shù)傳入ー個整數(shù)n,函數(shù)返回數(shù)列第n項.編寫函數(shù),打印如下形式的楊輝三角:1111 2 13164110.使用遞歸算法編寫計算1+2+3+….m的函數(shù)。七、經(jīng)驗積累序號問題描述經(jīng)驗級別1ロロロ2ロロ口3ロロ口4ロロ口5ロロ口6ロロ口7ロロ口8ロロ口9ロロ口10ロロ口第七講:數(shù)組ー、學(xué)習(xí)目標:熟悉ー維數(shù)組的定義和初始化理解ー維數(shù)組的存儲方式熟悉ー維數(shù)組的引用熟悉二維數(shù)組的定義和初始化理解二維數(shù)組的存儲方式熟悉二維數(shù)組的引用熟練應(yīng)用數(shù)組作為函數(shù)參數(shù)時的傳參方式:數(shù)組元素作參數(shù):數(shù)組名作參數(shù)二、學(xué)習(xí)重點:ー維數(shù)組的定義和初始化二維數(shù)組的定義和初始化二維數(shù)組的存儲方式函數(shù)參數(shù)時的傳參方式:數(shù)組名作參數(shù)三、學(xué)習(xí)難點:二維數(shù)組的存儲方式函數(shù)參數(shù)時的傳參方式:數(shù)組名作參數(shù)四、課堂筆記:1,將數(shù)字0ー4放入一個整型數(shù)組,并逆序輸出數(shù)組。#include<stdio.h>voidmain(){inti,a[5];/?給數(shù)組中元素賦值?/for(i=0;i<5;i++)a[i]=i;/?逆序輸出數(shù)組中元素值?/for(i=4;i>=0;i—)printf("%3dM,a[i]);printf(u\nH);).輸入10個整數(shù),輸出最大數(shù)。#include<stdio.h>voidmain()(inti,array|10],big;/?給數(shù)組中所有元素賦值?/for(i=0;i<10;i++)scanf(H%d",&array[i]);/?找出數(shù)組中最大的元素?/big=array[O];for(i=0;i<10;i++)if(array[i]>big)big=array[i];printf(MThebiggestis%3d\n”,big);).求Fibonacci數(shù)列的前20項。#include<stdio.h>voidmain()(inti,f[20]={l,1};/?給出Fibonacci數(shù)列的前2項?//*根據(jù)公式由Fibonacci數(shù)列前2項求出其余18項?/for(i=2;i<20;i++)f[i]=f[i-l]+f[i-2];/?輸出Fibonacci數(shù)列的前20項?/for(i=0;i<20;i-H-){if(i%5=0)printf("\n");/*控制一行輸出5個元素?/printf("%10d",f[i]);}}.已知一個ー維數(shù)組a[ll]中有10個數(shù),求出其中前n個數(shù)的和。其中n由鍵盤輸入。ttinclude<stdio.h>intsum(intnArray[],intn)Iinti,sumニ〇;for(i二〇;iくn;i++)sum+=nArray[i];returnsum;}voidmain(){intnNum,a[10]={l,2,3,4,5,6,7,8,9,10};scanf("%d”,&nNum);printf[%d\n”,sum(a,nNum));).二維數(shù)組中最大元素值及其行列號#include<stdio.h>voidmain(){inta[3][4]={{1,2,3,4},(9,8,7,6),{-10,10,-5,2}};inti,j,row=0,colum二〇,max;max二a[〇][〇];for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max)max=a[i][j];row=i;colum=j;}printf("max=%d,row二%d,\colum=%d\n",max,row,colum);六、上機作業(yè):.如下代碼有錯嗎?如果有錯,錯在哪里?如果正確,寫出數(shù)組中所有元素的值:inta[5]={1,23,4,5,6);intb[2+3]={1,2,3};intc[5]={,,3,4);intd[3,3]={{l,2,3},{4,5,6),(7,8,9});inte[2][3]={{l},{2},{3}};intf[3][2]={1,2,3};intg[2][3]={{,,2},{l,0,0});答案:.用如下程序段對數(shù)組進行賦值,行嗎?為什么?inta[5],b[5],c[5]i;for(i=l;i<=5;i++) a[i]=0;b=a;c={l,2,3,4,5};答案:.使如下程序能實現(xiàn)數(shù)組Array中所有元素前后互換:#include<stdio.h>voidmain(){intArray[10]={1,234,5,6,7,8,9,0};intn,t;for(n=0;n< ;n++){答案:.判斷如下程序段是否合法,如果合法,則寫出程序段運行后,數(shù)組a中元素的值:inta[5][5]={0},n;for(n=0;n<25;n++)a|0][n]=n*2;答案:.在ー個程序總需要一個函數(shù)voidfun(inttarget[],intsource[],intnCount)來實現(xiàn)將數(shù)組source中的元素拷貝到數(shù)組target中,拷貝結(jié)果是使數(shù)組target中元素的順序與source中相反:答案:.編寫程序,定義數(shù)組inta[10],從鍵盤輸入10個整數(shù),分別使用冒泡法和選擇法對數(shù)組排序,使數(shù)組中的元素從大到小排列。.已知一個二維數(shù)組inta[5][3],里面的元素已經(jīng)被初始化為大小不等的值。編寫代碼,對此二維數(shù)組行排序,排序結(jié)果是數(shù)組的第。行平均值最小,第4行平均值最大。.存在一個二維數(shù)組inta[5][5],編寫代碼對數(shù)組a實現(xiàn)行和列的互換,即使行列號為ij的元素和行列號為j,i的元素互換。選做題:.編寫程序,實現(xiàn)矩陣乘法:提示:定義三個矩陣:inta[x][y],b[y][x],c[x][x];?其中,x和y都是常量。c=a*b,乘法計算時有公式:c[i][j]=a[i][O]*b[O]|j]+a[i][l]*b[l]|j]+...+a[i][y-l]*b[y-l][j]o.從鍵盤輸入20個隨機數(shù)到數(shù)組inia[20]中,不對數(shù)組排序,也不使用其它數(shù)組,編寫代碼使程序能輸出數(shù)組中的最大元素、最小元素以及第二大元素、第二小元素。第ハ講:字符串ー、內(nèi)容及目標:.掌握單個字符的輸入輸出函數(shù):getchar()和purchar().理解C語言字符數(shù)組和字符串的區(qū)別和聯(lián)系.掌握字符串的輸入和輸出函數(shù):puts。和gets。.熟練應(yīng)用字符串操作函數(shù):strlen。、strcpy()、strcat。、strcmpO、strlwrQ和strupr().理解二維字符串?dāng)?shù)組的初始化'輸入輸出二、學(xué)習(xí)重點:C語言字符數(shù)組和字符串的區(qū)別和聯(lián)系字符串操作函數(shù):strlen。、strcpy()>strcat。、strcmp。、strlwrQ和strupK)二維字符串?dāng)?shù)組的初始化、輸入輸出三、學(xué)習(xí)難點:二維字符串?dāng)?shù)組的初始化'輸入輸出四、課堂筆記:例1按照如下形式輸出40行,要求每10行暫停,按回車鍵后繼續(xù)。*******#include<stdio.h>voidmain()(introw,col;for(row=1;row<=40;row++){for(col=l;col<=i;col++)printf('*");printf('\n");if(row%10-0&&row!=40)Iprintf(〃請按回車鍵繼續(xù)つ;getchar();})}例2函數(shù)putchar。的使用。#include<stdio.h>voidmain()charc=charc=,A';intn='B';putchar(c);putchar(n);putchar('C');putchar('\x44');putchar('\n);/?輸出字符型變量?//?輸出整型變量?//?輸出字符型常量?//?輸出字符D*//*輸出回車*/printf(/r%c%cC\x44\n*,c,n);}.從鍵盤輸入三個學(xué)生姓名,并輸出。#include<stdio.h>#include<string.h>voidmain(){charname[3][30];inti;for(i二〇;iく3;i++)gets(name[i]); /*name[i]是ー個ー維字符數(shù)組?/for(i=0;i<3;i++)printf("%s\n”,name[i]);}.輸入英文月份單詞,輸出該單詞代表的對應(yīng)月的數(shù)字表現(xiàn)形式。#include<stdio.h>#include<string.h>/?查找字符串name是否在含有m個字符串的數(shù)組list中,如果存在返回值是它在數(shù)組中的下標,否則返回值為m*/intsearch(char1ist[][20],charname[],intm)!inti;for(i=0;i<m;i++)if(strcmpdist[i],name)==O)break;returni;}voidmain(){charmonth_list[12][20]={"January","February",z,March","April”,“May","June","July","August",""September","October","November","December");charmonth[20];intn;gets(month);n=search(month_list,month,12);if(n<12)printf("%s表示%d月、n",month,n+1);elseprintf("查無此單詞、n");).編寫ー個函數(shù)string_compare()完成strcmpO的作用,并驗證。#include<stdio.h>^include<string.h>intstringcompare(charstringl[],charstring2[]){inti=0;while(stringl[i]==string2[i]&&stringl[i]!二‘、〇')i++;returnstringl[i]-string2[i];}voidmain()Icharstrl[]="abc",str2[]="abc";printf("%d,%d\n",strcmp(strl,str2),string_compare(strl,str2));I.如下定義方式合乎C語言語法嗎?chara[5]={4a\,b,,,c\,d,;e,};charb[5]={t4abcdeM};charc[5]={"abcd'〇”};chard[]="abcde";chare[]="\Oabcde";總結(jié):.寫出如下程序段的輸出結(jié)果:chara[]="abc\n\Odef\O";charb[5O]="abc\b\b\b";charc[20]="abc\0",d[10]="der;printf(44%d\n",strlen(a));printf(44%d\n",strlen(b));printf(strcat(c,d));總結(jié):.如下語句能實現(xiàn)預(yù)期功能嗎?charah[2O],bh[2O]=''abcd'',ch[2O]=''efgh'',dh="abcdefgh'';ahゴabcdefg”; 〃在ah中填充字符串printf(“%s”,++bh); 〃在屏幕打印“bed”printf("%s”,bh+ch); 〃在屏幕打印abcdefghdh=dh-ch; 〃去掉dh后面一截總結(jié):.函數(shù)對比:printf("%s") <=========>puts()scanf("%s") <============>gets()這兩組函數(shù)在字符串的輸出輸入各有什么優(yōu)缺點?總結(jié):.如下語句可能存在錯誤,如果有,指出并改正,如果沒有,寫出運行結(jié)果:charch[3][5]={{,a','b','c','d',,e'),"abcde","bcde"};printf("%s\n",ch[〇]);printf(u%s\n,,,ch[l]);printf(**%s\n,,,ch[2]);總結(jié):.編寫程序,實現(xiàn)C語言庫函數(shù)intstrlen(charロ)、intstrcmp(char口,charロ):.編寫程序,實現(xiàn)功能:將字符串b中指定個數(shù)的字符拷貝到字符串a(chǎn)的后面:.有字符串charch[k"abdfabcdface”;編寫程序,從字符串ch中刪除字符‘a(chǎn),:.有兩個字符串chara[30],b[10];分別存放有若干字符,編寫ー個函數(shù),驗證字符串a(chǎn)中是否包含字符串b,.同上題,從字符串a(chǎn)中刪除包含的字符串b(a中可能不止包含一次b)第九講:變量類別與編譯預(yù)處理ー、內(nèi)容及目標:.掌握全局變量、局部變量的定義、特點.理解全局變量的應(yīng)用.掌握C語言變量的各種存儲類型:存儲形式和使用注意事項.熟練應(yīng)用不帶參數(shù)和帶參數(shù)宏定義.掌握文件包含的作用和使用方法二、學(xué)習(xí)重點全局變量、局部變量的定義、特點.C語言變量的各種存儲類型宏定義的含義和作用.全局變量、局部變量的應(yīng)用。宏定義的含義和作用.四、課堂筆記:五、上機試驗:.使用靜態(tài)變量輸出1到20的階乘。ttinclude<stdio.h>longf(n){staticlongs=l;s=s*n;returns;}voidmain(){inti;for(i=l;i<=10;i++)printf("%ld\t”,f(i));2使用auto定義變量的用法#include"stdio.h"voidmain()inti,num;numz=2;for(i二〇;iく3;i++){printf(,z\40:Thenumequal%d\n”,num);num++;(autointnum=l;printf("\40:Theinternalblocknumequal%d\n,num);num++;))}.external的使用用法。ttinclude"stdio.h"inta,b,c;voidadd()(inta;a=3;c=a+b;}voidmain()(a=b=4;add();printf("Thevalueofcisequalto%d\n”,c);}.不帶參數(shù)的宏#define命令#defineLAG>#defineSMA<#defineEQ==#include"stdio.h"voidmain()(inti=10;intj=20;if(iLAGj)printf(zz\40:%dlargerthan%d\n\i,j);elseif(iEQj)printf(^\40:%dequalto%d\n*,i,j);else(if(iSMAj)printf(*\40:%dsmallerthan%d\n”,i,j);elseprintf(*\40:Nosuchvalue.\n");)}}.帶參數(shù)宏#define命令#include"stdio.h"#defineTRUE1^defineFALSE0#defineSQ(x)(x)*(x)voidmain(){intnum;intagain=l;printf(*\40:Programwillstopifinputvaluelessthan50.\n");while(again){printf(,z\40:Pleaseinputnumber=>");scanf("%d”,&num);printfC"\40:Thesquareforthisnumberis%d\n”,SQ(num));if(num>=50)again=TRUE;elseagain=FALSE;)).#if#ifdef和#ifndef的綜合應(yīng)用。#include"stdio.h"#defineMAX#defineMAXIMUM(x,y)(x>y)?x:y#defineMINIMUM(x,y)(x>y)?y:xvoidmain()(inta=10,b=20;#ifdefMAXprintf(z,\40:Thelargeroneis%d\n*,MAXIMUM(a,b));#elseprintf(*\40:Theloweroneis%d\n*,MINIMUM(a,b));#endifttifndefMINttifndefMINprintfC\40:The#elseprintf(*\40:Thettendif#undefMAXttifdefMAXprintf("\40:The#elseprintf(*\40:The#endif#defineMINttifndefMINprintf(*\40:The#elseprintfC\40:The#endif}7.^include的應(yīng)用練習(xí)test,h文件如下:loweroneis%d\n/z,MINIMUM(a,b));largeroneis%d\n*,MAXIMUM(a,b));largeroneis%d\n*,MAXIMUM(a,b));loweroneis%d\n*,MINIMUM(a,b));loweroneis%d\n*,MINIMUM(a,b));largeroneis%d\nz/,MAXIMUM(a,b));#defineLAG>#defineSMA<#defineEQ==^include"test.h"/?ー個新文件50.c,包含test,h*/#include<stdio.h>voidmain(){inti=10;intj=20;if(iLAGj)printf("\40:%dlargerthan%d\n”,i,j);else(if(iEQj)printf(“ヽ40:%dequalto%d\n”,i,j);else{if(iSMAj)printf(*\40:%dsmallerthan%d\n”,i,j);elseprintf(*\40:Nosuchvalue.\n");六作業(yè):必做題:1.對于以下程序,寫出程序輸出結(jié)果:#include<stdio.h>intx;voidmain()(intx=5;printf(4tx=%d\n,\x);if(x>3){externintx;printf("x=%d\n”,x);}if(x<10){intx=4;printf("x=%d'n”,x);})總結(jié):.找出并改正如下宏語句的錯誤#defineMYNAME“James”;#definevoid5#define3AB6#defineA+B5#include<stdio.h>;總結(jié):.寫出如下程序的運行結(jié)果:#include<stdio.h>#define AB “James”#define N 2#define M N+1#definePP(x,y)x*M+y*(y-M)voidmain(void)printf("%d\n,\M*M);printf("%d\n”,PP(N,N*M));printf("Well!MynameisAB\n");)總結(jié):.寫出如下程序的運行結(jié)果:#include<stdio.h>#defineMvoidmain(void){intx;for(x=1;x>=0;x-){#ifx#ifdefMprintf(******\n,*);#endif#else#ifndefMMprimfr########\n");#elseprintf(“$$$$$$$$\n”);#endif#endif))總結(jié):.在C盤根目錄下面有兩個文件a.txt和b.txt,文件內(nèi)容為合法的C語言函數(shù)申明語句。有人想通過如下語句實現(xiàn)文件包含,正確嗎?如果不正確,改正:#include"c:\\a.txl”#include<c:\b.txt>總結(jié):.談?wù)凜語言條件編譯和iJ.else…語句的區(qū)別;談?wù)凜語言參數(shù)宏和函數(shù)調(diào)用的區(qū)別:總結(jié):.編寫函數(shù),來實現(xiàn)斐波納契數(shù)列的任意ー項求值,要求函數(shù)不使用參數(shù)而使用全局變量。.使用參數(shù)宏來實現(xiàn)從兩個數(shù)中挑選最大值和最小值。.不使用C語言關(guān)鍵字if...else...而使用條件宏來實現(xiàn)對三個數(shù)的排序.使用全局變量,編寫程序?qū)崿F(xiàn)通過調(diào)用ー個函數(shù)doublecalculate(doublex,doubley),可以得到兩個數(shù)的和、差、積、商。附加題:.定義帶參數(shù)的宏MAX(A,B)、MIN(A,B)、ABS(A)分別求兩個數(shù)的最大值、最小值和一個數(shù)的絕對值。.定義宏名しeap_Year(year)和lsupper(a),判斷year是否是閏年以及a是否是大寫字母。.定義ー個宏,將大寫字母變成小寫。七、經(jīng)驗積累序號問題描述經(jīng)驗級別1ロロロ2ロロ口3ロロ口4ロロ口5ロロ口6ロロ口7ロロ口8ロロ口9ロロ口10ロロ口第十講:指針(一)ー、內(nèi)容及目標:.理解地址和指針的概念.掌握變量的直接引用方式和間接引用方式.熟練應(yīng)用指針變量的定義和引用.熟練應(yīng)用指針變量作函數(shù)參數(shù)時的傳參方式二、學(xué)習(xí)重點地址和指針的概念指針變量的定義和引用指針變量作函數(shù)參數(shù)時的傳參方式三、學(xué)習(xí)難點:指針變量的定義和引用指針變量作函數(shù)參數(shù)時的傳參方式四、課堂筆記:五、上機試驗:1.如下程序,如果第一個printf輸出為0x00123456,那么其它的printf的輸出?#include<stdio.h>voidmain(){inta[10]={l,2,3,4,5,6,7,8,9,0},*p,*q;p=a+2; q=a-2;prinlf("%#姑n”,p); 〃第一個primf語句printf("%#x'n”,p?=q);q+=6; p+=q+2;printf(<<%#x,%#x,%d,%d,%d,%d\nM,p,q,*(p+2),*q+2,*p++,*-H-p);)2.通過兩種方式引用變量#include<stdio.h>voidmain(){inta,b;int*p; /*定義指針變量p*/p=&b; /*將變量b的地址存放在變量p中?/a=3; /*直接引用變量a*/*p=5; /?間接引用變量b*/printf(ua=%d,b=%d\nn,a,b);}.指針變量運算符&和?的使用#include<stdio.h>voidmain()(inta,b;int*p,*q;a=3;b=5;p=&a;q=&b;printf("%d,%d\n”,*p,*q);.上機操作觀察以下程序的輸出結(jié)果?#include<stdio.h>intmain(){intx=99;int*pl,*p2;pl=&x;p2=pl;printf("valuesatplandp2:%d%d\n'\*pl,*p2);printf("addressespointedtobyplandp2:%p%p",pl,p2);).求一個學(xué)生5門課程的平均成績。floataver(float*pa);voidmain(){floatsco[5],av,*sp;inti;sp=sco;printf(*\ninput5scores:\n*);for(i=0;i<5;i++)scanf("%f”,&sco[i]);av=aver(sp);printf("averagescoreis%5.2f*,av);)floataver(float*pa)(inti;floatav,s=0;for(i=0;i<5;i++)s=s+*pa++;av=s/5;returnav;)六、上機作業(yè):必做題:.寫出如下程序的輸出結(jié)果?#include<stdio.h>voidmain(){doublex=100.1,y;int*p;p=(int*)&x;y=*P;printf("the(incorrect)valueofxis:%f\y);}.判斷程序是否有問題嗎?#include<stdio.h>voidmain(){intx,*p;x=10;*p=x;printf(Mp=%d,,,*p);).如下程序是否有問題嗎?#include<stdio.h>voidmain()(intx,*p;x=10;p=x;printf(',p=%d,,,*p);}.如下程序段能正常運行嗎?registerintx;inty;int*pl,*p2,*p3;pl=&x;p2=&y; p3=&(x+y);printf("%d,%d,%d”,*pl,*p2,*p3);.編寫函數(shù)voidxChange(int*,int*),實現(xiàn)對兩個整數(shù)的交換。.從鍵盤輸入三個整數(shù),要求設(shè)三個指針變量pl,p2,p3,是pl指向三個數(shù)的最大者,p2指向次大者,p3指向最小者,然后按由大到小順序輸出三個數(shù)。.編寫ー個程序,接受用戶輸入的一行字符,以回車鍵結(jié)束.分別統(tǒng)計其中的大寫字母,小寫字母,空格,數(shù)字和其他字符的個數(shù)。(使用getcharO,使用指針)

選擇題:.使用指針,實現(xiàn)對ー個數(shù)組的首尾互換。.有一數(shù)組有10個元素,要求輸出其中最大和最小的元素值。(使用指針)七、經(jīng)驗積累序號問題描述經(jīng)驗級別1ロロロ2ロロ口3ロロ口4ロロ口5ロロ口6ロロ口7ロロ口8ロロ口9ロロ口10ロロ口第十一講:指針(二)ー、內(nèi)容及目標:.掌握指向數(shù)組元素的指針變量的定義和引用.理解數(shù)組元素的兩種引用方法.熟練應(yīng)用數(shù)組名與指針變量作函數(shù)參數(shù)時的傳參方式.掌握指向字符串的指針變量的定義和引用指向數(shù)組元素的指針變量的應(yīng)用數(shù)組名與指針變量作函數(shù)參數(shù)時的傳參方式指向字符串的指針變量的定義和引用字符串與指向字符串的指針變量作函數(shù)參數(shù)的傳參方式三、學(xué)習(xí)難點:數(shù)組名與指針變量作函數(shù)參數(shù)時的傳參方式字符串與指向字符串的指針變量作函數(shù)參數(shù)的傳參方式四、課堂筆記:五、上機試驗:.用指針法和下標法輸出數(shù)組中的全部元素#include<stdio.h>voidmain()(int*p,i;inta|5|={1,2,3A5);p=a;for(i=0;i<5;i++)printf(M%d\tn,a[i]);printf(H\n");for(i=O;i<5;i++)printf(H%d\tM,*(p+i));).上機操作觀察程序的輸出結(jié)果。#include<stdio.h>voidmain()(intArray[10]={l,2,3,4,5,6,7,8,9,0);int*p,*q;inti;p=Array+2;q=Array;*P=q[5]; p+=2;*q=*(Array+2); *Array=*(Array+5);for(i=0;i<10;i++)printf(“%4d,”,*(Array+i));).寫出如下程序的輸出結(jié)果:#include<stdio.h>voidmain(){intArray[10]={1,2,3,4,5,6,7,8,9,0},*p;intx,y,m,n,a,b,i;p=Array+2;x=*p++; y=*++p;m=*(p++);n=*(++p)a=++*p; b=(*p)4-+;printfC4x=%d,y=%d,m=%d,n=%d,a=%d,b=%d\n,,,x,y,m,n,a,b);p=Array;while(p<Array+10)printf("%"4d”,*p++);).用下標法和指針法輸出數(shù)組中的全部元素#include<stdio.h>int*p,i;inta[5]={1,2,3,4,5);p=a;for(i=0;iv5;i++)printf(n%d\tprintf("\n");for(i=0;i<5;i++)printf("%d\tH,*(p+i));).已知一個ー維數(shù)組a[10]中有10個數(shù),求出第m個數(shù)到第n個數(shù)的和。其中m、n由鍵盤輸入#include<stdio.h>intsum(int*q,intn)(inti,s=0;for(i=0;i<n;i++,q++)s+=*q;returns;)voidmain()(intm,n,a[10]={1,2,3,4,5,6,7,8,9,10};int*p;print*"Pleaseinputmandn(m<n<10):\nH);scanf(M%d,%dM,&m,&n);p=a+m-l;/?數(shù)組下標從〇開始,所以第m個元素下標為m-1,地址為a+m?ドノprintf("%d\n",sum(p,n-m+l));/?若計算第3個到第5個數(shù)的和,實際計算的是第3、4、5共5-3+1個數(shù)的和?/)六、上機作業(yè):必做題:.如下程序是否有問題嗎?#include<stdio.h>#include<string.h>char

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論