




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
c 輸出2個整數的和 函數 函數 求2個數的最大值 printf和scanf函數的返回值 if語句的細節問題 scanf注意事項 向屏幕輸出1-100這幾個整數的值 求5的階 求素數 求閏年 整型 字符型 getchar和 實型 printf用到的格式附加字符 scanf的注意事項 運算符 判斷2個實型數據是否相等 邏輯型變量 switch語句 條件編譯 頭文 習題 習題 do...while語句 循環習題 循環習題 循環習題 變量地址 數組的排序 指針 字符數組 宏定義 宏名之間重名 undef終止宏的作用域 函數的指針 auto自動變量和register寄存器變量 extern的用法 extern和static修飾變 extern和static修飾函 undef,extern和函數注意的小知識點 遞歸-求5的階乘 帶參main函數 void指針 動態內存分配 realloc函數 和realloc函數的注意事項.cpp 結構體數組和指針——輸入n個學生的和成績并按成績排序輸出 單向動態鏈表 枚舉類型 向屏幕輸出一行文字#include //stdio.h通知編譯器printf函數的功能是什么,后面才可以使2. //任何程序都是從main行,從main行3. printf("haha\n");//printf串 return 6.6.2個整數的和#a,b,3int型的變量a,b,sumint printf("%d,%d,%d\n",a,b,sum);a,b,sum為這3個 a=2;//把 a=2;//把a賦值為2.如果對變量進行第一次賦值,我們也稱之為初始 b= sum= printf("sumisd\n //輸出 return.#f(int//1.函數原型/首 返回值類型+函數名+參數及參數 該處參數被稱作形式參數,簡稱形參。任何一個函數的形參其作用域都是從定義處開始3. return 5.6.6.voidg(inta,int //void7. printf("%d\n", 10.10. printf("%d\n", g(3, 19.voidmain()//等價的于voidmain(void)只在這里main返回void,而真正的c是不可以讓main回int類型20.20. printf("%d\n", g(3,.1.#include2.2.void 3. 6.void6.void7. 2.void //函數首部+分號即函 13.void 15.int16.16. return21.22.22.void23. 25.27.voidh(int28.28. printf("%d",//hgh函數中有g用31.PAGE5PAGE52個數的最大值1.#include //printf和scanf的函 都在stdio.h里,3. doublea, //double浮點型數據類型 /*法 printf("aislf,bislf\na,b//%lf在對一個浮點型數據 /*法 if(a if(a a= printf("最大值為:%lf\n return18.18.6.printfscanf函數的返回值1.#3.printf("%d\n", inta, printf("%d\nscanf("%d%d",&a&b));//scanf數的會返回其按照正確格式輸 return13.7.7.輸入一個成績,輸出成績所對應的成績段1.#3. double //double scanf("%lf", /*法 if(a<0||a>100)/|| if(a>=0&&a<60)/&& if(a>=60&& /*法 if(a<0|| if(a<0|| 32 else return33.8.if語句的細節問題1.#3. printf("%d,%d\n",3>2,3< {//在if號 return18.18.scanf3.(2)scanf停 7.③非空白字符——scanf8.8.(4)9.10.10.#12.12. chara='A';//char字符類型可以存放單個字符 printf("%c\n", int scanf("%d", scanf("%c", if(a'\n')//== printf("%c\n",輸出a個#號字 int scanf("%d\n", printf("%d\n", int scanf("abc%dert", printf("%d\n", inta, scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,charch1,scanf("%c%c",&ch1,printf("ch1=%c,ch2=%c.\n",ch1,誤的結 return.(1)1,23.(2)4.4.5.#7. printf("%d%d\n1+2*3, //輸7, inta=1,b=2,c= a=b= printf("%d\n", 學習目標 printf("%d,%d,%d\n1!9, //輸0,0 printf("%d\n",4*- return20.20.2.#include2.#4.4. printf("%d,%lf\n",5/2,intprintf("%d\n",a=printf("%d,%d\n",5%2,//輸1,12.12.//printf("%d\n",型//error printf("%d,%d,%d\n",-13%3,13%-3,-13%23); intb=1,c= printf("%d\nb2);//輸出b值為3,因為b2bb+2 20.20.//b+c= 然而vc++6.0實是c++程序,而在c左值 a=1,b=2,c= printf("%d\n",(a=b)=c); 的c的。 return27.9.3——逗號,關系及邏輯運算符.(2)在4.(2)在c5.①只有4(&&,||,逗號,條件運算符)6.6.②操作數的求值順序,不同的編譯器可能有所不同——不要依賴任何不可移植的操作,應避免出8.8.9.#11. printf("%d\n",(1!=1,2==2,3)); //輸出3邊 inta= a+=1,(a*= printf("%d\n //輸出2而不是輸出 a=21.//0&&a //error因為該句和(0&&a)=300&&(a= printf("%d\n",a); //輸出a的值為0 目標(3)“0&&(a=3)”中“&&”右側操作數不會被計算 a= 1||(a //學習目標(3)及(2 printf("%d\n a= printf("%d\n",((a+=1)+(a*=2))); 的左操作數,也可能先計算右操作數,所以輸出結果可能是2或者是4執行方案a+=a*=printf("%d\n",//輸出執行方案a*=a+=printf("%d\n",//輸出 例,在c return.(1)條件運算符是c先級為5.6.6.#include7.voidmax(intaint 8.8.int9. else max(3, inta= 0?(a+=2):2; printf("%d\n 75.//0?return0:printf("123\n"); 鍵字,所以return00?int//errorintx達return80.81.voidmax(inta,int82.82. printf("%d\n a>b?a:b——如果a>b否則的話其值為// if(a> printf("%d\n", printf("%d\n", 93.10.全局變量及宏定義.(1)5.(3)6.6.7.#include8.8.10.//全局變 9.#definePI3.141592 義處之后所有出現PI以外10.//全局變 11.int 12.12.intB=13.int14.printf("%lf\n",//輸出//輸出17.//PI //error因為PI printf("%d,%d\nA, //輸出0, return21.變量的作用域總結2.2.(1)4.(2)4.(2)5.(3)在文件的某一 6.6.7.#a=9.//int 10.10.voidf(int 11.int12.12. printf("%d\n //輸出inta=intprintf("%d\n",//輸出{inta=int printf("%d\na);//輸出}//輸出return28.29.voidf(int30.30.31.//int printf("%d\n",33.1-100這幾個整數的值#3. /*方法 inti= while(i<= printf("%d\n", i=i+ //方法 //vc++6.0c++文件,for以在該for外用,而在c int for(i=1;i<=100; printf("%d\n", i= printf("%d\n",i++);//后自增運算符。其表達式的值是該變量沒有執行后自增運之前的 printf("%d\n", i= printf("%d\n printf("%d\n", i= printf("%d,%d\n",++i,i);//vc++6.0的,其 return32.52!1x3!2!x4!3!x5!4!x1.1→2.2→3.txi→4.i+1→i5361→2→whilei<={t*i→t;i+1→}printft求素數#include2.2.#4.4. int scanf("%d", if(a<= elseif(a== doubleb= 在math.h里功能就是求個數的平方根,其返回值是一個double //5-> //16124816 for(inti=2;i<=b; //5%2,3,4==0printf(no) if(a%i== return return28.28.求閏年#3. int scanf("%d", if(a%4==0&&a%100!=0||a%400== return12.12.判斷一個數是否為回文數#3. int scanf("%d", 123-> 123%10/1->3x 123%100/10->2x 123%1000/100->1x ints= for(inti=1;i<=a;i*= s=a%(10*i)/i+ if(a== return.2.4.4.(2)5.(3)6.6.7.#9. printf("%d\n", printf("%lf,lf\n3.243e-2);//3e-2代表3102 printf("%s","%dabc\n");//字符串使用的是格式說明符為 //4.字符型常量字符也是以整型方 printf("%c, printf("%c,%d\n",'a', 輸出a, printf("%c%c,c%c\n出 printf("2222\r3333\n");//輸出:3333其中'\r' 將當前位置移到下一個tab位置上printf("\101102103\n");//輸出:AB //輸出: 16進制 returnx41=4x16^1+1x16^0 return29.1.#include#definePI4.4.#defineID5.#defineCH6.6.#defineS7.int8.8. printf("%lf,dc,s\nPI,ID,CHS//輸出3.140000101A constinta=45;//常變量必須在定義的時候初始化,初始化之后其值不可以被修改12.12.//constint //error13.//a //error因為常變量的值不可以被修 return15.18.整型1.#3. //1signed+整型關鍵字+int+變量名(signedint shorta intb=shortinta1signedshortinta1;signed intb= longc=8.8.//longlongd= //2.定義整型變量——無符號整型——unsigned+整型關鍵字+int+變量名( unsignedshorte //與unsignedshortinte5;等 unsignedintf= unsignedlongg=printf("%d,%d,%d\n",sizeof(short),sizeof(printf("%d,%d,%d\n",sizeof(short),sizeof(int),sizeof出24//輸 printf("%hd,d,%ld\na,b, //與 printf("%hu,%u,%lu\n",e,f, printf("%hu,%u,%lu\n",e,f, printf("%o,%x,%X,%#x,%#X\n",123,123,123,123,123); 出:173,7b,7B,0x7b,0X7B scanf("%#x", printf("%d\n", //7.隱式數據類型轉換——長賦短,截unsignedshortus=- printf("%hu,hd\nus //輸出65535,- unsignedintui=printf("%u\n",//輸出 shortss=-ui=printf("%u\n",ss=ui=printf("%u\n",//輸出 ui=- printf("%u\n printf("%u,%ld,%lu\n",1U,1L,1UL); //1U—unsignedint1L—long類型,1UL—unsignedlong型 //12.整型數據的強制數據類型轉換——(數據處的圓括號為強制數據類型轉換符, printf("%hu,%d\n",(unsignedshort)-1, return56.56.字符型2.2.#4.4. signedchar unsignedcharchar printf("%d%d,d\nsizeof(scsizeof(uc //輸出1,1, uc=- ch=- printf("%d%d\nch,uc//輸出-1 int printf("%d,%d\n",w=ch,w= return21.getchar 2.2.void 3.charch= 6.6.7.void 8.8. 12.12.13.int14.14.15.// 運行結果2:輸入bbo return22.22.實型2.2.3.(一)4.4.(二)在目前學習過的所有格 中只有xeg可以不分大小寫5.6.6.#8.8. floata //1.1F表示1.1是個float數 floata //1.1F表示1.1是個float數 doubleb //默認情況下:凡是小數都是double longdoublec1e- //1e-8L1e-8longdouble printf("%d%d,d\nsizeof(1.1F),sizeof(1.1sizeof(1e- //輸出4,8,8 ——默認情況下使用帶f和帶e的格式只輸出小數點后6位(第7位四舍五入) printf("%f,%lf,%Lf\n",a,b, 1.100000, printf("%e,%le,%LE\n",a,b, 1.100000e+000, printf("%g%lg,%LG\na,b, //輸1.1,1.1,1E- return23.printf用到的格式附加字符 =%格式附加字符格式字 2.2.#include3.4.printf("%5d\n",-printf("%5c\n",printf("%5s\n\n",printf("%-5dA\n\n",-printf("%7.2lf\n",printf("%7.lf\n",printf("%.5lf\n",printf("%11lf\n",printf("%-11lf\n",return17.scanf2.#include2.#4.4. int scanf("%5d", printf("%d\n", scanf("%-5d", printf("%d\n", double scanf("%7.2lf", printf("%lf\n", char while((ch=getchar())!= return22.22.#3. inti=1,j= printf("%d,%d\n",i, printf("%d,%d\n",--i,j--); 1之 printf("%d,%d\n",i,7.//printf("%d\n",--(i+j)); i=1,j= printf("%d\n",i+++j); 能和i+(++j)等價,對于不可移植的操作我們應該盡量避免使用 int printf("%d\n return15.2個實型數據是否相等#include2.2.#4.4. floata= ,b= 6.if(a==if(fabs(a-b)<=1e-//doubleintreturn12.求一個一元二次方程的根#include2.2.#4.4. doublea,b,c, scanf("%lf%lf%lf",&a,&b, if(fabs(a-0)<=1e- return d=b*b- if(d< elseif(fabs(d)<=1e- printf("此方程的根為%lf\n return printf("此方程的兩個根為%lf,%lf\n", return21.邏輯型變量1.3.#5.boola該句與boola0;等boolb//true示常數該句與boolb1;等9._Bool//和boolc;等b=//3b的值為printf("%d\n", printf("%d\n 型數據占1字 return15.switch語句1.2.2.#4.4. int scanf("%d", case case case return25.28.條件編譯1.#include2.2.#defineDAXIE3.7.8.8.// return11.12.12.void13. char while((ch=getchar())!= 17.#if if(ch>='A'&&ch<= ch+=20.20. if(ch>='a'&&ch<= ch-=23. 26.26.27.void28.28. char while((ch=getchar())!= 32.32.#ifdef if(ch>='A'&&ch<= ch+=35. if(ch>='a'&&ch<= ch-=38.38. 41.42.42.void43. char while((ch=getchar())!= 47.#ifndef if(ch>='A'&&ch<= ch+=50.50. if(ch>='a'&&ch<= ch-=53. 56.56.29.h1.#ifndef2.2.#defineUI3.#definePI4.4.intE=5.intmax(intx,int6.6. if(x> return return9.頭文件練習.cpp1.#include2.2.#include3.#5. printf("%lf\n", printf("%d\n",max(1, printf("%d\n", return10.10.1.#a,b,scanf("%d%d%d",&a,&b,if(a>{intd=a=b=}if(c<{intd=a=c=}if(b>{intd=b=c=}27.0printf("%d,%d,%d\n",a,b,29. printf("%d,%d,%d\n",c,b,31. return33.1.#3. int scanf("%d", case case case return16.16.32.do...while語句1.//求1-5的2.2.#4.4. inti=1,s=1,sum= s*= sum+= while(i<=printf("%d\n",return15.1.//10數達到10002.2.#4.4. inta,sum= for(inti=1;i<=10; scanf("%d", sum+= if(sum>= printf("總的捐款數目為%d\n", return15.1.//1-1003輸2.2.#4.4. for(inti=1;i<=100; 7.#if if(i%3== printf("%d\n",11. if(i%3!= printf("%d\n",14.14. return17.#3. for(intj=1;j<=4; for(inti=1;i<=5; printf("%5d", return13.#3.{正常的斐波那切數列為1,1,2,3,5...,其中第11,2項為 我為了保證程序進入循環時,c為第一項,人為增加了兩項:第-11,和第01,其他項等 inta=1,b=0,c,d=while(d<={c=a+a=b=15.#ifif(c%3=={printf("%d\n",}21.if(c%2==printf("%d\n", 26. return29.29.#3. chara,b, for(chari='X';i<='Z'; a= for(charj='X';j<='Z'; if(i==b=for(chark='X';k<='Z';{if(k==i||k==c=if(a!='X'&&c!='X'&&c!=printf("A和%c,B和%c,C和%c比賽a,b,}}} return24.24.變量地址#3. inta,b, printf("%p,%p,%p\n",&a,&b, int d[0]=1,d[1]=2,d[2]= printf("%d,%d,%d\n", printf("%p,%p,%p\n", return12.12.數組定義時初始化#3. 5.//int intb= int constintb int//這種寫法雖然在vc6.0標準C++中,constintb2;定ANSIC //int intint int inta[4]= inta[]= inta[4 for(inti=0;i<4; printf("%d\n",return 25.數組的排序#include2.{inta[7]={89,34,-56,1,23,100,- intlen=/*//冒泡排序{{{a[i]=}}{int{c=intb=a[i-1]=for(intj=0;j<len;39.returnprintf("%d,",}a[c]=a[i-}if(a[c]<for(i=1;i<len-k;intc=for(intk=0;k<len-}a[i+1]=intb=if(a[i]>for(inti=0;i<len-1-k;for(intk=0;k<len-1;指針#include2.2.voidf1(int3. b=5.6.6.voidf2(int7. *c=9.10.10.*int inta= p //p *p //*p printf("%d\n", int p=p[0]=p[1]=p[2]=數組下標*p= *(p+1)//*(d+1)= *(p+2)//*(p+2)->*(p+2)*(2+p)等價0[p]=1[p]=2[p]=d=error因為d printf("%p,%p,%p\np, //pn上是p for(inti=0;i<3; printf("%5d", return37.數組的增刪改查及倒置#include2.2.#defineLEN4.3.intlength(int*a) inta[LEN]或者intaa一int*類型的4. intj= while(j< if(a[j]== return14.14.15.voidshow(int16.16. intlen= for(inti=0;i<len; printf("%5d", 21.22.22.booldel(int*a,int23. intlen=if(len==0||index>len-1||index< return for(inti=index+1;i<len; a[i-1]= a[len-1]= return 34.34.35.boolinsert(int*a,intindex,int36.36. intlen= if(len==LEN||index<0||index> return for(inti=len-1;i>=index;-- a[i+1]= a[index]= return 47.48.48.voidinvert(int*49.len=from=end=len- while(from< intd= a[from]= a[end]= from end-- 61.62.62.intfind1(int*a,int63. intlen= for(inti=0;i<len; if(a[i]== return find2(int*a,int73. intlen= intfrom= intend=len- while(from<= if(value== return elseif(value> from=(from+end)/2+ end=(from+end)/2- 89. inta[LEN]={3,6,9,12, if(del(a, 97.//insert(a,2,98.98.//printf("%d\n",find2(a,return}1.#3. 5.//inta[3][4]= inta[3][4]= 14.14.//inta[3][4]=15.//inta[3][4] 16.16.//inta[3][4]=17.//inta[3][4]= inta[][4]= for(inti=0;i<3; for(intj=0;j<4; printf("%d\n", for(inti=0;i<12; printf("%d\n", return28.28.44.求二維數組的鞍點1.#include2.2.#defineM 3.#defineN 4.4.boolf(int(*a)[N],inti,int 5. for(intx=0;x<M; if(a[x][j]< return return12.12.13.boolg(int(*a)[N],inti,int 14.14. for(intx=0;x<N; if(a[i][x]> return return21.22.22.voidshow(int//inta[][N]或者int(*a)[N]23. for(inti=0;i<M; for(intj=0;j<N; printf("%5d", 32.32.33.int34.34. inta[M][N] for(inti=0;i<M; for(intj=0;j<N; printf("a[%d][%d]是這個二維數組的鞍點\ni, return50. 字符數組#3. chara[10]hahan'};//'\0'c //輸出 printf("%s printf("%s", charb[10]={"hacharc[10]="ha chard //d數組有3c="haerror因為cchar*char*ch=ha\n";//字符串常量在計算機的內存當中是一個沒有名字的數return17.字符串的輸入和輸出#include2.2.voidshow(char*a,int3. for(inti=0;i<len; printf("%d\n", 8.8.9.int10.10. chara[30],b[30],c[30], scanf("%s%s%s%c",a,b,c,&ch);//如果輸入項是字符數組的數組名或者是char*類型的變量 show(a, //a數組當中沒有被賦值的元素是一 ch= //和scanf。不同點1.gets ch= intx=2,y= printf("x=%d,y=%d\n",x, char*p= printf(p,x, //printfscanf函 return31.47.字符串常用的函數1.#include2.2.#strlen(char*5. if(a== intlen= while(a[len]!= 13.char*strlwr(char* if(a== char*a1= while(*a!= if(*a<='Z'&&*a>= *a+= 26.26.char*strupr(char* if(a== char*a1= while(*a!= if(*a<='z'&&*a>= *a-= 39.char*strcpy(char*a,char* if(a==NULL||b== char*a1= 48.48.char*strcat(char*a,char* if(a==NULL||b== char*a1= while(*(a++)!= 60.60.char*strncpy(char*a,char*b,intif(a==NULL||b==char*a1=for(inti=0;i<n;{a[i]=}strcmp(char*a,char*if(a==NULL||b=={if(*a=='\0'&&*belseif(*a<return-elseif(*a>a++,87.int88.88. chara[]= printf("%d\n", printf("%s\n", printf("%s\n",strcpy(a, printf("%s\n",strcat(a, printf("%s\n",strncpy(a,"abcdef", printf("%d\n",strcmp("abcde", return97.數組-1.1.#include3.voidshow(intfor(inti=0;i<N;for(intj=0;j<=i;11.13.inta[i][0]=for(intj=1;j<=i;23.returna[i][j]=a[i-1][j-1]+a[i-for(i=1;i<N;for(i=0;i<N;inta[N][N]=12.int}printf("%6d",{4.2.#defineN3.voidshow(3.voidshow(intfor(inti=0;i<N;9.voidmove(int*a,intk,intfor(inti=0;i<k;intd=a[index-1]=}19.intintfor(i=0;i<N;int{scanf("%d",move(a,N-m,return40.for(i=N-m;i<N;if(m>=0&&m<=printf("請輸入m的值a[i]=int20.18.a[index]=a[index-{10.8.printf("%6d",4.2.#defineN1.1.#include3.scanf("%d",for(i=0,cnt=0,sum=0;sum!=n-1;if(a[i%n]==if((a[i%n]=(cnt++)%3+1)==}if(a[i]!=printf("最后留下的是原來第%d個人\n21.returnfor(i=0;i<n;{inti,cnt,intinta[1000]=2.int宏定義#include2.2.#defineA3.#defineB4.4.#defineC5.#defineD(a,b)6.6.int7. printf("%d%d,d\nA,B*B, printf("%d\n",D(2, return11.52.宏名之間重名52.宏名之間重名1.#include2.2.#defineA3.void4.4. printf("%d\n",6.6.7.#defineA(a,b)a-8.8.void9. printf("%d\n",A(5,11.12.12.int13. //輸出 return17.53.undef終止宏的作用域1.#include2.2.#defineA3.#defineB(a,b)4.4.void5.#undef6.6.#8.8. 10.10.//printf("%d,%d\nA,B(4 error因為此處不屬于宏名A,B return12.12.13.void14.14. printf("%d%d\nAB(4 //errorA,B16.16.54.宏名與函數名重名54.宏名與函數名重名1.#include2.2.voidF(int FvoidF(inta 3. printf("%d",5.6.6.#defineF(a)F(a);7.int8.8. F(3); 程序運行結果輸出 return11.函數的指針#max(inta,int3. min(inta,int7. 11. int(*p)(intint//pint,函數參數為兩個整型的函數。p的類型為int(*)(int,int) p //pmax函(*p)(10,//(*p)(10,5)等價于max(10,p=printf("%d\n",p(10,//(*p)(10,5)和p(10,5)等return18.autoregister寄存器變量#3. autointa=3; //inta3;aauto加。auto只能用于修飾局部變量。 for(inti=0;i<10000; return registerintj=2;//register return9.extern的用法#4.4. printf("%d\n", A=A=2.2.staticintB=100; //static修飾的全局變量稱作靜態外部變量,其他文件不可以通 3.int*P=cpp1.#include2.2.externint3.externint4.4.externint*5.int6.6. printf("%d\n",8.8.//printf("%d\n",B); return11.1212.staticintA cpp1.//intA error因為1.cppA的非靜態的全局變static局部變量-靜態局部變量 #*5.void6.6. inti= staticint printf("%d,%d\n",i++, P=11.13.int14.14.15.//printf("%d\n",j);errorj return21.60.externstatic1.cpp2.#include1.//①在不同的文件中不可以有重名的外部函數定義②函數 2.#include3.externvoidf(void);//7. 9.//g(); error語句,g義在本文件中,要么是定義在其他文件中的外部函數。我們不能企圖調用一個來自其他文件中定義的內 return12.12.13.staticvoid 14.14. 16.16.2.cpp1.#include<stdio.h> //因為f函數要用到printf函數所以這里需要把stdio.h這個頭文件 2.2.staticvoidg(void) //在定義函數的時候在函數的首部加static代表這個函數是內部函3. 5.6.6.void(*P)(void)=8.7.externvoidf(void) //在定義函數的時候在函數的首部加extern代表這個函數是外部函數,extern8. 10.10.3.cpp1.#include2.2. 3.void4.4. 6.6.7.undef,extern和函數注意的小知識點#include2.2.#undef3.#undef 4.4.externint5.externint 6.6.void7.void 8.8.int9. return11.遞歸-5的階乘#f(int3. if(a==1||a== return elseif(a> returna*f(a- 12.12. printf("%d\n", return15.遞歸-漢諾塔#include2.2.voidf(chara,char3. printf("從%c柱上往%c柱上挪動一個圓盤\na,5.6.6.voidg(inti,chara,charb,char7.if(i=={f(a,f(a,f(b,}elseif(i>{g(i-1,a,c,f(a,g(i-1,b,a,}20.21.22.g(3,'A','B',return25.對一個字符指針數組排序#include2.2.#include3.voidshow(char*a[4],int4.4. for(inti=0;i<len; 7.8.8.voidsort(char**a,int9. for(inti=0;i<len-1; for(intj=0;j<len-i-1; if(strcmp(a[j],a[j+1])>{char*p=a[j]=a[j+1]=}}20.21.int22.22. char*a[4]={"haha","lala", o", sort(a, show(a, return27.main函數//該程序功能輸出argv2.2.#main(intargc,char*4.4. while(argc--> printf("%s\n",*(argv++));//也可以寫成*argv++因為*和++優先級相同,且結 return8.8.void指針#3. inta=3, p1= charch='B', p2=void*p3=(void//也void*p3p1,11.//p2 errorp1p212.12.//printf("%d\n",以無法通過*p3 變量//強//強制char(*p2)[50]=(char(*)[50])calloc(n,if(p2=={}intfor(i=0;i<n;{scanf("%d%s",p1+i,:\n",}for(i=0;i<n;{ printf("%d\n",*(int p3=printf("%c\n",*(char return18. 動態內存分配#include#include//有#include#include//有malloc#include //有malloc int{intscanf("%d", //void*malloc(unsignedintsize);其功能是在堆區分配連續的size個字節的 int*p1=(int*)malloc(sizeof(int)*n); if(p1=={} printf("第%d個學生的成績為%d,為%s\n",i+1,p1[i], * 37.errorp1動態內存空 return40.realloc函數3.2.對這段動態內存空間進行擴容,然后再存放2再把這45.6.6.#include7.#9.10.10.//int*p=//error因為程序實際上是一個 int*p=(int if(p== p[0]= p[1]=if(realloc(p,sizeof(int)*4)==//stdlib.h和malloc.h中都realloc的函 if(realloc(p,sizeof(int)*4)==//stdlib.h和malloc.h中都realloc的函 p[2]= p[3]= printf("%d,%d,%d,%d\n",p[0],p[1],p[2], double*p1=(double p1[0]= p1[1]= printf("%lf,%lf\n",p1[0], return33.只使用一段動態內存空間來存放n個學生的和#include#includeint{intscanf("%d",&n);char*a=(charif(a=={}intfor(i=0;i<n;{,和成績:\nscanf("%s%d%lf",a+62*i,(int*)(a+50+62*i),(double}for(i=0;i<n;{ :%d績:%lf\ni+1a+62*i*(int*)(a+50+62*i*(double return27.realloc函數的注意事項#include#includevoid {int*p=(intif(p=={ (p+1); p=NULL; //4.在堆區有2個動態內存A和B(A前B后),p1和p2分別指向他們。如 會不會把B能有2時16.voidg(void)//realloc事{ int*p=(int*)realloc(NULL,sizeof(int)*4); //2.如果realloc針實參為NULL,則會開辟新的動態內存空間。if(p=={ intfor(i=0;i<4;p[i]=printf("地址為%p\n", printf("地址為%p\nrealloc(p1000)/3.realloc //4.error因為在該句被運行之前,p所指向的動態內存空間已經被放,p指 for(i=0;i<4; printf("%d\n",37.//realloc(p+1, //6.errorrealloc printf("%p\nrealloc(p, 節,則等價于(p);其函數返回值為39.40.int41. return45.結構體的定義和初始化#include2.2.3.struct 4.4. char int double.structStudent2 10. char int double14.14.}A,15.structStudent3 16.16. char int double20.20.}A1={"zhangsan",20},21. 22.22. char int double26.26.}A2,27.29.structStudentstructStudent"zhangsan //2.不完全初始化,未被賦值的成員有一個默認值 structStudentc=a;//3.定義結構體變量時,使用其他的結構體變量完成初始34.34.//structStudentd={.score= printf("學生的:%s,:%d,成績:%lf\n",,c.age, return37.38.38.void39. structStudent printf("請輸入學生的,和成績 scanf("%s%d%lf",,&a.age,43.printf("學生的:%s,:%d,成績:%lf\,a.age,a.score);//1量名.成員名的方式一 structStudent*p= : : 46.績:%lf\n",p->name,p->age,p->score);//2.可以通過指針->成員名的方式 46.1.#3. short int doubleprintf("%d,%d,%d\n",(int)&a%2,(int)&b%4, struct char short struct char int structStu1 structStu2printf("%d,%d\nsizeof(A),sizeof(B));//輸出//2.結構printf("%d,%d\nsizeof(A),sizeof(B));//輸出//2.結構成員相對于結構體變量的首地址的偏移量(結構體變量的地址編號和結構體成員的地址編號 ",(((( struct char double int printf("%d\n", struct char structStu2 DD.b.b長度為4所 2.D4整 printf("%d\n",sizeof(D)); return46.46.72.結構體數組和指針——輸入n個學生的和成績并按1.#include2.2.#defineN3.struct4.4. char double7.8.8.voidinput(structStu*p,int9. for(inti=0;i<len;{ printf("請輸入第%d個學生的和成績:\n",scanf("%s%lf",p[i].name,scanf("%s%lf",(p+i)->name,&(p+i)-}16.17.voidsort(structStu*p,int18.for(inti=0;i<len-1;for(intj=0;j<len-1-i;{if(p[j].score>{structStub=p[j]=p[j+1]=}}29.30.show(structStu*p,int31.for(inti=0;i<len; 的姓 34.績:%lf\ni+1p[i].36.36. 38.38.//show(m, structStu input(a, sort(a, show(a, return44.44.#include2.2.typedefint //1.Countint3.typedefint 4.4.typedef5. int double8.8. 9.#defineINTint //4.這里是定義了一個宏名INT進10.11.Counta=//1.定義一個int型變量printf("%d\n",Numb=//23int的數組printf("%d,%d,%d\n",b[0],b[1], Stum12, printf("%d,%lf\n",m.a, INTc printf("%d\n", return21.單向動態鏈表#include2.#include3.4. int structNode*7.}N,8.P9. Ppheard= if(pheard== pheard->pnext= return18.19.voidinput(Ppheard,int20. Plast= if(last== last->data= last->pnext= while(pheard->pnext!= pheard=pheard- pheard->pnext=32.33.voidshow(P34. while(pheard->pnext!= pheard=pheard- printf("%d\n",pheard- 40.41.intlen(P42. int for(i=0;(pheard=pheard->pnext)!=NULL; return47.48.booldel(Ppheard,int49. if(index<=0||index> return for(inti=1;i<index; pheard=pheard- Pptail=pheard->pnext- pheard->pnext= return58.59.boolinsert(Ppheard,intindex,int60. if(index<=0||index> return Ppw= if(pw== pw->data= for(inti=1;i<index; pheard=pheard- pw->pnext=pheard- pheard->pnext= return75.76.voidinvert(P77. if(pheard->pnext== Pp0=pheard- Pp1=p0- Pp_0=p0, while(p1!= p2=p1- p1->pnext= p0= p1= pheard->pnext= p_0->pnext=92.93.int94. Ppheard= input(pheard, input(pheard, input(pheard, input(pheard,100.//del(pheard,101.//insert(pheard,2, printf("%d\n", return106.共用體的定義和變量初始化#include union intchar double8.8.9.union10.10. int char double14.14.}w,15.16.16. int char double20.20.}w1={234},21.int22.22. unionData24.24.//a a.i= printf("%d\n", a.ch= printf("%c\n", a.f= printf("%lf\n",31.printf("%d%c\na.i,a.ch);//輸出值,因為共用體中所有成員所使用的 unionDatab={123};//1.此種方式只能對這個共用體變量的第一個成員進行賦36.36.//unionDatac={.f=//2.此種方式可以指定某一個成員進行賦值 unionDatad //共用體變量的長度:1.共用體變量的地址和長度必須被其最寬基本類型成員的大小所整union{charintprintf("%d\n",//輸出return47.76.枚舉類型1.#include3.enum 4.4.enum 5.enumC{c1c2, 6.6.enum{d1,d2, 7.enumE{e1e2,e3}k 8.8.int9. enumAw 11.//w error因為兩者數據類型不 w=(enum printf("%d\n",14.14.//a2enum printf("%d,%d,%d,%d,%d,%d,%d\n",b1,b2,b3,b4,b5,b6,b7);輸出3,4,5,2,3,4,5定義枚舉類型的時候可以為枚舉元素指定一個值個元素加printf("%d,%d,%d,%d,%d,%d,%d\n",b1,b2,b3,b4,b5,b6,b7);輸出3,4,5,2,3,4,5定義枚舉類型的時候可以為枚舉元素指定一個值個元素加1的 return18.18.1.#include2.2.#4.4. charname[50D:\\古詩.txt";//charname[50]D:/古詩.txt";等 FILE*fp=fopen(name, if(fp== FILE*fp2fopen("D:/2.txt if(fp2== char while((ch=fgetc(fp))!= fputc(ch, return24.24.古詩.txt內容如下:采菊下,悠然見南山。1.#include2.2.#4.4. char FILE*fp=fopen("D:/78.txt", if(fp== D:/78.txtfputs(a, fgets(a,10,fp); 到換行符時fputs(a,fgets(a,10, fputs(a, fgets(a,10,fp); 文件末尾時,fgets fputs(a, fputs(a, while(fgets(a,10,stdin)!=NULL) //在Windows統下(切記)按下ctrl+z+ fputs(a, fp=NULL;NULL, return28.28.78.txt1.#include2.2.#4.4. FILE*p1=fopen("D:/79.txt", if(p1== FILE*p2=fopen("D:/79-1.txt", if(p2== int double char fscanf(p1,"%d%lf%s",&a,&b, fprintf(p2,"%d\n%.1lf\n%s",a,b, p1= p2= return27.79.txt1.#include2.2.#include3.typedef4.4. char 9. Stua[3]={{"zhangsan",89.5},{"lisi",78},{"wangwu", FILE*p1=fopen("D:/80.abc", if(p1== fwrite(a,sizeof(Stu),3, p1=fopen("D:/80.abc", if(p1== } Stu fread(b,sizeof(Stu),3, for(inti=0;i< 學生的姓名: 成績:%.1lf\n",i+1,b[i].name return31.1.#include2.2.#4.4. FILE*pfopen("D:\\81.txt //打r輸出3 if(p==碼值,如果打開方式為rb,輸出 if(p== char while((ch=fgetc(p))!= printf("%d\n", return16.16.81.txt整型是如何在內存中存放的#include2.2.typedef3. int 8.8. A c.b[0]= c.b[1]= c.b[2]=c.b[3]=", return16.16.#include2.2.#include3.typedef4.4. int 9. A printf("%d,%d\n",c.a, fread(&c, printf("%d,%d\n",c.a, return.#include1.d:/84.txt內容輸出到屏幕上2.#include3.#5. FILE*p=fopen("D:/84.txt", if(p== char while((ch=getc(stdin))!= p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論