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