?C語(yǔ)言程序設(shè)計(jì)復(fù)習(xí)資料及習(xí)題(2)
摘要:本文是C語(yǔ)言程序設(shè)計(jì)復(fù)習(xí)資料及習(xí)題(2),有打算報(bào)考2022年專升本需要考核C語(yǔ)言程序設(shè)計(jì)的同學(xué)可以一起來(lái)看看。供大家參考,下面是具體詳細(xì)內(nèi)容。
單元四 選擇結(jié)構(gòu)程序設(shè)計(jì)
單元總結(jié)提升
在選擇結(jié)構(gòu)程序設(shè)計(jì)中,條件判斷表達(dá)式和選擇結(jié)構(gòu)實(shí)現(xiàn)語(yǔ)句是兩個(gè)核心內(nèi)容。通過(guò)本單元的學(xué)習(xí),我們應(yīng)該知道:
1.條件判斷表達(dá)式由關(guān)系運(yùn)算符及其表達(dá)式、邏輯運(yùn)算符及其表達(dá)式構(gòu)成,其中:
(1) 關(guān)系運(yùn)算符有: > 、 < 、 >= 、 <= 、 !=、 ==
(2) 邏輯運(yùn)算符有: &&、||、 !
2.選擇結(jié)構(gòu)實(shí)現(xiàn)語(yǔ)句有三種方式:
(1) 單分支if選擇結(jié)構(gòu),一般格式為:
if ( 表達(dá)式 )
{ 語(yǔ)句;}
(2) 雙分支if-else選擇結(jié)構(gòu),一般格式為:
if ( 表達(dá)式 )
{ 語(yǔ)句1;}
else
{ 語(yǔ)句2;}
(3) 多分支 switch選擇結(jié)構(gòu),一般格式為:
switch( 表達(dá)式 )
{ case 常量表達(dá)式1: [語(yǔ)句序列1;] [break;]
case 常量表達(dá)式2: [語(yǔ)句序列2;] [break;]
……
case 常量表達(dá)式n: [語(yǔ)句序列n;] [break;]
default: 語(yǔ)句序列n+1;
}
3.在應(yīng)用選擇結(jié)構(gòu)時(shí),應(yīng)注意以下問(wèn)題:
(1)在if嵌套語(yǔ)句中,要弄清e(cuò)lse與if的匹配關(guān)系,書寫if語(yǔ)句嵌套時(shí)一般采用縮進(jìn)的階梯式寫法,在實(shí)際編程中,為了表明編程者的意圖,也常常通過(guò)“{}”來(lái)強(qiáng)制if和else的配對(duì)關(guān)系。
(2)switch語(yǔ)句中,“表達(dá)式”和“常量表達(dá)式”的類型只能是整型或字符型數(shù)據(jù),且“常量表達(dá)式”只能由常量構(gòu)成,通過(guò)“表達(dá)式”與“常量表達(dá)式”之間的對(duì)等關(guān)系構(gòu)造出多分支選擇結(jié)構(gòu)。
(3)在某些多分支選擇結(jié)構(gòu)程序設(shè)計(jì)中,既可使用if-else語(yǔ)句實(shí)現(xiàn),也可以使用switch語(yǔ)句實(shí)現(xiàn)。switch語(yǔ)句與if語(yǔ)句的不同之處在于:switch語(yǔ)句僅能判斷一種邏輯關(guān)系,即“表達(dá)式”和指定“常量表達(dá)式”的值是否相等,而不能進(jìn)行大于,小于某一個(gè)值的判斷,不能表達(dá)區(qū)間數(shù)據(jù)的概念;if語(yǔ)句可以計(jì)算和判斷各種表達(dá)式。所以switch語(yǔ)句不能完全替代if語(yǔ)句。
總之,通過(guò)本單元的學(xué)習(xí),應(yīng)該掌握C語(yǔ)言選擇結(jié)構(gòu)程序設(shè)計(jì)的思路和語(yǔ)句的基本用法。
單元練習(xí)
一.選擇題
1.以下選項(xiàng)中,當(dāng)x為大于1的奇數(shù)時(shí),值為0的表達(dá)式( )。
A.x%2==1 B.x/2 C.x%2!=0 D.x%2==0
2.在C語(yǔ)言中,if語(yǔ)句后的一對(duì)圓括號(hào)中有一個(gè)用以決定分支走向的表達(dá)式,該表達(dá)式( )。
A.只能是關(guān)系表達(dá)式 B.只能是邏輯表達(dá)式
C.只能是關(guān)系或邏輯表達(dá)式 D.可以是任何合法表達(dá)式
3.讀下面程序段,當(dāng)x=-3時(shí),輸出y的值為( )。
int x,y;
y=0;
scanf(“%d”,&x);
if(x>=0)
if(x>0) y=1;
else y=-1;
printf(“y=%d”,y);
A.1 B.-1 C.0 D.不確定
4.下列語(yǔ)句將小寫字母轉(zhuǎn)化為大寫字母,正確的語(yǔ)句為( )。
A.if(’z’>=ch>=’a’) ch=ch-32;
B.if(ch>=’a’&&ch<=’z’) ch=ch-32;
C.ch=(’z’>=ch>=’a’)?ch-32:ch;
D.ch=( ch>=’a’&&ch<=’z’)?ch:ch-32;
5.關(guān)于與switch語(yǔ)句配套的case語(yǔ)句中所使用的表達(dá)式,說(shuō)法正確的是( )。
A.可以是變量
B.可以是常量或變量
C.只能是常量或常量表達(dá)式
D.無(wú)論是何種表達(dá)式,只要在執(zhí)行時(shí)有確定的值就行
二.填空題
1.在算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和賦值運(yùn)算符中,運(yùn)算優(yōu)先級(jí)最高的運(yùn)算符是 ,最低的是 。
2.正確表示數(shù)學(xué)關(guān)系“1<a<4”的c語(yǔ)言表達(dá)式為____________________。< p="">
3.整型變量n不能被3整除的條件判斷表達(dá)式為 。
4.以下程序段的功能是:對(duì)輸入的大寫字母循環(huán)移動(dòng)6個(gè)位置后輸出,如’A’變?yōu)椤疓’,’W’變?yōu)椤疌’。請(qǐng)將程序段補(bǔ)充完整。
char ch;
ch= ;
if(ch>=’A’&& )
else if( )
putchar(ch);
5.以下程序段功能是根據(jù)學(xué)生考試成績(jī),確定其成績(jī)等級(jí),成績(jī)與等級(jí)對(duì)應(yīng)情況與【例4-7】中表格相同,請(qǐng)將程序段補(bǔ)充完整。
char level; //成績(jī)等級(jí)
float score; //考試成績(jī)
scanf(“%f”,&score);
switch( )
{ :level=’A’; ;
case 8: level=’B’;break;
case 7: level=’C’; break;
case 6: level=’D’; break;
default: ;
}
printf(“考試成績(jī)等級(jí)為: .”,level);
習(xí)題答案:
一.選擇題
1.D 2.D 3.C 4.B 5.C
二.填空題
1.!(非) =
2.a>1&&a<4
3.n%3!=0
4. char ch;
ch= getchar() ;
if(ch>=’A’&& ch<='T' )
ch=ch+6;
else if(ch>='U'&&ch<='Z' )
ch=ch-20;
putchar(ch);
5.char level; //成績(jī)等級(jí)
float score; //考試成績(jī)
scanf(“%f”,&score);
switch(int(score/10) )
{ case 10: case 9 :level=’A’; break ;
case 8: level=’B’;break;
case 7: level=’C’; break;
case 6: level=’D’; break;
default: level='E' ;
}
單元五 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
單元總結(jié)提升
在本單元中,如何理解循環(huán)的本質(zhì)、如何分析循環(huán)的三個(gè)要素以及如何描述循環(huán)結(jié)構(gòu)語(yǔ)句是核心內(nèi)容。通過(guò)本單元的學(xué)習(xí),我們應(yīng)該知道:
1. 循環(huán)的本質(zhì)是將程序員從大量重復(fù)編寫相同代碼的工作中解放出來(lái),減少程序源代碼的存儲(chǔ)空間,提高程序的質(zhì)量,提高程序編寫的工作效率,但計(jì)算機(jī)執(zhí)行程序的工作量并沒(méi)有減少。
2. 循環(huán)結(jié)構(gòu)的三要素包括:
(1)循環(huán)變量初值
(2)循環(huán)控制條件表達(dá)式
(3)循環(huán)體
3.循環(huán)結(jié)構(gòu)描述語(yǔ)句有三種: while 、 do-while 和 for 。
其中while和do-while的區(qū)別在于 不管循環(huán)條件是否成立,do-while循環(huán)都先執(zhí)行一次循環(huán)體,所以do-while循環(huán)的循環(huán)體至少執(zhí)行一次,而while循環(huán)的循環(huán)體可能一次都不執(zhí)行 。
4.循環(huán)結(jié)構(gòu)控制語(yǔ)句break的作用是: 結(jié)束循環(huán) ;
循環(huán)結(jié)構(gòu)控制語(yǔ)句continue的作用是: 提前結(jié)束本次循環(huán) 。
5.在一個(gè)循環(huán)結(jié)構(gòu)語(yǔ)句中又包含了一個(gè)循環(huán)結(jié)構(gòu)語(yǔ)句稱之為 循環(huán)的嵌套 。程序執(zhí)行時(shí),外層循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)就要完整的執(zhí)行完,直至內(nèi)層循環(huán)執(zhí)行結(jié)束,再開始執(zhí)行下一次外層循環(huán)。
學(xué)習(xí)完本單元,應(yīng)該掌握C語(yǔ)言循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的思路和基本語(yǔ)句的用法。至此,我們就學(xué)完了結(jié)構(gòu)化程序設(shè)計(jì)中的三種基本結(jié)構(gòu):順序、選擇和循環(huán)。
單元練習(xí)
一.選擇題
1.下面說(shuō)法正確的是( )。
A.while語(yǔ)句不管條件表達(dá)式是否為真,都將執(zhí)行一次循環(huán)體。
B.do-while語(yǔ)句構(gòu)成的循環(huán),一定要有能使while后面表達(dá)式的值為0的操作,或在循環(huán)體中使用break語(yǔ)句。
C.for循環(huán)只能用于循環(huán)次數(shù)確定的情況,且先執(zhí)行循環(huán)體語(yǔ)句,后判斷條件表達(dá)式。
D.break語(yǔ)句的作用是從最近的循環(huán)體內(nèi)跳出來(lái),而continue語(yǔ)句的作用是繼續(xù)執(zhí)行循環(huán)體中尚未執(zhí)行的語(yǔ)句。
2. 對(duì)for(表達(dá)式1;;表達(dá)式3),可理解為( )。
A.for(表達(dá)式1;0;表達(dá)式3)
B.for(表達(dá)式1;1;表達(dá)式3)
C.語(yǔ)法錯(cuò)誤
D.僅執(zhí)行循環(huán)一次
3. 以下程序的功能為( )。
#include
void main()
{
int i,k=0;
for(i=1;i<10;i+=2)
k+=i+1;
printf("%d\n",k);
}
A.計(jì)算自然數(shù)1~9的累加和 B.計(jì)算自然數(shù)1~10的偶數(shù)之和
C.計(jì)算自然數(shù)1~9的奇數(shù)之和 D.計(jì)算自然數(shù)1~10的累加和
4.以下能正確計(jì)算1*2*3*4*5*6*7*8*9*10的程序段是( )。
A.do{i=1;s=1; B.do{i=1;s=0;
s=s*i; s=s*i;
i++; i++;
}while(i<=10); }while(i<=10);
C.i=1;s=1; D.i=1;s=0;
do{ do{
s=s*i; s=s*i;
i++; i++;
}while(i<=10); }while(i<=10);
5.有以下程序段
int k=0;
while(k=1) k++;
while循環(huán)執(zhí)行的次數(shù)是( )。
A.無(wú)限次 B.1次 C.語(yǔ)法錯(cuò)誤,不能執(zhí)行 D.一次也不執(zhí)行
二.填空題
1.若輸入字符串:abcde
while((ch=getchar())==’e’) printf("*");
2.以下程序執(zhí)行后的輸出結(jié)果是 。
#include
void main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
3.下面程序的功能是:輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),請(qǐng)?zhí)羁铡?/p>
#include
void main()
{
int i,j;
for(i=0; ;i++)
{ j=i*10+6;
if( ) continue;
printf("%d\n",j);
}
}
4.有以下程序
#include
void main()
{ int x=23;
do
{ printf("%d",x--);
}while(!x);
}
該程序執(zhí)行的結(jié)果為 。
5.以下程序的功能是計(jì)算1-3+5-7+…-99+101的值,請(qǐng)將程序補(bǔ)充完整。
#include
void main()
{
int i,t=1,s=0;
for(i=1;i<=101;i+=2)
{
s=s+ ;
;
}
printf("%d\n",s);
}
習(xí)題答案:
一.選擇題
1.B 2.B 3.B 4.C 5.A
二.填空題
1.0
2.011122
3.i<10 j%3!=0
4.23
5.i*t t=-t
單元六 數(shù)組的使用
單元總結(jié)提升
在本單元中,如何定義一維、二維數(shù)組、如何操作數(shù)組以及如何利用字符數(shù)組處理字符串是核心內(nèi)容。通過(guò)本單元的學(xué)習(xí),我們應(yīng)該知道:
1. 數(shù)組是一組相同類型的有序數(shù)據(jù)的集合。數(shù)組要先定義后使用,可以在定義時(shí)初始化,每個(gè)數(shù)組元素相當(dāng)于同類型的變量,使用數(shù)組名和下標(biāo)來(lái)唯一確定數(shù)組中的元素。
2. 一維數(shù)組定義的一般格式為: 類型標(biāo)識(shí)符 數(shù)組名[整型常量表達(dá)式]; ,對(duì)于已定義好的一維數(shù)組C編譯系統(tǒng)會(huì)分配連續(xù)的存儲(chǔ)空間, 數(shù)組名 代表數(shù)組在內(nèi)存中存放的首地址。一維數(shù)組的引用方法為: 數(shù)組名[下標(biāo)] ,其中下標(biāo)從 0 開始。
3. 二維數(shù)組定義的一般格式為: 類型標(biāo)識(shí)符 數(shù)組名[整型常量表達(dá)式1] [整型常量表達(dá)式2]; ,對(duì)于已定義好的二維數(shù)組C編譯系統(tǒng)會(huì)分配連續(xù)的存儲(chǔ)空間,將二維數(shù)組元素按 行 依次存儲(chǔ)。二維數(shù)組元素的訪問(wèn)涉及第一維和第二維兩個(gè)下標(biāo),其引用方法為: 數(shù)組名[下標(biāo)1][下標(biāo)2] 。
4. 字符數(shù)組是一組字符型數(shù)據(jù)的有序集合,其中每個(gè)數(shù)組元素的值都是字符。C語(yǔ)言用字符數(shù)組實(shí)現(xiàn)字符串變量,字符串以 ‘\0’ 作為結(jié)束標(biāo)志。字符串的輸入可以通過(guò) gets() 、 scanf() 函數(shù)實(shí)現(xiàn),字符串的輸出可以通過(guò) puts() 、 printf() 函數(shù)實(shí)現(xiàn)。常見的字符串操作庫(kù)函數(shù)有:求字符串長(zhǎng)度函數(shù) strlen() 、字符串復(fù)制函數(shù) strcpy() 、字符串連接函數(shù) strcat() 、字符串比較函數(shù) strcmp(),這些庫(kù)函數(shù)的定義都在頭文件 string.h 中。常見的字符庫(kù)函數(shù)的定義都在頭文件 ctype.h 中。
5. 數(shù)組的操作通常離不開循環(huán)結(jié)構(gòu),在使用循環(huán)結(jié)構(gòu)操作數(shù)組時(shí)應(yīng)注意下標(biāo)的變化規(guī)律。
通過(guò)本單元的學(xué)習(xí),應(yīng)該掌握C語(yǔ)言中對(duì)于數(shù)組這一構(gòu)造數(shù)據(jù)類型的使用方法和操作方法。
單元練習(xí)
一.選擇題
1.定義一個(gè)名為s的字符型數(shù)組,并且賦初值為字符串"123"的錯(cuò)誤語(yǔ)句是( )。
A.char s[]={‘1','2','3','\0 '}; B.char s[]={"123"};
C.char s[]={"123\n"}; D.char s[4]={'1','2','3'};
2.下列數(shù)組定義語(yǔ)句中,正確的是()
A.int a[][]={1,2,3,4,5,6}; B.char a[2][3]=‘a(chǎn)',‘b';
C.int a[][3]={1,2,3,4,5,6}; D.int a[][]={{1,2,3},{4,5,6}};
3.已定義 int a[][3]={1,2,3,4,5,6,7,8,9};,則a[1][2]的初值為( )。
A.2 B.4 C.6 D.8
4.判斷字符串str1是否大于字符串str2,應(yīng)當(dāng)使用( )。
A.if(str1>str2) B.if(strcmp(str1,str2)<0)
C.if(strcmp(str2,str1)>0) D.if(strcmp(str1,str2)>0)
5.下列程序段的功能是給數(shù)組所有的元素輸入數(shù)據(jù),然后輸出,請(qǐng)選擇正確答案填空( )。
#include
void main()
{
int a[10],i=0;
while(i<10)
scanf("%d", );
for(i=0;i<10;i++)
printf("%4d",a[i]);
}
A. a+(i++) B.&a[i+1] C.a+i D.&a[++i]
二.填空題
1.定義一個(gè)名為a的單精度浮點(diǎn)型一維數(shù)組,數(shù)組的長(zhǎng)度為4,所有元素的初值均為0,定義語(yǔ)句為 ,引用該數(shù)組元素時(shí),下標(biāo)的范圍是 ,該數(shù)組占用的存儲(chǔ)空間為 字節(jié)。
2.設(shè)有數(shù)據(jù)定義語(yǔ)句int i=3,x[4]={1,2,3};,則數(shù)組元素x[i] 的值是 。
3.下列程序的功能是讀取10個(gè)實(shí)數(shù),然后依次輸出前1個(gè)實(shí)數(shù)和、前2個(gè)實(shí)數(shù)和、...、前9個(gè)實(shí)數(shù)和、前10個(gè)實(shí)數(shù)和。請(qǐng)將程序補(bǔ)充完整。
#include
void main()
{ float f[10],x=0;
int i;
for(i=0;i<10;i++)
scanf("%f",&f[i]);
for(i=0;i<10;i++)
{ ;
printf("sum of No.%2d is %.2f.\n",i,x);
}
}
4.下列程序的功能是求兩個(gè)矩陣的和,請(qǐng)將程序補(bǔ)充完整。
#include
void main()
{ int a[3][4],b[3][4],c[3][4]; //數(shù)組c存放矩陣a與b的和
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{ scanf("%d", );
;
}
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
printf("%d ",c[i][j]);
putchar('\n');
}
}
5.閱讀下列程序,程序運(yùn)行后的輸出結(jié)果是 。
#include
#include
void main()
{ char s[3][20]={“1234”,”234567”,”6789”};
int i,k;
for(k=0,i=1;i<3;i++)
if(strcmp(s[k],s[i])<0) k=i;
puts(s[k]);
}
習(xí)題答案:
一.選擇題
1.C 2.C 3.C 4.D 5.A
二.填空題
1.float a[4]={0} 0至3 16
2.0
3.x+=f[i];或x=x+f[i];
4.&b[i][j] c[i][j]=a[i][j]+b[i][j]
5.6789
延伸閱讀
專升本微信公眾號(hào)
掃碼添加
專升本備考資料免費(fèi)領(lǐng)取
去領(lǐng)取