版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C程序設(shè)計(jì)復(fù)習(xí)(一)要點(diǎn)(二)概念50% ---疑難舉例(三)編程50%---部分編程題解二級(jí)C語言復(fù)習(xí)衷心祝愿各位取得好成績!
學(xué)好《C程序設(shè)計(jì)》關(guān)鍵在于用好“兩腦兩手”:●兩腦---大腦和電腦●兩手---左手和右手除了多編程多上機(jī)外別無選擇!二級(jí)C語言復(fù)習(xí)C程序設(shè)計(jì)復(fù)習(xí)閱讀講義(含例題)復(fù)習(xí)習(xí)題(55道)(一)要點(diǎn)二級(jí)C語言復(fù)習(xí)C語言基礎(chǔ)
1C語言基礎(chǔ)●基本數(shù)據(jù)類型(int,float,double,char)●變量(命名規(guī)則,類型,值,占用內(nèi)存大小,地址)
變量(作用域,存儲(chǔ)類,生存期,可見性)●表達(dá)式 表達(dá)式的種類表達(dá)式的計(jì)算規(guī)則逗號(hào)表達(dá)式●賦值語句●C程序的基本結(jié)構(gòu)---順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)●運(yùn)算符的優(yōu)先級(jí)和結(jié)合性●一維數(shù)組和二維數(shù)組二級(jí)C語言復(fù)習(xí)2函數(shù)---C程序的基本積木塊●如何編寫(定義)函數(shù)?●如何使用(調(diào)用)函數(shù)?●函數(shù)的類型和返回值●函數(shù)的形式參數(shù)和實(shí)在參數(shù)●函數(shù)的參數(shù)傳遞(單向傳值)●哪些類型的變量可以作函數(shù)的參數(shù)?●如何編寫遞歸函數(shù)?二級(jí)C語言復(fù)習(xí)3指針---C語言的一大特色●指針與指針變量的概念●運(yùn)算符&和*●指針和指針變量允許的運(yùn)算●一維數(shù)組的數(shù)組名與指向數(shù)組元素的指針的關(guān)系●已知intj=10,*p=&j;則*p與j等價(jià)已知ints[]={10,20,30,40,50},*p=s;則*(p+i)與s[i]等價(jià),p+i與&s[i]同值?!穸S數(shù)組的數(shù)組名與指向一維數(shù)組的指針的關(guān)系●指向一維數(shù)組的指針與指針數(shù)組的區(qū)別二級(jí)C語言復(fù)習(xí)●已知
inta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}},(*p)[4]=a;
則*(p+i),*(a+i),p[i],a[i]同值;*(*(p+i)+j),*(*(a+i)+j),*(p[i]+j),p[i][j],a[i][j]同值。●指向函數(shù)的指針變量二級(jí)C語言復(fù)習(xí)4結(jié)構(gòu)體---有廣泛的應(yīng)用背景●結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的定義●結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的區(qū)別●如何引用結(jié)構(gòu)體變量(即存取數(shù)據(jù))?●如何計(jì)算結(jié)構(gòu)體變量的大小?●單向鏈表的建立,插入,刪除與排序二級(jí)C語言復(fù)習(xí)5文件---有廣泛的應(yīng)用背景●文本文件與二進(jìn)制文件●文本文件的打開與關(guān)閉(fopen,fclose)●文本文件的讀與寫操作(fgetc,fputc,fgets,fputs,fscanf,fprintf)●二進(jìn)制文件的讀與寫操作(fread,fwrite)●其它的文件操作(fseek)二級(jí)C語言復(fù)習(xí)C程序設(shè)計(jì)復(fù)習(xí)(二)基本知識(shí)疑難舉例做完習(xí)題集中的選擇題部分對(duì)掌握C語言的基本知識(shí)大有助益。若能加做其中的填空題更有好處。●標(biāo)識(shí)符大小區(qū)分
Sum=i=j=5;sum=(j--,i++,i++);printf(“%d”,Sum);●關(guān)鍵字不能作為標(biāo)識(shí)符(用戶標(biāo)識(shí)符)
指出不合法的標(biāo)識(shí)符:
A)name B)_old C)char D)turbo_c二級(jí)C語言復(fù)習(xí)●賦值號(hào)不能與等號(hào)相混淆下述循環(huán)的循環(huán)次數(shù)是[]intk=2;while(k=0)printf("%d",k),k--;printf("\n");A)無限次 B)0次
C)1次 D)2次●數(shù)學(xué)中的不等式不能與C語言中關(guān)系表達(dá)式相混淆
0<0.5<10<0.5&&0.5<1二級(jí)C語言復(fù)習(xí)●運(yùn)算符/有時(shí)表示整除有時(shí)表示實(shí)數(shù)除設(shè)x=2.5,y=4.7,a=7,算術(shù)表達(dá)
(1)x+a%3*((int)(x+y)%2/4的值為[]
A)2.5 B)7C)4.7 D)2.75(2)x+a%3*((int)(x+y)%2/4.0的值為[]A)2.5 B)7C)4.7 D)2.75●混合表達(dá)式是根據(jù)算符優(yōu)先規(guī)則和結(jié)合性進(jìn)行,但右自加++,右自減—不會(huì)因加了括號(hào)而提前執(zhí)行二級(jí)C語言復(fù)習(xí)以下程序段的輸出結(jié)果是[]#include<stdio.h>#defineMIN(x,y)(x)<(y)?(x):(y)main(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf("%d\n",k);}
A)15 B)100 C)10 D)150二級(jí)C語言復(fù)習(xí)(2)執(zhí)行下列語句后a,b,c的值分別為[]a=1;b=2;c=3;a=(a++)+(b++)+(c++);1)234 2)734 3)634 4)1034(3)設(shè)a,b,c為整型變量,且a=2,b=3,c=4,則執(zhí)行完以下語句:a*=16+(b++)-(++c);后,a的值是28
二級(jí)C語言復(fù)習(xí)●如何計(jì)算字符串常量的長度?main(){charm[]={{"\\\"ABC\"\\"},{"\x7a\107\\A\""},{"%%\m\659"}};clrscr();printf("%d,%d,%d\n",strlen(m[0]),strlen(m[1]),strlen(m[2]));printf("%s,%s,%s\n",m[0],m[1],m[2]);}
7,5,5\"ABC"\,zG\A",%m59二級(jí)C語言復(fù)習(xí)●有符號(hào)整數(shù)與無符號(hào)整數(shù),指出下列程序的輸出main(){inti=65536,j=65535,k=-1;clrscr();printf("%d\n",i);/*0*/printf("signedj=%d,unsignedj=%u\n",j,j);printf("signedk=%d,unsignedk=%u\n",k,k);}二級(jí)C語言復(fù)習(xí)●switch語句的執(zhí)行規(guī)則
(1)main(){intc;while((c=getchar())!='\n'){switch(c-'2'){ case0:case1:putchar(c+4); case2:putchar(c+4);break; case3:putchar(c+3); default:putchar(c+2);break;}}}若執(zhí)行時(shí)從鍵盤上輸入2473<CR>,則程序的輸出結(jié)果____________。/*668977*/二級(jí)C語言復(fù)習(xí)(2)有以下程序:
main(){inti;scanf("%d",&i);switch(i){ case1:printf("%d",i++); case2:printf("%d",i++); case3:printf("%d",i++); case4:printf("%d",i++);break; default:printf("END");}}
輸入數(shù)據(jù)1,則執(zhí)行以上程序輸出結(jié)果是1234
二級(jí)C語言復(fù)習(xí)
●for循環(huán)(continue語句的作用)(1)main(){inty=9;for(;y>0;y--) if(y%3==0) {printf("%d",--y);continue;}}A)741 B)852 C)963 D)875421二級(jí)C語言復(fù)習(xí)(2)voidmain()(break語句的作用){ints=0,k;for(k=7;k>4;k--){switch(k){case1:case4:case7:s++;break; case2: case3: case6:break; case0: case5:s+=2; break;}}printf("s=%d",s);/*s=3*/}二級(jí)C語言復(fù)習(xí)(3)執(zhí)行語句for(i=0;i++<10;);后變量i的值是[](表達(dá)式中自加)A)9 B)10
C)11 D)不變?nèi)粲幸韵露x語句,則sizeof(x)和sizeof(y)的值是[]struct{inthour;intminute;intsecond}x,*y;y=&x;
A)6,2 B)6,6C)3,2 D)3,3二級(jí)C語言復(fù)習(xí)●函數(shù)的定義與調(diào)用,內(nèi)部靜態(tài)變量運(yùn)行以下程序,輸出的結(jié)果是[]#include<stdio.h>main(){inta=1,b=2;printf("%d",func(a,b));printf("%d",func(a,b));}
func(intx,inty){staticinta=0,b=1;a=b*2;二級(jí)C語言復(fù)習(xí)
b=a+x+y;return(b);}A)5,5 B)4,7
C)5,13 D)5,7●變量的作用域下面程序的輸出是[]#inckude<stdio.h>inta[5],k;main(){fun1();fun3();fun2();fun3();}二級(jí)C語言復(fù)習(xí)fun1(){for(k=0;k<5;k++)a[k]=0;}fun2(){inta[5];for(k=0;k<5;k++)a[k]=k;}fun3(){for(k=0;k<5;k++)printf("%d",*(a+k));}A)0000000000 B)0000001234C)0000012345 D)0123400000二級(jí)C語言復(fù)習(xí)●用下列語句定義a,b,c,然后執(zhí)行b=a,c=‘b’+b,則b,c的值為[](寬度不同的整數(shù)之間相互賦值)longa=0xffffff;intb;charc;A)0xffffff和ox61 B)-1和98
C)-1和97 D)指向同一地址●執(zhí)行下面程序片段后的輸出結(jié)果是[]floatf1=111.111;printf("%%ff1=%8.3f\n",f1);
A)%ff1=111.111 B)%ff1=111.111C)f1=111.111 D)f1=111.111二級(jí)C語言復(fù)習(xí)●設(shè)x,y為int型變量,z為float型變量,有以下語句:scanf("%2d%*2d%2d%f",&x,&y,&z);printf("%d,%d,%f",x,y,z);
現(xiàn)在從鍵盤輸入12345678,則輸出結(jié)果為[]
A)12,56,78.000000 B)12,34,5678.000000C)12,56,78.0 D)輸出格式有誤,不能通過編譯●設(shè)有以下程序片段,執(zhí)行后的輸出結(jié)果是[]intx=100,y=200;printf("%d",(x,y));A)100 B)200C)100,200 D)編譯出錯(cuò)二級(jí)C語言復(fù)習(xí)●下列程序輸出結(jié)果是[](閱讀程序的方法)#include<stdio.h>main(){intn[2],i,j,k;for(i=0;i<2;i++)n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+1;printf("%d\n",n[k]);
}
上面程序的
A)不確定的值 B)3 C)2 D)i0011j0101n[0]13n[1]23二級(jí)C語言復(fù)習(xí)●下列程序運(yùn)行結(jié)果為[]。
#defineP3#defineS(a)P*a*amain(){intar;ar=S(3+5);printf("\n%d",ar);}A)192 B)29C)27 D)25二級(jí)C語言復(fù)習(xí)●設(shè)有以下程序:
#include<stdio.h>main(){inta[9]={1,2,3,4,5,6,7,8,9},*p;p=a;printf("%d",p);printf("%x",p+5);}
執(zhí)行此程序,如果第一個(gè)printf語句輸出的值是200,則第二個(gè)printf語句的輸出是[]A)210 B)205
C)D2 D)195二級(jí)C語言復(fù)習(xí)●若有以下說明和語句,則對(duì)a數(shù)組元素的正確引用的選項(xiàng)是[]inta[4][5],(*p)[5];p=a;A)p+1 B)*(p+3) C)*(p+1)+3 D)*(*p+2)●執(zhí)行下面語句后,表達(dá)式*(p[0]+1)+**(q+2)的值為[]。
inta[]={5,4,3,2,1},*p[4]={a+3,a+2,a+1,a},**q=p;/*p[0]=a+3;p[1]=a+2;p[2]=a+1;p[3]=a;*//*p[0][1]+q[2][0]=1+4=5*/A)8 B)7C)6 D)5
二級(jí)C語言復(fù)習(xí)●若有以下程序片段:
inta[12]={0},*p[3],**pp,i;for(i=0;i<3;i++)p[i]=&a[i*4];/*p[0]=&a[0],p[1]=&a[4],p[2]=&a[8]*/pp=p;
則對(duì)數(shù)組的錯(cuò)誤引用是[]A)pp[0][1] B)a[10]
C)p[3][1] D)*(*(p+2)+2)二級(jí)C語言復(fù)習(xí)●以下程序執(zhí)行結(jié)果是[]。
point(cahr*pt);main(){charb[4]={'a','c','s','h'},*pt=b;point(pt);printf("%c\n",*pt);}point(char*p){p+=3;}A)s B)cC)h D)a二級(jí)C語言復(fù)習(xí)●下面程序的輸出是[]main(){structcmplx{intx;inty;}cnum[2]={1,3,2,7};printf("%d\n",cunm[0].y/cnum[0].x*cnum[1].x);}A)0 B)1C)3D)6二級(jí)C語言復(fù)習(xí)●下列語句中可以完成建立n個(gè)結(jié)點(diǎn)的單向鏈表的功能的選項(xiàng)是[]。(其中,head指向鏈表的第一個(gè)結(jié)點(diǎn),new指向新結(jié)點(diǎn))
A)head->next=new;new->next=head;
B)new->next=head;head=new;C)new->next=head;head=new;new->next=NULL;D)head->next=NULL;head->next=new;new->next=head;二級(jí)C語言復(fù)習(xí)●若有運(yùn)算符"<<","sizeof","^","&=",按優(yōu)先級(jí)的正確排序是[]A)sizeof,&=,<<,^
B)sizeof,<<,^,&=C)^,<<,sizeof,&=D)<<,^,&=,sizeof×●在C語言中,要求運(yùn)算數(shù)必須是整型或字符型的運(yùn)算符是[]A)&& B)& C)! D)||×●表達(dá)式0x13&0x17的值是[],0x13|0x17的值是[]
A)0x17
B)0x13C)0x18 D)0xec二級(jí)C語言復(fù)習(xí)×●若有以下程序段:intx=1,y=2;x=x^y;y=y^x;x=x^y;
則執(zhí)行完以上語句后x和y的值分別是[]A)x=1,y=2 B)x=2,y=2
C)x=2,y=1 D)x=1,y=1二級(jí)C語言復(fù)習(xí)C程序設(shè)計(jì)復(fù)習(xí)
(三)編程重點(diǎn)●選擇語句,循環(huán)語句●數(shù)組●函數(shù)●結(jié)構(gòu)體●文件復(fù)習(xí)上機(jī)題(55題)二級(jí)C語言復(fù)習(xí)需要掌握的上機(jī)題(譚浩強(qiáng)著,C程序設(shè)計(jì)):P65:6,8,9,10,12P85:9,10P104:3,5,7,9P120:1,2,3,4,6,7,8,14P141:2,4,5,6,8,11,13,14,15P186:1,3,5,6,9,10,16,17P1991,2P258:3,4,5,7,8,14,17,20P296:3,5,8,12P327:5,6,7,10,12二級(jí)C語言復(fù)習(xí)main()/*講解p105習(xí)題5.7(用循環(huán)結(jié)構(gòu)更簡單)*/{inta,b,c,d,e,count=0;longm;clrscr();printf("Inputm:");scanf("%ld",&m);if(m){e=m%10;m/=10;count++;}if(m){d=m%10;m/=10;count++;}if(m){c=m%10;m/=10;count++;}if(m){b=m%10;m/=10;count++;}if(m){a=m%10;m/=10;count++;}printf("\ncount=%d",count);二級(jí)C語言復(fù)習(xí)
printf("\nlefttoright:");switch(count){case5:printf("%2d",a);case4:printf("%2d",b);case3:printf("%2d",c);case2:printf("%2d",d);case1:printf("%2d",e); break;case0:printf("errordata!");}printf("\nrighttoleft:");switch(count)二級(jí)C語言復(fù)習(xí)
{case5:case4:case3:case2:case1:printf("%2d",e); if(count==1)break; printf("%2d",d); if(count==2)break; printf("%2d",c); if(count==3)break; printf("%2d",b); if(count==4)break; printf("%2d",a);}}二級(jí)C語言復(fù)習(xí)5.7解法2main(){inta[5],count=0;longn;printf(“Inputn:”);scanf(“%ld”,&n);printf(“\n”);while(n){printf(“%2d”,a[count]=n%10);count++;n/=10;}printf(“\n”);for(n=count-1;n>=0;n--)printf(“%2d”,a[n]);printf(“\ncount=%d”,count);}二級(jí)C語言復(fù)習(xí)/*6.1*/講解main(){inta,b,temp,product;printf(“Inputtwopositiveintegers:”);scanf(“%d%d”,&a,&b);if(a<0||b<0)abort();product=a*b;while(b!=0){temp=a%b;a=b;b=temp;}printf(“greatestcommondivisor=%d\n”,a);printf(“l(fā)owestcommonmultiple=%d\n”,product/a);}二級(jí)C語言復(fù)習(xí)習(xí)題6.3求S=a+aa+aaa+……+aaa……a的值。假設(shè)a的值是2。講解:tn=tn-1*10+amain(){intn,a,i;longs,t;printf("Entera&n:");scanf("%d%d",&a,&n);if(a>9||a<0||n<0)abort();/*提示該函數(shù)*/for(s=0,t=0,i=0;i<n;i++){ t=t*10+a; s+=t;}printf("\ns=%ld",s);}二級(jí)C語言復(fù)習(xí)/*ex0604*/講解main(){floatfac,sum;intj;for(sum=0,j=1,fac=1;j<=20;j++){fac*=j;sum+=fac;}printf(“sum=%f\n”,sum);}二級(jí)C語言復(fù)習(xí)/*ex0606*/講解main(){inti,j,k,m;for(m=100;m<=999,m++){i=m%10;/*個(gè)位*/j=m/10%10;/*十位*/k=m/100;/*百位*/if(m==i*i*i+j*j*j+k*k*k)printf(%-4d”,m);}printf(“\n”);}二級(jí)C語言復(fù)習(xí)/*ex0608*/前項(xiàng)分子+分母為后項(xiàng)分子;前項(xiàng)分子為后項(xiàng)分母main(){intm;floata=2.0,b=1.0,sum=0.0;/*a為分子b為分母*/for(m=1;m<=20;m++){sum+=a/b;a=a+b;/*前項(xiàng)分子+分母為后項(xiàng)分子*/b=a-b;/*前項(xiàng)分子為后項(xiàng)分母*/}printf(“sum=%f\n”,sum);}二級(jí)C語言復(fù)習(xí)main()/*ex0614*/講解{inti,k;for(k=1;k<5;k++){for(i=0;i<4-k;i++)printf("");for(i=0;i<2*k-1;i++)printf("*");printf("\n");}for(;k<8;k++){for(i=0;i<k-4;i++)printf("");for(i=0;i<15-2*k;i++)printf("*");printf("\n");}}二級(jí)C語言復(fù)習(xí)#include"stdio.h”#defineN10main()/*習(xí)題7-2*/講解{inti,j,k,t,a[N];printf("\n\ninputis");for(i=0;i<N;i++) scanf(“%d”,&a[i]);/*輸入數(shù)據(jù)*/for(i=0;i<N-1;i++){ k=i; /*k記住最大者之下標(biāo)*/ for(j=i+1;j<N;j++) if(a[k]>a[j])k=j;/*修改k*/ if(k!=i){t=a[k];a[k]=a[i];a[i]=t;}}for(i=0;i<N;i++) printf("%4d",a[i]);}二級(jí)C語言復(fù)習(xí)#include“stdio.h”
/*習(xí)題7.4*/講解#defineN5main(){inta[N+1]={1,4,6,8,10},x,i,j;printf(“Enterx:”);/*輸入一個(gè)數(shù)*/scanf("%d",&x);for(i=0;i<N&&x>a[i];i++)/*找x應(yīng)該放的位置*/;for(j=N-1;j>=i;j--)/*將應(yīng)放位置i及其后的數(shù)據(jù)依次后移*/ a[j+1]=a[j];a[i]=x; /*將x插入到相應(yīng)位置*/for(i=0;i<N+1;i++) printf("%6d",a[i]);}二級(jí)C語言復(fù)習(xí)#include"stdio.h"#defineN10main()/*習(xí)題7-5*/{ inta[N]; inti,j,t; for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0,j=N-1;i<j;i++,j--){ t=a[i]; a[i]=a[j];a[j]=t; } printf("\noutputarray\n"); for(i=0;i<N;i++) printf("%6d",a[i]);}二級(jí)C語言復(fù)習(xí)#defineN10main()/*習(xí)題7.6方法一*/{inta[N][N],i,j;for(i=0;i<N;i++) a[i][0]=a[i][i]=1;/*第0列和對(duì)角線上元素置1*/ for(i=2;i<N;i++)/*從第二行開始*/ for(j=1;j<i;j++)/*前行j-1與j列之和為本行j列的值*/ a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;i<N;i++){ for(j=0;j<i+1;j++) printf("%6d",a[i][j]);printf("\n");}}二級(jí)C語言復(fù)習(xí)main()/*習(xí)題7.8找鞍點(diǎn),用宏定義指定M,N的值*/{inti,j,k,a[M][N],a,maxj;
輸入數(shù)組a的數(shù)據(jù)。
for(i=0;i<M;i++){for(j=1,maxj=0;j<N-1;j++)/*maxj記錄i行上最大者下標(biāo)*/if(a[i][j]>a[i][maxj])maxj=j;/*循環(huán)結(jié)束后,a[i][maxj]是i行上最大者*/for(k=0;k<M;k++)/*檢查a[i][maxj]是否maxj列上的最小者*/ if(a[i][maxj]>a[k][maxj])break;/*不是maxj列上的最小者*/if(k>=M)break;/*a[i][maxj]是鞍點(diǎn)*/}if(i>=M)無鞍點(diǎn),否則a[i][maxj]是鞍點(diǎn)}二級(jí)C語言復(fù)習(xí)/*打印圖案 7.11*/#include"stdio.h"#defineN5main(){ inti,j; printf("\n\n"); for(i=0;i<N;i++){ for(j=0;j<i+20;j++)putchar(''); for(j=0;j<N;j++)putchar('*'); printf("\n"); }}二級(jí)C語言復(fù)習(xí)#include"stdio.h”#include<string.h>#defineN20main()/*習(xí)題7-13*/{ charstr1[N],str2[N]; inti,j; printf("\ninputstring1:"); gets(str1); printf("\ninputstring2:"); gets(str2); for(i=0;str1[i]!='\0';i++); j=0; while((str1[i++]=str2[j++])!='\0') ; printf("\nnewstring1is:\t%s\t",str1);}二級(jí)C語言復(fù)習(xí)#include<stdio.h>#sefineMAX100main()/*習(xí)題7.14*/{chars1[MAX],s2[MAX];inti=0;printf(“Inputthefirststring:”);gets(s1);printf(“Inputthesecondstring:”);gets(s2);while(s[i]!=‘\0’&&s2[i]!=‘\0’&&s1[i]==s2[i])i++;printf(“%d\n”,s1[i]-s2[i]);}二級(jí)C語言復(fù)習(xí)#include"stdio.h“#include<string.h>#defineN20main()/*習(xí)題7-15*/{ charstr1[N],str2[N]; inti=0; printf("\ninputstring2:"); gets(str2); while((str1[i]=str2[i])!='\0') i++; printf("\nstring1is:\t%s",str1);}二級(jí)C語言復(fù)習(xí)#include"stdio.h"/*-------------------------------*/intmaxM(intm,intn){intr;while(n!=0){r=m%n;m=n;n=r;}return(m);}/*-------------------------------*/intminM(intm,intn){return(m*n/maxM(m,n));}voidmain(){inta,b;printf("\n\tEntertwointegers:");scanf("%d%d",&a,&b);printf("\nMfactor:%d",maxM(a,b));printf("\nMmultiple%d",minM(a,b));}講解習(xí)題8-1二級(jí)C語言復(fù)習(xí)#include"stdio.h”#include"math.h“/*講解習(xí)題8-3*/intisPrimeNum(intn){inti,k;k=sqrt(n);for(i=2;i<=k;i++) if(n%i==0)return0;return1;}/*-----------------------------------------------*/voidmain(){intm;printf("\n\tInputaninteger:");scanf("%d",&m);if(isPrimeNum(m))printf("\n\t%disaprimenumber\n",m);elseprintf("\n\t%disnotaprimenumber\n",m);}二級(jí)C語言復(fù)習(xí)#include"stdio.h”/*講解習(xí)題8-5*/#include"string.h"voidreverse(chars[]){inti=0,j=strlen(s)-1;charc;while(i<j){ c=s[i];s[i]=s[j];s[j]=c; i++; j--;}}voidmain(){charstr[100];printf("\n\tInputastring:");gets(str);reverse(str);printf("\n\tNewstringis%s",str);}二級(jí)C語言復(fù)習(xí)#include"stdio.h“/*講解習(xí)題8-6*/voidstringcat(chars[],chart[]){inti,j;i=j=0;while(s[i]!='\0')i++;while((s[i]=t[j])!='\0'){ i++;j++;}/*while((s[i++]=t[j++])!='\0')*/}/*-----------------------------------------------*/voidmain(){chars1[100],s2[30];printf("\n\tInputtwostrings:");scanf("%s%s",s1,s2);stringcat(s1,s2);printf("\n\tNewstringis%s:%s",s1,s2);}二級(jí)C語言復(fù)習(xí)#include“stdio.h“
/*習(xí)題8-9*/intalpha,digit,blank,others;intis_pha(charc)/*ifcisachar,returntrue,elsereturnfalse*/{return((c>='A'&&c<='Z')||(c>='a'&&c<='z')?1:0);}/*-----------------------------------------------*/intis_digit(charc)/*ifcisadigit,returntrue,elsereturnfalse*/{return((c>='0'&&c<='9')?1:0);}/*-----------------------------------------------*/intis_blank(charc)/*ifcisaspace,returntrue,elsereturnfalse*/{return((c==''||c=='\t'||c=='\n')?1:0);}/*-----------------------------------------------*/二級(jí)C語言復(fù)習(xí)voidcount(chars[]){intis_pha(char),is_digit(charc),is_blank(char);inti;alpha=digit=blank=others=0;for(i=0;s[i]!='\0';i++)if(is_pha(s[i]))alpha++;elseif(is_digit(s[i]))digit++; elseif(is_blank(s[i]))blank++;elseothers++;}voidmain(){chars[100];gets(s);count(s);printf("\n\talpha:%d,digit:%d",alpha,digit);printf("\n\tbalnks:%d,others:%d",blank,others);}二級(jí)C語言復(fù)習(xí)#include"stdio.h"#include"string.h"#include"ctype.h"voidgetMaxLenWord(chars[],chart[])/*習(xí)題8-10*/{inti=0,j;charsub[30];/*臨時(shí)變量*/
strcpy(t,""); /*strset(t,'\0');*/while(s[i]!='\0'){while(s[i]=='')i++;/*skiptheblanks*/j=0;while(isalpha(s[i]))/*savecurrentwordtosub*/sub[j++]=s[i++];sub[j]='\0';if(strlen(sub)>strlen(t))strcpy(t,sub);}}voidmain(){charstr[200],t[30];gets(str);getMaxLenWord(str,t);printf("\n\tMaxlengthword:%s\n",t);}二級(jí)C語言復(fù)習(xí)#include"stdio.h“/*習(xí)題8-16*//*高位部*16+本位值*/longintcovert(chars[]){inti;longintn=0;for(i=0;s[i]!='\0';i++)if(s[i]>='A'&&s[i]<='F') n=n*16+(s[i]-‘A’+10);/*高位部*16+本位值*/elseif(s[i]>='a'&&s[i]<='f') n=n*16+(s[i]-'a'+10); elseif(s[i]>='0'&&s[i]<='9') n=n*16+(s[i]-'0'); elsebreak;returnn;}voidmain(){chart[6];scanf("%s",t);/*anumberbasedon16*/printf("\n\tThevalueoftenis:%ld",covert(t));}二級(jí)C語言復(fù)習(xí)#include"stdio.h“/*講解習(xí)題8-17*/voidprint(intn){inti;if((i=n/10)!=0) print(i);putchar('\t');putchar(n%10+'0');}/*------------------------------------------*/voidmain(){intn;printf("\n\tEnterainteger:");scanf("%d",&n);print(n);}二級(jí)C語言復(fù)習(xí)習(xí)題9.1#defineexchange(x,y) t=x,x=y,y=tmain(){inta,b,t;scanf(“%d%d”,&a,&b);exchange(a,b);printf(“a=%d,b=%d\n”,a,b);}二級(jí)C語言復(fù)習(xí)/* P1999.2習(xí)題 */#defineMod(a,b)(a)%(b)main(){ intx,y,t; printf("Inputtwointegers:"); scanf("%d%d",&x,&y); if(x<y){ t=x;x=y;y=t; } printf("\n%dMOD%d=%d\n",x,y,Mod(x,y));}二級(jí)C語言復(fù)習(xí)25107981643pbegin/* 10.3*//*要求用3個(gè)函數(shù),一個(gè)輸入,一個(gè)處理,一個(gè)輸出*/#defineN10/*--------------------------------------------*/voidinput(int*p){int*begin;printf("\nEnter10numbers:");for(begin=p;p<begin+N;p++) scanf("%d",p);}二級(jí)C語言復(fù)習(xí)/*--------------------------------------------*//*將最大的一個(gè)與最后一個(gè)互換,將最小的一個(gè)與第一個(gè)數(shù)互換*/voidprocess(int*p)/*此算法有錯(cuò),如下圖的數(shù)據(jù),則結(jié)果錯(cuò)*/{int*max,*min,*begin,t;max=min=p;/*開始時(shí),將最大和最小指針指向第一數(shù)*/for(begin=p;p<begin+N;p++){if(*p>*max)max=p;if(*p<*min)min=p;}/*交換操作:最大數(shù)*/t=*(begin+N-1);*(begin+N-1)=*max;*max=t;/*交換操作:最小數(shù)*/t=*begin;*begin=*min;*min=t;}10527983641maxmin二級(jí)C語言復(fù)習(xí)voidprocess(int*p)/*修改后*/{int*max,*min,*begin,t;begin=p;max=min=p;/*開始時(shí),將最大和最小指針指向第一數(shù)*/for(;p<begin+N;p++)if(*p>*max)max=p;/*交換操作:最大數(shù)*/t=*(begin+N-1);*(begin+N-1)=*max;*max=t;for(p=begin;p<begin+N;p++)if(*p<*min)min=p;/*交換操作:最小數(shù)*/t=*begin;*begin=*min;*min=t;}二級(jí)C語言復(fù)習(xí)/*--------------------------------------------*/voidoutput(int*p){int*begin;printf("\nTheresultare:");for(begin=p;p<begin+N;p++) printf("%4d",*p);}/*--------------------------------------------*/main(){inta[N];
input(a);process(a);output(a);級(jí)C語言復(fù)習(xí)/* 10.4*/#defineN10/*--------------------------------------------*/voidexchange(int*a,intm){inti,t,j;for(i=0;i<m;i++){t=*(a+N-1);/*取出最后一個(gè)數(shù)暫存于t*/for(j=N-2;j>=0;j--)*(a+j+1)=*(a+j);/*從倒數(shù)第二個(gè)數(shù)開始各數(shù)右移一位*/*a=t;/*將t存入第一個(gè)位置*/}}二級(jí)C語言復(fù)習(xí)/*----10.4的主函數(shù)----------------------------------------*/main(){inti,m,a[N];printf("\nEnter%dnumbers:",N);for(i=0;i<N;i++) scanf("%d",&a[i]);printf("\n\tEnterm:");scanf("%d",&m);exchange(a,m);printf("\n\tResults:");for(i=0;i<N;i++) printf("%4d",a[i]);}/*--------------------------------------------*/二級(jí)C語言復(fù)習(xí)#defineMAX50/*10.5的解法*/intex1005(int*p,intn){inti,k=0,m=n;/*k記報(bào)數(shù),m記在位人數(shù)*/for(i=0;i<n;i++)*(p+i)=1;/*1表示在位,0不在位*/i=0;/*座位號(hào)*/while(m>1){if(*(p+i)==1){k++;/*報(bào)數(shù)*/if(k==3){*(p+i)=0;k=0;m--;}}i=(i+1)%n;}/*未完,接下頁*/二級(jí)C語言復(fù)習(xí)for(i=0;i<n;i++)if(*(p+i)==1)returni;}main(){inta[MAX],n;clrscr();printf(“Inputthenumbersofpeople:”);scanf(“%d”,&n);printf("last=%d\n",ex1005(a,n));}二級(jí)C語言復(fù)習(xí)/* 10.7*/#defineN10/*--------------------------------------------------------------*/voidcopystring(char*s,intm,char*t){char*p;for(p=s+m;p<=s+strlen(s);p++,t++) *t=*p;}/*---------------------------------------------------------------*/main(){chars[100],t[100];intm;printf("\nEnterastring:");gets(s);printf("\nEnterm:");scanf("%d",&m);copystring(s,m,t);printf("\n\ts=%s\tt=%s\n",s,t);}二級(jí)C語言復(fù)習(xí)voidcount(char*p,int*pu,int*pl,int*pb,int*pd,int*po)/*10.8*/{*pu=*pl=*pb=*pd=*po=0;while(*p!=‘\0’){if(*p>=‘A’&&*p<=‘Z’)(*pu)++;elseif(*p>=‘a(chǎn)’&&*p<=‘z’)(*pl)++;elseif(*p>=‘0’&&*p<=‘9’)(*pd)++;elseif(*p==‘
‘||*p==‘\t’)(*pb)++;else(*po)++;p++;}}二級(jí)C語言復(fù)習(xí)/*習(xí)題10.8的主函數(shù)*/main(){chars[100];intupper,lower,blank,digiter,other;printf(“Inputastring:”);gets(s);count(s,&upper,&lower,&blank,&digiter,&other);printf(“\nupper=%d\tlower=%d”,upper,lower);printf(“\nblank=%d\tdigiter=%d”,blank,digiter);printf(“\nother=%d”,other);}二級(jí)C語言復(fù)習(xí)/* 10.14*/#defineN10/*-------------------------------------------------------------------*/voidreverse(int*a,intn){int*p,t;p=a+n-1;while(a<p){t=*a;*a=*p;*p=t;a++;p--;}}/*-------------------------------------------------------------------*/main(){inti,a[N];printf("\n\tEnter%dnumbers:",N);for(i=0;i<N;i++)scanf("%d",a+i);reverse(a,N);printf("\n\tResults:");for(i=0;i<N;i++) printf("%4d",*(a+i));}二級(jí)C語言復(fù)習(xí)/*10.17*/intstrcomp(char*s1,char*s2){for(;*s1==*s2&&*s1!='\0‘&&*s2!=‘\0’;s1++,s2++) ;return*s1-*s2;}二級(jí)C語言復(fù)習(xí)/* 10.20
希望大家仔細(xì)閱讀*/#defineN5/*---------------選擇排序------------------*/voidsort(char**str,intn){char**t1,*t2,**p1,**p2; for(p1=str;p1<str+n-1;p1++){ t1=p1;/*暫定p1指向的字符串最小*/ for(p2=p1+1;p2<=str+n-1;p2++) if(strcmp(*t1,*p2)>0) t1=p2;/*讓t1始終指向小者*/ t2=*p1;/*p1中的地址與t1中的地址交換*/ *p1=*t1; *t1=t2; }}二級(jí)C語言復(fù)習(xí)/*--------------------------------------------*/main(){char*s[N]={"Pascal","C","Basic","Fortran","Java"};inti;sort(s,N);printf("\n\tResults:");for(i=0;i<N;i++) printf("%s\t",s[i]);}/*--------------------------------------------*/二級(jí)C語言復(fù)習(xí)“Pascal”“C”“Basic”“Fortran”“Java”S[0]S[1]S[2]S[3]S[4]“Pascal”“C”“Basic”“Fortran”“Java”S[0]S[1]S[2]S[3]S[4]二級(jí)C語言復(fù)習(xí)習(xí)題11.3structstudent{intnum;charname[20];intscore[3];}stu[5];main(){inti,j;for(i=0;i<5;i++){printf(“\nInputnum&name:”);scanf(“%d%s”,&stu[i].num,syu[i].name);printf(“\nInputscores:”);二級(jí)C語言復(fù)習(xí)for(j=0;j<3;j++) scanf(“%d”,&stu[i].score[j]);}print(stu,5);}print(structstudent*pst,intn){intk;for(k=0;k<n;k++){ printf(“\n%d,%s,“,pst->num,pst->name); printf(“%d,%d,%d”,pst->score[0],pst->score[1], pst->score[2]);pst++;}}二級(jí)C語言復(fù)習(xí)11.5 #defineN10/*有N個(gè)學(xué)生數(shù)*/ #defineM3/*各修M門課程*/typedefstruct{/*學(xué)生結(jié)構(gòu)*/ intno; charname[20];intscore[M];intave;}STUD;/*------------------------------------------------------------------------*/voidinput(STUD*s)/*從鍵盤上輸入N個(gè)學(xué)生的信息*/{ inti,j,temp;/*計(jì)算各學(xué)生的平均成績*/ for(i=0;i<N;i++,s++){ printf("\tEnterNoNamescore[0]score[1]score[2]\n"); scanf("%d%s",&s->no,s->name); for(temp=0,j=0;j<M;j++){ scanf("%d",&s->score[j]); temp+=s->score[j]; } s->ave=temp/M; }}二級(jí)C語言復(fù)習(xí)/*-------------------------------------------------------------------*/voidprintAver(STUD*s)/*輸出N個(gè)學(xué)生的總平均成績*/{ inti,sum=0; for(i=0;i<N;i++,s++) sum+=s->ave; printf("\tTotalaverageis:%d\n",sum/N);}二級(jí)C語言復(fù)習(xí)/*----------------------------------------------------------------------------------*/voidprintMax(STUD*s)/*輸出N個(gè)學(xué)生中平均分最高的學(xué)生信息*/{ inti; STUD*p=s; for(i=0;i<N;i++,s++) if(p->ave<s->ave) p=s; printf("\tThetopstudent'%d%s",p->no,p->name); for(i=0;i<M;i++) printf("%d",p->score[i]); printf("%d\n",p->ave);}二級(jí)C語言復(fù)習(xí)/*-------------------------------------------------------------------------------*/main(){ STUDstu[N]; system("cls"); input(stu); /*輸入N個(gè)學(xué)生的信息*/ printAver(stu);/*輸出N個(gè)學(xué)生的總平均成績*/ printMax(stu);/*輸出N個(gè)學(xué)生中平均分最高的學(xué)生信息*/}二級(jí)C語言復(fù)習(xí)11.8#include"stdio.h"#defineLENsizeof(structstudent)typedefstructstudent{ intno; intscore; structstudent*next;}STUD;二級(jí)C語言復(fù)習(xí)/*輸出head指針?biāo)傅逆湵?帶頭結(jié)點(diǎn))*/voidprint(STUD*head){STUD*p;p=head->next;if(p!=NULL){ printf("\n\tThelistis:\n"); while(p!=NULL){ printf("\tNum=%dScore=%d\n",p->no,p->score); p=p->next; }}}二級(jí)C語言復(fù)習(xí)STUD*create(){STUD*head,*last,*new;head=last=(STUD*)malloc(LEN);/*申請(qǐng)一個(gè)頭節(jié)點(diǎn)*/last->next=NULL;while((new=(STUD*)malloc(LEN))!=NULL)/*申請(qǐng)一個(gè)數(shù)據(jù)節(jié)點(diǎn)*/{printf(“\nEnterNo&score:\n");scanf("%d%d",&new->no,&new->score);if(new->no!=0){new->next=NULL;last->next=new;last=new;}else{free(new);break;}/*建立鏈表結(jié)束*/}returnhead;/*返回鏈表的表頭*/}二級(jí)C語言復(fù)習(xí)voidinsert(STUD*head,STUD*pt)/*將pt節(jié)點(diǎn)按學(xué)號(hào)從小到大插入到head為頭指針的鏈表*/{STUD*p;p=head;while(p->next!=NULL&&p->next->no<pt->no)p=p->next;pt->next=p->next;p->next=pt;}二級(jí)C語言復(fù)習(xí)STUD*merge(STUD*pA,STUD*pB)/*將PA,PB兩個(gè)鏈表合并*/{ STUD*pH,*pT; pH=pA;pA=pA->next;pH->next=NULL; while(pA!=NULL){/*將pA鏈表按要求插入pH鏈表*/ pT=pA;pA=pA->next; insert(pH,pT); } pB=pB->next; while(pB!=NULL){/*將pB鏈表按要求插入pH鏈表*/ pT=pB;pB=pB->next; insert(pH,pT); } returnpH;}二級(jí)C語言復(fù)習(xí)main(){ STUD*pa,*pb,*pc; system("cls"); printf("\tCreatelinkA\n");pa=create(); printf("\n\tCreatelinkB\n\n");pb=create(); pc=merge(pa,pb); print(pc);}二級(jí)C語言復(fù)習(xí)11.12將單鏈表倒置●將帶表頭結(jié)點(diǎn)的單鏈表倒置(先看下頁的算法思想)STUD*reverse(STUD*head){STUD*movenode,*remains;remains=head->next;/*remains指向剩余部分*/head->next=NULL;/*此時(shí)head指向的鏈表只有一個(gè)表頭結(jié)點(diǎn)*/while(remains!=NULL)/*若鏈表未處理完*/{movenode=remains;/*movenode指向卸下的結(jié)點(diǎn)*/re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 危險(xiǎn)化學(xué)品事故災(zāi)難應(yīng)急預(yù)案例文(2篇)
- 2025年婦產(chǎn)科護(hù)士年度工作總結(jié)范文(2篇)
- 工具及勞動(dòng)保護(hù)用品發(fā)放制度模版(3篇)
- 2025年學(xué)校意識(shí)形態(tài)工作總結(jié)范文(2篇)
- 2025年理賠部主任助理競(jìng)聘演講(3篇)
- 2025年銷售個(gè)人年度工作計(jì)劃模版(2篇)
- 煤礦“六大系統(tǒng)”管理制度(3篇)
- 2025年財(cái)務(wù)下半年工作計(jì)劃樣本(3篇)
- 大班畢業(yè)典禮活動(dòng)方案樣本(4篇)
- 2025年餐飲銷售工作計(jì)劃范例(二篇)
- 中國商貿(mào)文化商道
- 云數(shù)據(jù)中心建設(shè)項(xiàng)目可行性研究報(bào)告
- 《新生兒視網(wǎng)膜動(dòng)靜脈管徑比的形態(tài)學(xué)分析及相關(guān)性研究》
- 無重大疾病隱瞞保證書
- 2024年春概率論與數(shù)理統(tǒng)計(jì)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 企業(yè)形象設(shè)計(jì)(CIS)戰(zhàn)略策劃及實(shí)施計(jì)劃書
- 2023-2024學(xué)年廣西桂林市高二(上)期末數(shù)學(xué)試卷(含答案)
- xx公路與天然氣管道交叉方案安全專項(xiàng)評(píng)價(jià)報(bào)告
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 6-31-01-09 工程機(jī)械維修工(堆場(chǎng)作業(yè)機(jī)械維修工)人社廳發(fā)202226號(hào)
- DB11∕T 1077-2020 建筑垃圾運(yùn)輸車輛標(biāo)識(shí)、監(jiān)控和密閉技術(shù)要求
- 《孫子兵法》與執(zhí)政藝術(shù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論