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