2018 C語言復習題
《2018 C語言復習題》由會員分享,可在線閱讀,更多相關《2018 C語言復習題(8頁珍藏版)》請在裝配圖網上搜索。
1、C語言復習題 熟讀理論教材,理解相關知識,并復習理論教材課后練習題 (切記:以理論教材知識、例題和課后練習為主復習) 熟讀課本例題及知識,完成以下知識點的復習及總結。 一.填空 1. 一個C語言的執(zhí)行是從本程序的____開始,到____結束? 2. C語言中用戶的標識符命名規(guī)則是____。 3. 在一個c語言程序中,main函數(shù)的位置是___。 4. 若有代數(shù)式p(mne)/(bcd),其中p、m、n、e、b、c、d為變量,則該代數(shù)式的 C語言表達式為___。 5. char a; int x; float y,m; double z,p;則表達式“a*x*m+z-y
2、*x*p”值的數(shù)據(jù)類型為___。 6. C語言的常用關鍵字有___(舉例說明,越多越好)。 7. printf函數(shù)中用到格式符%ms,其中數(shù)字m表示輸出的字符串占用m列。如果字符串長度大于m,則輸出時的規(guī)則是___。若如果字符串長度小于m,則輸出時的規(guī)則是___。若如果字符串長度等于m,則輸出時的規(guī)則是___。當m>0時是左對齊還是右對齊?m<0呢? 8已有定義“int x; float y;”且執(zhí)行“scanf(“%4d%f”,&x,&y);”語句,若從第一列開始輸入數(shù)據(jù)9876543,則x的值為___。 10.能正確表示a≥-100或a≦100的關系表達式是___。能正確表示a≥-
3、100且a≦100的關系表達式是___。 11.判斷邏輯值為“真”的判斷方法是___。邏輯值為“假”的判斷方法是___。 12.已知“int x=100,y=200,z=300”,則執(zhí)行if(x>y)z=x;x=y;y=z;語句后,x、y、z的值是___。 13.若m和n均為int型變量,則以下for語句循環(huán)執(zhí)行的次數(shù)___及輸出結果是___。 for(n=8,m=8;m!=8;m++,++n) printf(“Welcome you!\n”); 14.若n為int型變量,則循環(huán)語句“for(n=0;n<100;n++)”控制循環(huán)體執(zhí)行___次。 15.在循環(huán)語句循環(huán)體中執(zhí)行c
4、ontinue語句,其作用是___,break的作用是__;在swich() Case語句中break語句作用是__。 16.關于函數(shù)的參數(shù),實參可以是__,形參可以是__, A.表達式;B.變量 c.常量 D.默認值 17.C語言的編譯系統(tǒng)對宏命令的處理是在什么時間進行__ 18.在C語言中,函數(shù)返回值的類型最終取決于__ 19.定義二維整型數(shù)組b時,該數(shù)組行號和列號是否可以為變量? 20.對一維數(shù)組和二維數(shù)組定義及初始化的方法進行總結,并舉例說明__ 21.若有以下語句,char a[]=”abcdefgh”; char b[]={‘a’,’b’,’c’,’d,’e,’f’
5、,’g’,’h’};則a和b數(shù)組長度分別為__和__ 22.設有定義“int n1=0,n2,*p=&n2,*q=&n1;”,以下賦值語句中與“n2=n1;”語句等價的是另外一種表示語句為__ 23.如有語句“int q=100,*p=&q;”,下面均代表地址的一組選項是________________ A. q,p,*&q B. &*q,&q,*p C. *&p, p,&q D. float *q,&*p ,p 24.若有說明語句“int m, a[10][10];”,則不能將a[1][1]的值賦給變量m的語句是________________ A. m=*(*(a+1)
6、+1); B. m=a[1][1] C. m=*(*(a+1)) D. m=*(a[1])+1) 25.下面程序的運行結果是________________ char str[]=”ABCDEFGGH”,*p=str; printf(“%d\n”,*(p+3)); 26.C語言結構體類型變量在程序執(zhí)行期間駐留在內存中的包括________________ 27.以下關于結構體與共用體的共同點和區(qū)別是________________,他們如何分配空間的? 28.已有定義“int a,b,c;”,且a=b=c=20,執(zhí)行if(a++||b++) c++;語句后,a、b、
7、c的值是分別是________________、______________、________________。 已有定義“int a,b,c;”,且a=b=c=20,執(zhí)行if(a++&&b++) c++;語句后,a、b、c的值是分別是________________、______________、________________ 29. 在一個源文件中定義的全局變量和局部變量的作用域為________________和________________。 30. 在調用函數(shù)時,如果實參是簡單變量,它與對應形參之間的數(shù)據(jù)傳遞方式是什么?如果實參是地址值呢?不同的是什么? 31.有以下程
8、序, 結果為_______________。 void main( ) { int a[5]={1, 2, 3, 4, 5}; int *pa=&a[1]; printf(“%d”, pa[1]); } 32.下面函數(shù)調用語句含有實參的個數(shù)為_______________。 y = fun(a, b, c, min(d ,e),max(a,b)); 33.以下程序的輸出結果是_______________。 long fib(int n) { if(n>2) return(fib(n-1)+fib(
9、n-2)); else return (2); } void main( ) { printf("%ld\n", fib(5)); } 34.若有以下語句int a,*p,**p; a=808;p=&a;pp=&p;則**PP的值是_______________。 35. 設有如下定義:int *p( ); int a[10], *q[10];q[i]=&a[i]則p表示的意義是_______________,*q的表示的含義是_______________,其值是_______________。 38.若有 #define MU(x,y) x
10、*y , 則表達式24/MU(1+2,2)的值是_______________。 39.若有 int a=1; 則執(zhí)行完循環(huán)語句while( a++<100 );后a的值為_______________。 40.以下所列的C語言常量中,錯誤的是_______________。 A. 0xFF B.2.8e0.2 C.25.3 D.'B' 41.所有的字符串都是以_______________字符結束的。 42假定double類型變量占用8個字節(jié),且有定義:double x[10]={1,2,3};,則數(shù)組x在內存中所占
11、字節(jié)數(shù)是_______________ 43判斷char型變量ch是否為小寫字母的正確表達式是_______________ 44. 以下語句正確的有_______________,錯誤的有_______________ A char a='P', b='M'; B float a=b=101.0; C int m=101, *n=&m; D double *a, b=&a; 45.以下4個選項中,不能看做一條語句的是_______________ A.a-=23;
12、 B.a=8,b=12.5,c=13.68; B. if(a<15) p++; D.if(b!=5)x=2; y=6; 46.關于if后一對圓括號中的表達式,可以是哪種類型的表達式_______________ 47.以下有關變量使用范圍不正確的說法是_______________。 A 在不同函數(shù)中可以使用同名的變量 B 形式參數(shù)是局部變量 C 在函數(shù)內定義的變量只在本函數(shù)內有效 D 全局變量可以在所有函數(shù)中使用 48.若有說明語句:int a,b,*d=&b;,則能正確從鍵盤讀入2個整數(shù)分別賦給變
13、量a、b的語句是_______________。 A.scanf("%d%d", &a,d); B.scanf("%d%d", &a,&d); C. scanf("%d%d" ,a,d); D.scanf("%d%d", a,*d); 49.已知 int p=20; 則執(zhí)行 if(p<=0) if(p!=0) printf(“AAAAA”); else printf(“BBBBB”); else printf(“
14、CCCCC”); 語句后,輸出的結果是_______________。 50.要使字符數(shù)組str存放一個字符串"Goodbye",正確的定義語句是_______________。 51.若用二維數(shù)組名作為函數(shù)調用的實參,傳遞給形參的值是_______________。 52.若有 int x=20,y=8,z;,則執(zhí)行語句z=0.7+x/y后z的值為_______________。 53.設有以下語句: struct SS {int no; char name[10];}PERSON; 則下面敘述中錯誤的是_______________。 A struct是結構
15、體類型的關鍵字 B struct SS是結構體類型 C PERSON是結構體類型名 D name是結構體成員名 54.已知:char ch='m';則下列表達式的值是_______________。 ch = (ch>='a'&&ch<='z') ? (ch-32) : ch; 55.下面程序的運行結果是_______________。 char c[8]={'a','\0,’b','\0','c','\0'}; printf("%s",c); 56.以下程序的輸出結果是_____________
16、__。 main() { char st[20]= "10987654321\n\t\n\\\t\\"; printf("%d \n",strlen(st)); } 57.有如下程序, 該程序的輸出結果是_______________。 main( ) { float x=2.0, y; if( x<0.0 ) y=0.0; else if( x<10.0 ) y=1.0/x+1/4; else y=10.0; printf( "%f\n",
17、 y); } 58.以下程序段的輸出結果是_______________。 main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[2]; printf( "%d", *(p+3) ); } 59.有如下程序, 該程序的執(zhí)行結果是_______________。 main() { int i, sum=0; for(i=1; i<=10; i++) sum += i; printf( "%d\n", sum); } 60.以下程序段,
18、while 循環(huán)執(zhí)行的次數(shù)是_______________。 int k=0; while( k = 2) { k = k -1; } 60.語言使用的磁盤文件系統(tǒng)中,數(shù)據(jù)文件存儲的的形式有哪兩種_______________。 61.文件函數(shù)中,用于打開文件的函數(shù)是________,用于關閉文件的函數(shù)是_______,讀寫文件中字符的函數(shù)是_______,將一個字符寫入磁盤文件的函數(shù)是_______。 二.編程 1.已知某班10個學生的C語言成績?yōu)? 學號 9901 9902 9903 9904 9905 9906 9907
19、9908 9909 9910 C成績 65.4 86.7 69.8 88.5 100 92.6 87.3 54.8 96.3 79.6 要求:按成績大小排序輸出,格式如下: 學號 成績 名次 9905 100.0 1 9909 96.3 2 …… …… 參考答案: #include "stdio.h" void main() { static int num[10]={},i,j,p,t; static float sc[1
20、0]={65.4,86.7,69.8,88.5,100,92.6,87.3,54.8,96.3,79.6},f;
printf("the original data:\n");
printf(" 學號 成績\n===========\n");
for(i=0;i<10;i++)
printf("%6d %6.1f\n",num[i],sc[i]);
for(i=0;i<9;i++)
{ p=i;
for(j=i+1;j<10;j++)
if(sc[p] 21、 for(j=0;j<10;j++)
{ t=num[p]; num[p]=num[i]; num[i]=t;
f=sc[p]; sc[p]=sc[i]; sc[i]=f;
}
}
printf("the sorted data:\n");
printf(" 學號 成績 名次\n===========\n");
for(i=0;i<10;i++)
printf("%6d %6.1f %d\n",num[i],sc[i],i+1);
}
2.例8.3 編寫一個交換兩個變量 22、的函數(shù),在主程序中調用,實現(xiàn)兩個變量值的交換。
#include 23、 /*三行語句交換指針p1,p2所指向的變量的值*/
*p1=*p2;
*p2=temp;
}
3. 例6.5編程求組合C=
分別定義求組合的函數(shù)和求階乘的函數(shù):
#include 24、 fac(m)/ (fac(n)* fac(m-n)); /* 嵌套調用階乘函數(shù)*/
return c;
}
main()
{ int n,m;
long c;
scanf(″%d,%d″,&n,&m);
c = comb (n,m); /* 調用組合函數(shù)*/
printf (″%ld″,c);
}
4.例6.6輸入兩個數(shù),輸出其中較大的數(shù)。
#include 25、 /*對函數(shù)max的聲明*/
scanf(″%d,%d″,&a,&b);
m = max(a,b); /*調用函數(shù)max,a、b已有具體的值*/
printf(″max=%d″,m);
}
int max(int x,int y)
{ int t;
if (x>y)t = x;
else t = y;
return t;
}
如果運行時輸入:
10,5
輸出為
10
5. 例6.8 用遞歸計算n!。
程序:
#in 26、clude 27、 28、t++;
if (count % 8 == 0)printf(″\n″); /* 每行輸出8個素數(shù)*/
}
}/* 外循環(huán) */
}
7.例8.1 從鍵盤輸入兩個整數(shù)到a、b,按由大到小輸出。
#include 29、pb=p;
}
printf(″\n a=%d,b=%d\n″,a,b);
printf(″\n max=%d,min=%d″,*pa,*pb); /* pa指向大數(shù),pb指向小數(shù)*/
}
輸入:
12 22↙
輸出:
a=12,b=22
max=22,min=12
8.例8.14 用指向一維數(shù)組的行指針輸出二維數(shù)組,并輸出數(shù)組中的最大元素及所在行列號。
#include 30、,{9,10,11,12}};
int (*p)[4]; /*定義p為指向一個有4個元素的一維數(shù)組的指針變量*/
p=a; /*p指向第0行*/
max=**p; /*將第一個元素送入max,**p相當于 *(*(p+0)+0) */
for(i=0;i<3;i++)
{
printf(″\n″);
for(j=0;j<4;j++)
{
pri 31、ntf(″%5d″,*(*p+j));
if(max<*(*p+j))
{ max=*(*p+j);
m=i;n=j;
}
}
p++; /*指向下一行*/
}
printf(″\nmax is:a[%2d] [%2d]=%5d″,m,n,max);
}
9.例5.1 編寫一個程序,輸入一個班的學生的成績,求全班的平均成績。
程序:
#include 32、
void main()
{ float score,average=0; /* average存放平均成績,初值為0 */
int n=0; /* n存放學生數(shù),初值為0 */
scanf(″%f″,&score); /* 輸入第一個學生的分數(shù) */
while (score>=0)
{
average += score; /* average先用來放總分 */
n++; /* 學生數(shù)加一 */
scanf(″%f″,&score); /* 輸入下一個學生的分數(shù) */
}
if (n!=0)
average = average /n; /*求平均成績average*/
printf(″%6.2f″,average); /*輸出平均成績average,保留兩位小數(shù)*/
}
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。