程序設計語言Ⅱ復習內容_第1頁
程序設計語言Ⅱ復習內容_第2頁
程序設計語言Ⅱ復習內容_第3頁
程序設計語言Ⅱ復習內容_第4頁
程序設計語言Ⅱ復習內容_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《程序設計語言Ⅱ》復習第1章程序設計和C語言C語言程序的結構特點:1.一個程序由一個或多個源程序文件組成。一個源程序文件中可以包括三個部分:預處理指令#include<stdio.h>等全局聲明在函數(shù)之外進行的數(shù)據聲明函數(shù)定義每個函數(shù)用來實現(xiàn)一定的功能2.函數(shù)是C程序的主要組成部分。一個C程序是由一個或多個函數(shù)組成的,函數(shù)是C程序的基本單位;必須包含一個主(main)函數(shù)(只能有一個);每個函數(shù)都用來實現(xiàn)一個或幾個特定功能;被調用的函數(shù)可以是庫函數(shù),也可以是自己編制設計的函數(shù);3.一個函數(shù)包括兩大部分:函數(shù)首部和函數(shù)體。函數(shù)首部包括:函數(shù)類型、函數(shù)名、參數(shù)類型和參數(shù)名;函數(shù)體包括:聲明部分和執(zhí)行部分;4.程序總是從main函數(shù)開始執(zhí)行,main函數(shù)的書寫位置可以任意。5.C程序對計算機的操作由C語句完成。6.數(shù)據聲明和語句最后必須有分號。7.C語言本身不提供輸入輸出語句,由系統(tǒng)輸入輸出函數(shù)實現(xiàn)。8.程序應當包含注釋,增加可讀性。注釋有兩種方式://:單行注釋可單獨占一行,可出現(xiàn)在一行中其他內容的右側;/*……*/:塊式注釋可包含多行運行C程序的步驟與方法:1.上機輸入和編輯源程序(.c文件)2.對源程序進行編譯(.obj文件)3.進行連接處理(.exe文件)4.運行可執(zhí)行程序,得到運行結果例如:C源程序的基本單位是:函數(shù),其中主(main)函數(shù)必不可少。C語言中一個函數(shù)由函數(shù)首部和函數(shù)體兩大部分組成。若C程序中要調用一些標準輸入輸出庫函數(shù),文件開頭應有預編譯命令:#include<stdio.h>。若C程序中要調用一些標準數(shù)學庫函數(shù),文件開頭應有預編譯命令:

#include<math.h>。定義符號常量n的值為100:#definen100。定義符號常量pi的值為3.14159:#definepi3.14159。C語言中大、小寫字符嚴格區(qū)分。(√)C程序的每一行只能寫一條語句。(×)C語言本身沒有輸入輸出語句,由系統(tǒng)函數(shù)實現(xiàn)輸入輸出功能。(√)對C程序中的注釋,編譯程序將忽略跳過。(√)第3章順序程序設計關鍵詞;標識符的命名規(guī)定;數(shù)據類型;常量、變量;運算符;表達式;C語句;數(shù)據的輸入與輸出。八進制、十六進制整數(shù)的寫法;轉義字符;運算符的優(yōu)先級問題;整數(shù)的取值范圍問題;不同數(shù)據類型混合運算時類型轉換規(guī)則。例如:代數(shù)式的C語言表達式是:(-b+sqrt(b*b-4*a*c))/(2*a)設a=2,b=5,x=2.5,y=4.5算術表達式(float)a+b%2+(int)x/(int)y的值是:(3.0)若有定義:inta=10,b;執(zhí)行語句:b=++a;a=b++;后,a=11,b=12。設有inta=1;doubleb=2.5;charc=’3’;則表達式(a+b-c)的結果是(),其數(shù)據類型是()。C語言規(guī)定標識符只能由三種字符組成,分別是:字母、數(shù)字、下劃線且第一個字符不能是數(shù)字字符。若x=3,y=5則賦值表達式x+=y/=y%x的值是:5。若ch為int型,ch=’B’+’7’-‘4’的值是:69若ch為char型,ch=’a’+’8’-‘5’的值是:‘d’。利用scanf(“x=%d,y=%d”,&x,&y);使x和y的值分別為24和35,鍵盤輸入格式為:x=24,y=35。若a=12.6,b=48.851,printf(“x=%8.2f,y=%-8.2f”,a,b);的輸出結果為:

x=□□□12.60,y=48.85□□□。若一個算術表達式中出現(xiàn)實型數(shù)據參加運算,則整個表達式的結果是雙精度型的。(√)在C語言中可以表示數(shù)學上的任意的實數(shù)和整數(shù)。(×)char,while,else,scanf,printf均是C語言的關鍵字。(×)下面正確的字符常量是:(B)A)‘abc’B)‘\101’C)“0”D)‘x321’以下四個常量中,正確的是(B)A)‘at’B)0xabcC)-0fffD)01188putchar函數(shù)可以向終端輸出一個(D)A)整型值B)實型值C)字符串D)字符型值下面四個選項中,均是正確的八進制數(shù)或十六進制數(shù)的選項是:(C)A)0160x8f018B)0abc0170xaC)010-0x110xffD)0a127ff-123合法的浮點數(shù)是:(A)A)160.0B)1.4e3.0C)521D).e5編程實現(xiàn)從鍵盤輸入圓半徑,計算并輸出圓的周長和面積第4章選擇結構關系運算符和關系表達式;邏輯運算符和邏輯表達式;條件運算符和條件表達式;if語句、switch語句的語法;if與else的配對規(guī)則(else總是與上面最近未配對的if配對);分支結構的嵌套。程序設計的三種基本流程控制結構是:順序結構、選擇結構、循環(huán)結構;例如:C語言中邏輯“真”和“假”值分別用1和0表示,任何非0值參加邏輯運算時均作為邏輯真(或1)值。表示a是正偶數(shù)的關系表達式為:(a>0&&a%2==0)數(shù)學命題“100≤a≤200”的C語言表達式為:(a>=100&&a<=200)判斷字符變量c是英文字母的表達式為:(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’)。若a=3,b=2,c=1,表達式f=a>b>c的值是:(0)邏輯表達式:x-y>z&&x%2==0||!x+3!=8&&!y(其中x=4,y=1,z=3)的值是:(0)。關系運算符的優(yōu)先級低于&&運算符的優(yōu)先級。(×)!運算符的優(yōu)先級高于算術運算符的優(yōu)先級。(√)表達式max=a>b?a:b改用if語句表示為:if(a>b)max=a;elsemax=b;下列的語句中哪個正確,哪個錯誤?if(x>0)printf(“%f”,x)elseprintf(“%f”,-x);/*F*/

if(x>0){x=x+y;printf(“%f”,x);}elseprintf(“%f”,-x);/*T*/

if(x>0){x=x+y;printf(“%f”,x);};elseprintf(“%f”,-x);/*F*/

if(x>0)x=x+y;printf(“%f”,x);elseprintf(“%f”,-x);/*F*/下列運算符中優(yōu)先級最高的是:(B)A)<B)+C)&&D)!=語句:k=(a<b)?((a<c)?a:c):((b<c)?b:c);等價的if語句是:if(a<b)if(a<c)k=a;elsek=c;elseif(b<c)k=b;elsek=c;下面程序的運行結果是什么?(1)intmain(){inta,b,c,x;a=b=c=0;if(a)x=20;elseif(!b)x=15;elseif(!c)x=10;elsex=5;printf(“x=%d”,x);return0

;} 運行結果:x=15(2)#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1: switch(y) {case0:a++;break; case1:b++;break; } case2:a++;b++;break;

}printf("a=%d,b=%d\n",a,b);} 運行結果:a=2,b=1編程實現(xiàn)求分段函數(shù)y=f(x)的值,x由鍵盤輸入。其中main(){floatx,y;printf("inputx:");scanf("%f",&x);if(x<1.0)y=x*x-1;elseif(x>1.0)y=x*x+1;elsey=x*x;printf("f(%f)=%f\n",x,y);}編程實現(xiàn)從鍵盤輸入三個整數(shù),按由小到大的順序輸出。第5章循環(huán)結構while、do-while、for語句的語法、流程控制功能及其它們的等價寫法;break、continue語句的功能;循環(huán)的嵌套。例如:把語句for(i=1,sum=0;i<=10;i++)sum=sum+i;改為while型的循環(huán)語句:i=1;sum=0;

while(i<=10){sum+=i;i++;}對于do-while型的循環(huán),它的循環(huán)體至少無條件執(zhí)行一次。(√)對于while型的循環(huán),它的循環(huán)體可能一次也不執(zhí)行。(√)在以下給出的表達式中,與while(x)中的(x)不等價的表達式是:(C)A)(!x==0)B)(x>0||x<0)C)(x==0)D)(x!=0)執(zhí)行語句for(i=1;i++<4;);后變量i的值是:(C)A)3B)4C)5D)不定閱讀理解以下程序的功能:main(){inti,j,n;longs,sum;scanf("%d",&n);for(i=1,sum=0;i<=n;i++) {for(j=1,s=0;j<=i;j++) s+=j; sum+=s; }printf("sum=%ld\n",sum);}或main(){inti,n;longs,sum;scanf("%d",&n);for(i=1,s=0,sum=0;i<=n;i++) {s+=i; sum+=s; }printf("sum=%ld\n",sum);}編程打印由“*”組成的上三角形圖形:main()

{main()

{inti,j;

for(i=1;i<=4;i++)

{for(j=1;j<=4-i;j++)

printf(““); for(j=1;j<=2*i-1;j++)

printf(“*”);

printf(“\n”);

}

}****************編程打印由“*”組成的下三角形圖形:***********************main()

{inti,j;

for(i=1;i<=4;i++)

{for(j=1;j<i;j++)

printf(““); for(j=1;j<=8-(2*i-1);j++)

printf(“*”);

printf(“\n”);

}

}下面程序的輸出結果是什么?(1)#include<stdio.h>voidmain(){

inti;

intj;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

{

printf("%d*%d=%d\t",i,j,i*j);

}

printf("\n");

}}輸出結果:1*1=12*1=2

2*2=43*1=3

3*2=6

3*3=9…………9*1=9

9*2=18

9*3=27

9*4=36

9*5+45

9*6=54

9*7=63

9*8=72

9*9=81(2)#include<stdio.h>intmain(){ inti=1,s=3; do{ s+=i++; if(s%7==0)continue;elsei++; } while(s<15); printf("%d\n",i);}輸出結果:8以下程序實現(xiàn)什么功能?main(){intn,t,number=100;floata=2,b=1,s=0;for(n=1;n<=number;n++){s=s+a/b; t=a;a=a+b;b=t;

}printf("sumis%f\n",s);}計算數(shù)列n-n/2+n/3-n/4+……-n/100。main(){ inti; floatn,sum,temp; printf("Inputn:");scanf("%f",&n); sum=0; for(i=1;i<=100;i++) {temp=n/i; sum+=temp; n=-n; } printf("n-n/2+n/3-....-n/100=%f\n",sum);}編程實現(xiàn)百錢買百雞問題:公雞5元一只、母雞3元一只、小雞1元三只,100元買100只雞,問可以買公雞、母雞、小雞各多少只?提示:使用窮舉法,必須是整數(shù)解。#include<stdio.h>intmain(){intx,y,z;for(x=0;x<=20;x++)for(y=0;y<=33;y++)for({z=0;z<=100;z++}if(x+y+z==100&&(5*x+3*y+z/3)==100&&(z%3)==0) printf("公雞:%d,母雞:%d,小雞:%d\n",x,y,z);}第6章數(shù)組數(shù)組概念;一維、二維數(shù)組的定義和初始化;數(shù)組的應用;幾個經典算法(冒泡法排序、查找、查找最值);字符串與字符數(shù)組的關系與區(qū)別。例如:inta[2][]={{1,0,1},{5,2,3}};能對二維數(shù)組a進行正確初始化。(×)

(注:定義時需寫成:inta[][3]=……… )可以用關系運算符對字符數(shù)組中的字符串進行比較(×)

(注:需使用strcmp()函數(shù)進行字符串的比較)語句charc1[]=”China”;charc2[]={‘C’,’h’,’i’,’n’,’a’};定義的c1數(shù)組的長度比c2數(shù)組的長度多1。(√)字符型數(shù)組可以整體輸入、輸出。(√)字符型數(shù)組可以整體賦值。(×)下面程序段的運行結果是:(B)charc[5]={‘a’,’b’,’\0’,’c’,’\0’};

printf(“%s”,c);A)‘a’’b’B)abC)ab□cD)abc在C語言中,一維數(shù)組的定義方式為:類型說明符數(shù)組名[(A)]A)常量表達式B)整型表達式

C)整型常量或整型表達式D)整型常量以下對二維數(shù)組a的說明中正確的是:(B)A)inta[3][];B)doublea[2][4];

C)floata(3,4);D)floata(3)(4);有字符數(shù)組a[80]和b[80],則正確的輸出語句是(D)A)puts(a,b);B)printf(“%s,%s”,a[],b[]);

C)putchar(a,b);D)puts(a);puts(b);有字符數(shù)組a[80]和b[80],則正確的輸入語句是(B)A)gets(a,b);B)scanf(“%s,%s”,a,b);

C)scanf(“%s,%s”,&a,&b);D)gets(a[]);gets(b[]);下面程序的輸出結果是什么?(1)main()

{

inti,x[3][3]={10,20,30,40,50,60,70,80,90};

for(i=0;i<3;i++)

printf("%4d",x[2-i][i]);

}

運行結果:705030(2)main(){inti,s=0,b[]={1,2,3,4,5,6,7,8,9,10};for(i=1;i<9;i+=2)s+=b[i];printf("s=%d\n",s);}運行結果:s=20(3)#include<string.h>main(){charstr1[30]="student\'\n\101";charstr2[]="student\0abcd";printf("lengthofstr1:%sis%d,sizeofstr1is%d\n",str1,strlen(str1),sizeof(str1));printf("lengthofstr2:%sis%d,sizeofstr2is%d\n",str2,strlen(str2),sizeof(str2));}/*注:strlen()函數(shù)是求實參字符串的長度,sizeof是一個單目運算符,功能是求一個變量或一種數(shù)據類型所占用的存儲空間的長度。*/輸出結果:lengthofstr1:student'Ais10,sizeofstr1is30lengthofstr2:studentis7,sizeofstr2is13下面程序是冒泡法排序算法的實現(xiàn)。#include<stdio.h>#defineN10main(){inti,j,t;inta[N+1];printf("Input10numbers:");for(i=1;i<=N;i++) scanf("%d",&a[i]);printf("\n");for(i=1;i<=N-1;i++) for(j=1;j<=N-i;j++) if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("Thesortednumbersis:\n");for(i=1;i<=N;i++) printf("%6d",a[i]);printf("\n");}下面程序是實現(xiàn)將兩個字符串連接起來,不使用strcat函數(shù),程序填空以完整程序功能。#include<stdio.h>main(){chars1[80],s2[40];inti=0,j=0;printf(“inputs1:”);gets(s1);printf(“inputs2:”);gets(s2);while(s1[i]!=’\0’)i++;while(s2[j]!=’\0’)s1[i++]=s2[j++];s1[i]=’\0’;printf(“Thenewstringis:%s\n”,s1);}有一個排好序的數(shù)組,要求輸入一個數(shù)后,按原來排序的規(guī)律將它插入數(shù)組中。#include<stdio.h>intmain(){inta[11]={1,4,6,9,13,16,19,28,40,100};//已知按升序排列的數(shù)組,長度為11,實際存放10個數(shù),空余一個元素用來存放插入的數(shù)。intnumber,i;printf("arraya:\n");for(i=0;i<10;i++)printf("%5d",a[i]);//輸出原數(shù)組printf("\n");printf("insertdata:");scanf("%d",&number);//讀入要插入的數(shù)for(i=9;i>=0;i--) if(a[i]<=number) {a[i+1]=number; break; } else a[i+1]=a[i];if(i==-1) a[i+1]=number;//以上代碼完成查找插入位置并移動數(shù)據和插入數(shù)據printf("Nowarraya:\n");for(i=0;i<11;i++)printf("%5d",a[i]);printf("\n");return0;}第7章函數(shù)函數(shù)的定義和調用方法;參數(shù)的傳遞機制;函數(shù)原型;數(shù)組作函數(shù)參數(shù);局部變量和全局變量;變量的作用域和生命期;問題:原來直接在main()函數(shù)實現(xiàn)的功能,如何把它寫成子函數(shù),注意參數(shù)該如何設計。例如:函數(shù)的返回值類型由什么決定?(由函數(shù)類型決定)如果函數(shù)定義出現(xiàn)在函數(shù)調用之前,可以不必加函數(shù)原型聲明。(√)以下正確的函數(shù)定義形式是:(A)A)intfun(intx,inty)B)doublef1(intx,y)

C)doublefun(intx,inty);D)intf1(intxinty)函數(shù)中未指定存儲類別的局部變量,其隱含的存儲類別為:(auto)下面程序的輸出結果是什么?(1)voidaa(inta[],n){inti;for(i=0;i<n;i++)a[i]=i+2;}main(){inta[]={0,1,2,3,4},i;for(i=0;i<5;i++)printf(“%2d”,a[i]);aa(a,5);for(i=0;i<5;i++)printf(“%2d”,a[i]);printf(“\n”);}運行結果:0□1□2□3□4□2□3□4□5□6(2)inta=10,b=20;intplus(intx,inty){intb=25;a++;b++;return(a+b+x+y);}main(){printf(“a+b=%d\n”,plus(a,b));printf(“a+b=%d\n”,plus(a,b));}運行結果:a+b=67

a+b=69下面的函數(shù)實現(xiàn)利用選擇法對數(shù)組元素排序voidsort(inta[],intn){inti,j,k,temp;for(i=0;i<n-1;i++) {k=i;for(j=i+1;j<n;j++)if(a[k]<a[j])k=j;temp=a[i];a[i]=a[k];a[k]=temp;}}如下prime函數(shù)用于判斷參數(shù)是否為素數(shù)intprime(intm)/*判斷m是否為素數(shù)*/{ intk; for(k=2;k<=m/2;k++) if(m%k==0)return0; return1; }利用函數(shù)實現(xiàn)計算Fibnacci數(shù)列第n項,其中Fibnacci數(shù)列fib(n)的定義為:longfib(intn) {inti; longf,f1=1,f2=1; if(n<1) {printf("Dataerror!\n"); return-1; } if(n==1||n==2)return1; for(i=3;i<=n;i++) {f=f1+f2; f1=f2; f2=f; } returnf; }編寫求兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù)的程序。要求:求最大公約數(shù)和最小公倍數(shù)各編寫為函數(shù),兩個正整數(shù)在主程序中輸入。inthcf(intu,intv){intt,r;if(v>u){t=u;u=v;v=t;}while((r=u%v)!=0) {u=v;v=r;}returnv;}intlcd(intu,intv){returnu*v/hcf(u,v);}main(){intu,v;printf("Inputu&v:");scanf("%d%d",&u,&v);printf("H.C.F=%d\n",hcf(u,v));printf("L.C.D=%d\n",lcd(u,v));}第8章指針指針的概念;指針作函數(shù)參數(shù)的特點;數(shù)組與指針的關系;數(shù)組名作為函數(shù)參數(shù)。例如:數(shù)組元素作函數(shù)的實參,傳送的是數(shù)組元素的值。數(shù)組名作函數(shù)的實參,傳送的是數(shù)組的首地址。若有定義語句:int*p,x;則能正確輸入數(shù)據的程序段是:(A)

A)p=&x;scanf("%d",p);B)*p=&x;scanf("%d",p);

C)p=&x;scanf("%d",*p);D)*p=&x;scanf("%d",p);已有定義:inti,a[10],*p;則合法的賦值語句是(D)。

A)p=300;B)p=a[2];C)p=a[3]+4;D)p=a+5;下面的程序中,三個swapX()函數(shù)的功能均是實現(xiàn)形參的交換,哪個函數(shù)能實現(xiàn)交換實參?為什么?swap1(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}swap2(intx,inty){inttemp;temp=x;x=y;y=temp;}swap3(int*p1,int*p2){int*p;p=p1;p1=p2;p2=p;}main(){inta,b,*pointer_1=&a,*pointer_2=&b;scanf("%d,%d",pointer_1,pointer_2);if(a<b)swap2(a,b);printf("%d,%d\n",a,b);if(a<b)swap3(&a,&b);printf("%d,%d\n",*pointer_1,*pointer_2);if(a<b)swap1(pointer_1,pointer_2);printf("%d,%d\n",*pointer_1,*pointer_2);printf("%d,%d\n",a,b);}這個函數(shù)的功能是實現(xiàn)字符串拷貝:voidf(char*s,char*t)

{

while(*s++=*t++);

}下面程序的輸出是什么?#include<stdio.h>intz;voidp(int*x,inty){++*x;y--;z=*x+y+z;printf("%d,%d,%d@",*x,y,z);}voidmain(){intx=1,y=3,z=7;p(&x,y);printf("%d,%d,%d$",x,y,z);}運行結果:2,2,4@2,3,7$寫一通用函數(shù),實現(xiàn)從一個一維數(shù)組中尋找指定的一個數(shù),若找到返回該數(shù)所在的下標,否則返回-1。intsearch(int*a,intn,intfind){inti;for(i=0;i<n;i++) if(*(a+i)==find)returni;return-1;}main(){inta[]={1,2,3,4,5,6,7,8,17,35};intfind,position;scanf("%d",&find);position=search(a,10,find);if(position==-1) printf("%dnotfound\n",find);else printf("Positionof%dis:%d\n",find,position);}第9章結構體結構體類型的概念和定義方法;結構體類型變量;結構體數(shù)組和結構體指針;結構體類型中成員的訪問方法。例如:結構體類型的變量所占的字節(jié)數(shù)等于各成員字節(jié)數(shù)之和。(√)有如下定義:structstudent

{intage;

intnum;

}std,*p;

p=&std;則對結構體變量std中成員age的引用方式正確的寫法有:std.age或p->age或(*p).age若有定義:structaa{intm,n;}s[2]={{1,2},{3,4}},*p=s;則表達式++p->m的值是:2;(++p)->n的值是:4有n個學生的信息保存在結構體數(shù)組中,內含學生學號、姓名和3門課程的成績和平均分。要求實現(xiàn)輸入學生信息,輸出平均分最高的學生的信息(包括學號、姓名、3門課程成績和平均分)。#include<stdio.h>#defineN3//學生數(shù)為3structstudent//建立結構體類型structstudent{intnum;//學號charname[20];//姓名floatscore[3];//3門課成績floataver;//平均成績};intmain(){voidinput(structstudentstu[]);//函數(shù)聲明structstudentmax(structstudentstu[]);//函數(shù)聲明voidprint(structstudentstu);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論