第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第1頁
第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第2頁
第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第3頁
第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第4頁
第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第三章C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo)

簡(jiǎn)介:本章從歷屆“國家計(jì)算機(jī)等級(jí)考試二級(jí)c語言筆試”試題中精選出典型的試題,

按照c語言程序設(shè)計(jì)教學(xué)內(nèi)容編排,供學(xué)生們邊學(xué)習(xí)邊練習(xí),達(dá)到即學(xué)即會(huì),舉一反三,

觸類旁通的效果。

3.1C語言基本知識(shí)

3.1.1考試要求

一、C語言的結(jié)構(gòu)

1.C語言源程序的構(gòu)成,main函數(shù)和其他函數(shù)

2.頭文件、數(shù)據(jù)說明、函數(shù)的開始和結(jié)束

3.源程序的書寫格式

4.C語言的風(fēng)格

二、數(shù)據(jù)類型及其運(yùn)算

1.C語言的數(shù)據(jù)類型(基本類型、構(gòu)造類型、指針類型、空類型)及其定義方法

2.C語言運(yùn)算符的種類、優(yōu)先級(jí)和結(jié)合性

3.不同類型數(shù)據(jù)之間的轉(zhuǎn)換與運(yùn)算

4.各種類型的C語言表達(dá)式(賦值表達(dá)式、算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表

達(dá)式、條件表達(dá)式、逗號(hào)表達(dá)式)及其計(jì)算規(guī)則

3.1.2要點(diǎn)指導(dǎo)

1.C語言源程序的構(gòu)成、main函數(shù)和其它函數(shù)

每個(gè)C語言程序都是由若干個(gè)函數(shù)組成的,這其中包含?個(gè)“主函數(shù)"main。和其

它函數(shù)。其它函數(shù)包括用戶編寫的函數(shù)和C語言本身提供的標(biāo)準(zhǔn)庫函數(shù)。程序的運(yùn)行總是

從main。函數(shù)開始執(zhí)行。函數(shù)是C程序的基本單位。

2.函數(shù)的組成

每個(gè)函數(shù)是由函數(shù)說明部分和函數(shù)體兩部分組成的。函數(shù)的說明部分包括函數(shù)名、

函數(shù)的形式參數(shù)、函數(shù)的值的類型等。函數(shù)體是由大括號(hào){}括起的部分,由變量定義和

執(zhí)行部分組成。函數(shù)的執(zhí)行部分是由C語句組成的。這些C語句是按照結(jié)構(gòu)組成起來的,

這些結(jié)構(gòu)有三類即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。結(jié)構(gòu)之間可以并列和嵌套。

3.頭文件

包含頭文件的格式:include"頭文件名"

#include〈頭文件名〉

例如:#include"stdio.h"

它的作用是將文件stdio.h的內(nèi)容插入在#include"stdio.h”所在的位置。

當(dāng)調(diào)用C語言標(biāo)準(zhǔn)函數(shù)庫中輸入輸出類函數(shù)時(shí),要把頭文件stdio.h包含在程序的

開頭;當(dāng)調(diào)用C語言標(biāo)準(zhǔn)函數(shù)庫中數(shù)學(xué)類函數(shù)(如sin、sqrt)時(shí),要把頭文件math.h包含

在程序的開頭;

4.數(shù)據(jù)的說明

C語言的數(shù)據(jù)分為常量和變量,常量可以宜接使用,符號(hào)常量在使用前需要定義(宏

定義),變量在使用前必須先定義名稱和類型。

變量的定義格式為:類型名變量名;

類型名變量名=常量;

5.源程序的書寫格式

C語言的書寫格式比較自由,一行可以寫幾條語句,一條語句可以寫在幾行里,每

條語句和數(shù)據(jù)定義的最后一個(gè)字符必須是分號(hào)

C語言的注釋信息格式為:

I*注釋信息*/

C語言區(qū)分字母的大、小寫。

6.C語言的風(fēng)格

語言簡(jiǎn)練、使用方便:有32個(gè)關(guān)鍵字、9種控制語句;

運(yùn)算符豐富:32種運(yùn)算符;

數(shù)據(jù)類型豐富:有整型、實(shí)型、字符型、枚舉類型等基本數(shù)據(jù)類型,有數(shù)組、結(jié)

構(gòu)體、共用體等構(gòu)造類型和指針類型,能夠?qū)崿F(xiàn)復(fù)雜的數(shù)據(jù)結(jié)構(gòu);

可直接訪問地址;

可以進(jìn)行位操作:

可移植性好。

7.C語言的數(shù)據(jù)類型

C語言的數(shù)據(jù)類型分為:基本類型、構(gòu)造類型、指針類型、空類型。

其中基本類型包含:整型(帶符號(hào)整型int、shortint、longint;

無符號(hào)整型unsigned>unsignedshortunsignedlong)

實(shí)型(單精度型float、雙精度型double)

字符型char

枚舉類型

C語言中int數(shù)據(jù)用2個(gè)字節(jié)(16位二進(jìn)制數(shù))的補(bǔ)碼表示,表示整數(shù)的范圍是

-32768到32767。unsigned數(shù)據(jù)用2個(gè)字節(jié)二進(jìn)制數(shù)(16位二進(jìn)制數(shù))表示,表示整數(shù)的范

圍是0到65535o

8.運(yùn)算符和表達(dá)式

C語言程序是由若干個(gè)函數(shù)組成的,每個(gè)函數(shù)由函數(shù)說明部分和函數(shù)體兩部分組

成的。函數(shù)體是由大括號(hào){}括起的部分,由變量定義和執(zhí)行部分組成。函數(shù)的執(zhí)行部分

是由C語句組成的。因此在學(xué)習(xí)C語言的過程中注意熟練掌握C語言中的各種語句,達(dá)到

能夠靈活運(yùn)用C語言中的各種語句。而構(gòu)成C語句的核心是表達(dá)式,C語言中有算術(shù)表達(dá)

式、賦值表達(dá)式、逗號(hào)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式和條件表達(dá)式。而表達(dá)式是由常量、

變量、函數(shù)和運(yùn)算符構(gòu)成的。

C語言共有34個(gè)運(yùn)算符,這些運(yùn)算符的優(yōu)先級(jí)和緒令侏十分重要,在學(xué)習(xí)中要

牢記。C語言的運(yùn)算符按照優(yōu)先級(jí)從高到低排列如下:

優(yōu)先級(jí)運(yùn)算符結(jié)合方向

1()[]->.自左至右

2!~++--(類型)*&sizeof自右至左

3*/%算術(shù)運(yùn)算符自左至右

4+-算術(shù)運(yùn)算符自左至右

5??位操作運(yùn)算符自左至右

6<<=>>=關(guān)系運(yùn)算符自左至右

7——!二關(guān)系運(yùn)算符自左至右

8&位操作運(yùn)算符自左至右

9A位操作運(yùn)算符自左至右

101位操作運(yùn)算符自左至右

11&&邏輯運(yùn)算符自左至右

12II邏輯運(yùn)算符自左至右

13?:條件運(yùn)算符自右至左

14=+=-=*=/=%=?=&=賦值運(yùn)算符自右至左

15逗號(hào)運(yùn)算符自左至右

從而,C語言表達(dá)式的計(jì)算順序從高到低:

算術(shù)表達(dá)式

關(guān)系表達(dá)式

邏輯表達(dá)式

條件表達(dá)式

賦值表達(dá)式

逗號(hào)表達(dá)式

9.輸入輸出函數(shù)

輸出函數(shù)printf

字符輸出函數(shù)putchar

輸入函數(shù)scanf

字符輸入函數(shù)getchar

常用格式編輯符:

輸出整數(shù)格式編輯符%d%u%x%o

輸出實(shí)數(shù)格式編輯符%f%e

輸出字符和字符串格式編輯符%c%s

3.1.3同步練習(xí)

1.C語言中,int型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部是由()表示的。

答:int型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部是由16位補(bǔ)碼表示的。

2.下列可以作為C語言用戶標(biāo)識(shí)符的是()。

A)_123B)alb2c3C)intD)123abc

答:A)和B)

C語言標(biāo)識(shí)符必須是以英文字母(a到z)、或者下劃線一開頭的字符串。字符串中只能包含

英文字母、下劃線和數(shù)字(0到9)。但字符串不能是C語言中的32個(gè)保留字(例如int,short,

long,unsigned,float,char,if,switch,for,while等)。

3.在C語言中,如果下面的變量都是int類型,則輸出的結(jié)果是()。

sum=pad=5,pAd=sum++,pAd++,++pAd;

printf("%d\n",pad);

答:輸出結(jié)果是5。

因?yàn)镃語言是字母大小寫敏感的,也就是說區(qū)分大小寫字母。pad和pAd是兩個(gè)不同的變

量。

4.以下程序的輸出結(jié)果是()。

#include<stdio.h>

main()

printf("%d\n”,NULL);

}

答:o

因?yàn)閟tdio.h頭文件中NULL的定義如下:

^defineNULL0

5.下面程序的輸出是()?

main()

{intx=10,y=3;

printf("%d\n",y=x/y);

)

答:3

因?yàn)閮蓚€(gè)同類型的數(shù)據(jù)作算術(shù)運(yùn)算,其結(jié)果仍為該類型?即整數(shù)除以整數(shù),商仍為整數(shù)。

10/3的商為3。

6.下面程序的輸出是()。

main()

{intx=023;

printf("%d\n",一x);

)

答:18

因?yàn)?23是一個(gè)八進(jìn)制數(shù),表達(dá)式一X的值為022,按照猊帶符號(hào)的十進(jìn)制數(shù)輸出,結(jié)果為

18。

注意:023是八進(jìn)制數(shù);23是十進(jìn)制數(shù);0x23是十六進(jìn)制數(shù)。

7.在C語言中,不正確的int類型的常數(shù)是(

A)32768B)00037D)OxAF

答:A)

8.執(zhí)行下面程序中的輸出語句后a的值是()。

main()

{inta;

printf("%d\n”,(a=3*5,a*4,a+5));

)

答:15

因?yàn)樵谟?jì)算逗號(hào)表達(dá)式a=3*5,a*4,a+5時(shí),依次計(jì)算下面3個(gè)表達(dá)式:

a=3*5(結(jié)果變量a的值為15,該賦值表達(dá)式的值也為15)

a*4(該算術(shù)表達(dá)式的值為60)

a+5(該算術(shù)表達(dá)式的值為20,輸出函數(shù)printf輸出20)

逗號(hào)表達(dá)式的值為20,但變量a的值認(rèn)為15。

9.以下程序的輸出結(jié)果是()o

#include<stdio.h>

main()

{inta=2,c=5;

printf("a=%%d,b=%%d\n”,a,c);

)

A)a=%2,b=%5B)a=2,b=5C)a=%%d,b哪%dD)a=%d,b=Md

答:D)

因?yàn)殒帐歉袷秸f明符,輸出機(jī)其它原樣輸出。

如果輸出函數(shù)語句改成printf(,,a=%%%d,b=%%%d\n/z,a,c)那么輸出結(jié)果為A)。

10.以下程序的輸出結(jié)果是()。

#include<stdio.h>

main()

{inta,b,d=241;

a=d/100%9;

b=(-l)&&(-l);

printf("%d,%d\n”,a,b);

)

A)6,1B)2,1C)6,0D)2,0

答:B)

241/100的值為2,2%9的值為2。

(T)&&(-1)的值為1。在邏輯運(yùn)算中,非0的值為真,真“與”真結(jié)果為真,關(guān)系和邏輯運(yùn)

算的結(jié)果如果為真用“1”表示,如果為假用“0”表示。

11.請(qǐng)選出以下語句的輸出結(jié)果()。

printf("%d\n",strlen("\t\"\065\xff'n"));

答:5

函數(shù)strlen的功能是計(jì)算字符串長(zhǎng)度。那么字符串"\t\"\065\xff\n”包含多少個(gè)字符呢?

\t是橫向跳格字符;\"是字符";\065是ASCH碼值為八進(jìn)制數(shù)065的字符;\xff是ASCH

碼值為十六進(jìn)制數(shù)Oxff的字符;\n是換行字符。該字符串共有5個(gè)字符。

注意:記住常用的轉(zhuǎn)義字符。

12.下面程序的輸出結(jié)果是()。

inti=65536;

printf(%d\n”,i);

答:T

因?yàn)閕nt型變量i在C語言中是用16位補(bǔ)碼表示的,而65535變成二進(jìn)制數(shù)為

1111111111111111,因此i的值為1111111111111111,按照帶符號(hào)的十進(jìn)制數(shù)%d輸出T,

因?yàn)?111111111111111是-1的補(bǔ)碼。

13.若有說明和語句:

inta=5;

a++;

此處表達(dá)式a++的值是()。

答:5

表達(dá)式a++的值是5表達(dá)式計(jì)算后,變量a的值是6。

14.若k為int變量,則以下語句()。

k=8567;

printf("|%-06d|\n”,k);

答:8567|

兩個(gè)I原樣輸出,格式符%R6d說明輸出變量k的值長(zhǎng)度為6且左對(duì)齊。

15.若x為float型變量,則以下語句()。

x=213.82631;

printf("%-4.2f\n”,x);

答:213.83

16.若x為double變量,則以下語句(

x=213.82631;

printf("%-6.2e\n",x);

答:2.14e+02

17.若ch為char型變量,k為int型變量(已知字符a的ASCH十進(jìn)制代碼為97),則執(zhí)

行下列語句

ch='a;

k=12;

printfC%x,%o,",ch,ch,k);

printf("k=%%d\n”,k);

輸出為()。

答:61,141,k=%d

18.若有以下定義:

chars='\092';

則該語句()。

A).使s的值包含1個(gè)字符

B).定義不合法,s的值不確定

C).使s的值包含4個(gè)字符

D).使s的值包含3個(gè)字符

答:B)

因?yàn)樽址?,\092,中的092應(yīng)該是八進(jìn)制數(shù),但八進(jìn)制數(shù)中不可能出現(xiàn)9o

19.執(zhí)行以下語句后,輸出結(jié)果是(

inta=1;

printfC%d,%d”,a,a++);

答:2,1

因?yàn)镃語言中函數(shù)的實(shí)參計(jì)算順序是從右至左。即首先計(jì)算a++,然后計(jì)算a。

20.以下程序的輸出結(jié)果是()o

#include<stdio.h>

main()

(

inti=010,j=10;

printf("淑1,%d\n”,++i,j—);

}

A)11,10B)9,10C)010,9D)10,9

答:B)

010是八進(jìn)制數(shù)。

21.已知字母A的ASCH碼為65,以下程序的輸出結(jié)果是()。

#include<stdio.h>

main()

(

charcl='A*,c2='Y";

printf("%d,%d\n”,cl,c2);

)

答:65,89

22.以下語句

inta=110,b=017;

printf(/z%x,%d\n”,a++,++b);

輸出結(jié)果是()

答:6e,16

110的十六進(jìn)制數(shù)為6e,八進(jìn)制數(shù)017加1為020,等于十進(jìn)制數(shù)16.

23.以下程序

main()

{inti=3,j=2,a,b,c;

a=(---i==j++)?---i:++j;

b=i++;

c=j;

printf("%d,%d,%d\n”,a,b,c);

)

輸出結(jié)果是()

答:1,1,3

24.請(qǐng)讀程序

ftinclude<stdio.h>

main()

(

inta;floatb,c;

scanf(z/%2d%3f%4fz/,&a,&b,&c);

printf("\na=%d,b=%f,c=%f”,a,b,c);

}

若運(yùn)行時(shí)從鍵盤上輸入9876543210<CR>(〈CR>表示回車),則上面程序的輸出結(jié)果是()。

答:a=98,b=765.000000,c=4321.000000

25.請(qǐng)讀程序片段(字符串內(nèi)沒有空格字符):

printf("%d\n”,strlen(//AST\nO12\l\\z,));

上面程序的輸出結(jié)果是(

答:9

字符串中包含9個(gè)字符,分別是AST\n012\1\\o

26.以下程序的輸出結(jié)果是()

main()

{inti=—1;

printf(/z%d,%u\n”,i,i);

)

答:-b65535

3.2選擇結(jié)構(gòu)程序

3.2.1考試要求

用if語句實(shí)現(xiàn)選擇結(jié)構(gòu)

用switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)

選擇結(jié)構(gòu)的嵌套

3.2.2要點(diǎn)指導(dǎo)

關(guān)系運(yùn)算符、關(guān)系表達(dá)式

邏輯運(yùn)算符、邏輯表達(dá)式

if語句三種形式:

1.if(表達(dá)式)語句

2.if(表達(dá)式)語句1

else語句2

3.if(表達(dá)式1)語句1

elseif(表達(dá)式2)語句2

elseif(表達(dá)式3)語句3

elseif(表達(dá)式n)語句n

else語句n+1

switch語句形式:

switch(表達(dá)式)

(

case常量表達(dá)式1:語句1

case常量表達(dá)式2:語句2

case常量表達(dá)式n:語句n

default:語句n+1

)

break語句

break語句的作用是本層結(jié)束循環(huán)或switch語句。

選擇結(jié)構(gòu)的嵌套

3.2.3同步練習(xí)

1.判斷型char變量cl是否為小寫字母的正確表達(dá)式為()。

A)'a'<=cl〈='z'

B)(cl>=a)&&(cl<=z)

C)('a'>=cl)||('z'>=cl)

D)(cl>=,a')&&(cl<=,z")

答:D)

2.程序的運(yùn)行結(jié)果是(

main()

(

inta=l,b=2,c=3,d=4,m=2,n=2;

(m=a>b)&&(n=c>d);

printfn);

)

答:2

首先計(jì)算m=a>b,因?yàn)殛P(guān)系運(yùn)算符〉優(yōu)先級(jí)高于賦值運(yùn)算符=,a>b的結(jié)果為假(0),賦值后

m的值為0。因?yàn)镃語言計(jì)算邏輯表達(dá)式0&&(n=c>d)時(shí),已經(jīng)知道結(jié)果為0,因此n=c>d就

不計(jì)算了。N的值仍為2。

3.執(zhí)行以下語句后a的值為();b的值為()。

inta,b,c;

a=b=c=l;

++a||++b&&++c;

答:a的值為2;b的值為lo

4.程序的運(yùn)行結(jié)果是()o

mainO

(

intx=10,y=20,z=30;

if(x>y)

z=x;x=y;y=z;

printf(,z%d,%d,%d”,x,y,z);

)

答:20,30,30

因?yàn)閕f(x>y)

z=x;x=y;y=z;

是三條語句,即:

if(x>y)z=x;

x二y;

y二z;

而不是:

if(x>y)

{z=x;x=y;y=z;}

5.程序的運(yùn)行結(jié)果是()。

mainO

(

intm=5;

if(m++>5)printff%d\n/z,m);

elseprintf(〃%d\n〃,m一);

)

答:6

因?yàn)楸磉_(dá)式m++>5的值為假,m的值為6,執(zhí)行語句printf(〃%d\n為m—);時(shí)輸出6,m的值

又變?yōu)?。。

6.程序的運(yùn)行結(jié)果是()。

main()

(

inta=100,x=10,y=20,m=5,n=0;

if(x<y)

if(y!=m)

a=l;

else

if(n)a=10;

a=-l;

printf("%d\n〃,a);

}

答:T

在if嵌套中,else總是與它上面最近的if結(jié)合,因此本程序變?yōu)?

if(x<y)

{if(y!=m)

a=l;

else

if(n)a=10;

)

a=T;

最后變量a的值為-1。

7.若有條件表達(dá)式(exp)?a++:b—;則以下表達(dá)式中能完全等價(jià)于

表達(dá)式(exp)的是()

A)(exp==O)B)(exp!=O)

C)(exp==l)d)(exp!=l)

答:B)

因?yàn)楸磉_(dá)式(exp)的意義是:當(dāng)變量exp的值為0時(shí)表示假;當(dāng)變量exp的值為非0時(shí)表示

真。因此它與(exp!=0)等價(jià)。

8.程序的運(yùn)行結(jié)果是()。

main()

intk=4,a=3,b=2,c=l;

printf("%d\n",k<a?k:c<b?c:a);

)

答:1

因?yàn)檫\(yùn)算符?的結(jié)合性是自右至左。因此首先計(jì)算c〈b?c:a,結(jié)果為1,然后計(jì)算k〈a?k:l,

結(jié)果仍為1。

9.已知A=7.5,B=2,C=3.6,表達(dá)式

A>B&&C>A||!A<B&&!C>B的值是()。

答:0

10.當(dāng)m=2,n=l,a=l,b=2,c=3時(shí),執(zhí)行完

d=(m=a!=b)&&(n=b>c)后,n=(),m=(

答:n=0,m=l

因?yàn)槭紫扔?jì)算關(guān)系運(yùn)算a!=b,結(jié)果為真即1,再計(jì)算賦值運(yùn)算m=l;再計(jì)算b>c,結(jié)果為假

即0,賦值n=0;最后d的值為假即0。

11.程序的運(yùn)行結(jié)果是()。

main()

intx,y,z;

x=l;y=2;z=3;

x=y一〈=x||x+y!=z;

printf(/z%d,%d”,x,y);

答:1,1

因?yàn)殛P(guān)系運(yùn)算符優(yōu)先級(jí)高于邏輯運(yùn)算符,因此首先計(jì)算y-Cx,結(jié)果表達(dá)式的值為假(0),

y的值為1;再計(jì)算x+y!=z,結(jié)果為真(1),x的值為真(1)。

12.以下程序

main()

(

inti=0,j=0,k=6;

if((++i>0)||(++j>O))k++;

printf(w%d,%d,%d\n”,i,j,k);

}

輸出結(jié)果是()

答:1,0,7

首先計(jì)算++i>0,結(jié)果表達(dá)式的值為真,變量i的值為1。在計(jì)算111(++j>0)時(shí),因

為結(jié)果為真(1),C語言不再計(jì)算表達(dá)式(++j>0)了。因?yàn)閕f()中的邏輯表達(dá)式值為真,

因此計(jì)算k++,結(jié)果k值7。

13.程序的運(yùn)行結(jié)果是()。

main()

(

inta=2,b=7,c=5;

switch(a>0)

{case1:switch(b<0)

{case1:printf(〃礦);break;

case2:printf(〃!〃);break;

)

case0:switch(c==5)

(caseO:printf(〃*〃);break;

case1:printf(〃#〃);break;

default:printf(〃?“);break;

)

default:printf(zz&z/);

}printf("\n");

)

答:#&

因?yàn)楸磉_(dá)式a>0的值為真(1),計(jì)算case1:后面的語句

switch(b<0)

{case1:printf;break;

case2:printf(,z!/z);break;

)

由于表達(dá)式b<0的值為假(0),因此本語句執(zhí)行結(jié)束。又由于本語句后面無break語句,因

此繼續(xù)執(zhí)行

switch(c==5)

{case0:printf(〃*〃);break;

case1:printf("#");break;

default:printf(〃?“);break;

)

結(jié)果輸出#,由于上面的語句后面也無break語句,因此繼續(xù)執(zhí)行語句

printf("&");

輸出&。

14.下面程序的輸出是()o

main()

{inta=-l,b=4,k;

k=(a++<=0)&&(!(b—<=0));

printf("%d%d%d\n”,k,a,b);

}

答:103

關(guān)系表達(dá)式a++<=0的值為真(即1),因?yàn)槭紫扰袛?1〈=0,然后執(zhí)行a++,蝎a的值為0:

關(guān)系表達(dá)式!(b-Y=0)的值為真(即1),因?yàn)槭紫扰袛?<=0,然后執(zhí)行b-,變量b的值為

3,最后執(zhí)行邏輯非運(yùn)算!;

邏輯表達(dá)式(a++〈=0)&&(!(b—<=0))的值為真(即1),執(zhí)行賦值運(yùn)算后,變量k的值為1。

15.下面的程序片段所表示的數(shù)學(xué)函數(shù)關(guān)系是()。

y=-l;

if(x!=0)

if(x>0)y=l;

elsey=0;

A)y=-1(x<0)B)y=1(x<0)C)y=0(x<0)D)y=-1(x<0)

0(x=0)-1(x=0)-1(x=0)1(x=0)

1(x>0)0(x>0)1(x>0)0(x>0)

答:C)

16.下面程序的輸出是()o

main()

{intx=100,a=10,b=20,okl=5,ok2=0;

if(a<b)

if(b!=15)

if(!okl)

x=l;

else

if(ok2)x=10;

x=-l;

printfCz%\n/z,x);

)

A)-lB)0C)1D)下面定的值

答:A)

因?yàn)檎Z句x=T;并不在if語句之中。

17.與y=(x>0?l:x〈0?-l:0)功能相同的if語句是()。

a)if(x>0)y=l;b)if(x)

elseif(x<0)y=T;if(x>0)y=l;

elsey=0;elsey=T;

c)y=T;d)y=0;

if(x)if(x>0)

if(x>O)y=l;if(x>0)y=l;

elseif(x==O)y=O;elsey=-l;

elsey=-l;

答:A)

18.設(shè)a=6,b=—8,c=3,以下邏輯表達(dá)式的值為()。

'd'&&(a>b)&&(b>c)&&(a—c)

答:0}

19.若執(zhí)行下面的程序時(shí)從鍵盤上輸入3和4,則輸出是()o

main()

{inta,b,s;

scanf("%d%d”,&a,&b);

s=a;

if(a<b)s=b;

s=s*s;

printf(〃%d\n〃,s);

)

答:16

20.下面的程序

main()

{intx=3,y=0,z=0;

if(x二y+z)printf(〃****〃);

elseprintf(〃####");

答:####

21.兩次運(yùn)行下面的程序,如果從鍵盤上分別輸入6和4,則輸出的結(jié)果是()。

main()

{intx;

scanf(z,%d,z,&x);

if(x++>5)printfx);

elseprintf(〃%d\n〃,x-);

)

答:75

22.假定所有變量均已正確說明,下列程序段運(yùn)行后x值是()。

a=b=c=0;x=35;

if(!a)x-;

elseif(b);if(c)x=3;

elsex=4;

答:4

該程序:

a=b=c=O;

x=35;

if(!a)x一;elseif(b);

if(c)x=3;elsex=4;

23.以下兩條if語句合并成一條if語句為()。

if(a<=b)x=l;

elsey=2;

if(a>b)printf("****y=%d\n”,y);

elseprintf("####x=%d\n”,x);

答:if(a<=b){x=l;

printf("####x=%d\n”,x);

)

else{y=2;

printf("****y=%d\rT,y);

)

3.3循環(huán)結(jié)構(gòu)程序

3.3.1考試要求

for循環(huán)

while循環(huán)

dowhile循環(huán)

goto語句

continue語句和break語句

循環(huán)的嵌套

3.3.2要點(diǎn)指導(dǎo)

1.for循環(huán)結(jié)構(gòu)

for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體

熟練掌握for循環(huán)的執(zhí)行過程:

①首先計(jì)算表達(dá)式1;

②計(jì)算表達(dá)式2;

③如果計(jì)算表達(dá)式2的值為真,則執(zhí)行循環(huán)體,計(jì)算表達(dá)式3,

然后轉(zhuǎn)到②

如果計(jì)算表達(dá)式2的值為假,則循環(huán)結(jié)束。

表達(dá)式1主要作用是對(duì)循環(huán)條件的初始化,在循環(huán)開始時(shí)僅執(zhí)行'

次。

表達(dá)式2是判斷是否繼續(xù)循環(huán)的條件;

每次執(zhí)行完循環(huán)體,都要計(jì)算表達(dá)式3,然后計(jì)算表達(dá)式2判斷是

否繼續(xù)循環(huán)。

2.while循環(huán)結(jié)構(gòu)

while(表達(dá)式)

循環(huán)體

執(zhí)行過程:

①計(jì)算表達(dá)式;

②如果表達(dá)式的值為真,則執(zhí)行循環(huán)體,然后轉(zhuǎn)到①

如果表達(dá)式的值為假,則循環(huán)結(jié)束。

亦即當(dāng)表達(dá)式為真時(shí)執(zhí)行循環(huán)體。

3.dowhile循環(huán)結(jié)構(gòu)

do

循環(huán)體

while(表達(dá)式);

執(zhí)行過程:

①執(zhí)行循環(huán)體;

②計(jì)算表達(dá)式;

③如果表達(dá)式的值為真,則轉(zhuǎn)到①

如果表達(dá)式的值為假,則循環(huán)結(jié)束。

即執(zhí)行循環(huán)體,當(dāng)表達(dá)式值為真時(shí)繼續(xù)執(zhí)行循環(huán)體。

4.continue語句的作用是結(jié)束本次循環(huán)。

break語句的作用是結(jié)束循環(huán)和結(jié)束switch語句。當(dāng)循環(huán)是多層嵌

套時(shí),break語句的作用是結(jié)束本層循環(huán)。

5.循環(huán)的嵌套

各種循環(huán)可以互相嵌套。

3.3.3同步練習(xí)

1.下面程序段的運(yùn)行結(jié)果是()o

x=y=0;

while(x<15)y++,x+=++y;

printf("%d,%d〃,y,x);

答:8,20

y++,x+=++y;是一個(gè)逗號(hào)表達(dá)式語句,首先計(jì)算y++,然后計(jì)算x+=++y。

2.程序的運(yùn)行結(jié)果是()。

#include<stdio.h>

main()

(

intc=0;

while(c<=2)

{c++;

printf("%d\n〃,c);

)

)

答:1

2

3

3.輸入2473<CR>,下面程序的運(yùn)行結(jié)果是()o

#include<stdio.h>

mainO

(

intc;

while((c=getchar())!=,\n)

switch(c-,2')

(case0:

case1:putchar(c+4);

case2:putchar(c+4);break;

case3:putchar(c+3);

default:putchar(c+2);break;

)

printf(〃\n〃);

}

答:668977

第一次函數(shù)getchar()從鍵盤讀取字符2,變量c的值為字符2,因此c」2,的值為0,執(zhí)行case

。后面的語句putchar(c+4);和putchar(c+4);執(zhí)行break;語句后,switch語句執(zhí)行結(jié)束。

此次輸出字符66o

4.下面程序段輸出結(jié)果為()o

intx=3;

do{printf(〃%d\n〃,x-=2);}while(!(-x));

答:1

-2

5.不是無限循環(huán)的語句為()。

A)for(y=0,x=l;x>++y;x=i++)i=x;

B)for(;;x++=i);

C)while(l){x++;}

D)for(i=10;;i-)sum+=i;

答:A)

6,下面程序段的運(yùn)行結(jié)果是()。

for(y=l;y<10;)y=((x=3*y,x+1),x-l);

printf(〃x=%d,ymd”,x,y);

答:x=15,y=14

執(zhí)行完第1次循環(huán)后x=3y=2

執(zhí)行完第2次循環(huán)后x=6y=5

執(zhí)行完第3次循環(huán)后x=15y=14

7.程序的運(yùn)行結(jié)果是()0

#include<stdio.h>

main()

(

inta,b;

for(a=l,b=l;a<=100;a++)

{if(b>=20)break;

if(b%3==l){b+=3;continue;}

b-=5;

)

printfa);

}

答:8

8.下面程序段不是無限循環(huán)的是()。

A)inti=100;

while(l)

{i=i%100+l;

if(i>100)break;

}

B)for(;;);

C)intk=0;

do{++k;}while(k>=0);

D)ints=36;

while(s);一s;

答:C)

A)i值只能是從1至IJ100之間變化,i>100永遠(yuǎn)是假,因此break永遠(yuǎn)也不會(huì)被執(zhí)行。

B)for循環(huán)語句的第2個(gè)表達(dá)式?jīng)]有,意味著永遠(yuǎn)為真。

0每次循環(huán)k的值加1,當(dāng)k的值為32767時(shí),再執(zhí)行++k,k的值變?yōu)?32768,循環(huán)結(jié)束。

D)因?yàn)檎Z句-s并不在循環(huán)中,while(s);永遠(yuǎn)執(zhí)行一個(gè)空語句。

9.下面程序段()。

x=3;

do{y=x—;

if(!y){printf(z/*/z);continue;}

printf("#");

}while(K=x<=2);

A)輸出##B)輸出##*

C)無限循環(huán)D)含有不合法的控制表達(dá)式

答:C)

第一次循環(huán)執(zhí)行y=x-;后x和y的值分別為2和3,因此輸出1個(gè)#。執(zhí)行l(wèi)<=x<=2時(shí)由于

邏輯運(yùn)算符<=的結(jié)合性是從左至右,因此首先計(jì)算l〈=x,結(jié)果為真(即1),然后計(jì)算1〈=2,

結(jié)果仍為真,再次執(zhí)行循環(huán)??梢钥闯鰺o論K=x為真(即1)或者為假(即0),l<=x<=2

的值始終為真,因此循環(huán)為無限循環(huán)。

10.程序的運(yùn)行結(jié)果是(

#include<stdio.h>

main()

{intk=0;charc='A";

do{switch(c++)

{case'A':k++;break;

case'B':k一;

case'C':k+=2;break;

case'D':k=k%2;continue:

case'E':k=k*10;break;

default:k=k/3;

}

k++;

}while(c<'G');

printf("k=%d\n”,k);

}

答:k=4

第1次循環(huán)執(zhí)行前c=,A,,k=0,循環(huán)執(zhí)行后c=,B,,k=2

第2次循環(huán)執(zhí)行后c=zCz,k=4

第3次循環(huán)執(zhí)行后c=,D,,k=7

第4次循環(huán)執(zhí)行后c=zE,,k=l

第5次循環(huán)執(zhí)行后c=fFz,k=ll

第6次循環(huán)執(zhí)行后c='G',k二4

11.程序的運(yùn)行結(jié)果是()o

main()

(

intt=l;fun(fun(t));

}

fun(inth)

(

staticinta[3]={l,2,3);

intk;

for(k=0;k<3;k++)a[k]+=a[k]-h;

for(k=0;k<3;k++)printf(〃%d,”,a[k]);

printf("\n〃);

return(a[h]);

)

答:1,3,5,

~1,3,7,

12.程序的運(yùn)行結(jié)果是()o

main()

(

inti,j,a=0;

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

{for(j=0;j<4;j++)

{if(j%2)break;

a++;

)

a++;

}printf(〃%d\n〃,a);

}

答:4

13.求兩個(gè)正整數(shù)的最大公約數(shù),填空。

#include<stdio.h>

main()

(

intr,m,n;

scanf(〃%d%d〃,&m,&n);

if(m<n)U);/*填空*/

r=m%n;

while(r){m=n;n=r;r=(2);}/*填空*/

printf(〃刎\n〃,n);

答:(1){r=m;m=n;n=r;}

(2)m%n

輾轉(zhuǎn)相除法求兩個(gè)正整數(shù)的最大公約數(shù)。

14.程序的運(yùn)行結(jié)果是()。

#include<stdio.h>

main()

(

inti,x,y;

i=x=y=O;

do{++i;

if(i%2!=0){x=x+i;i++;)

y=y+i++;

}while(i<=7);

printf(〃x二%d,y二%d\n〃,x,y);

)

答:x=l,y=20

15.程序的運(yùn)行結(jié)果是()o

mainO

(

intx=10,y=10,i;

for(i=0;x>8;y=++i)

printf(,z%d,%d,”,x—,y);

)

A)10,1,9,2,B)9,8,7,6,

C)10,9,9,0,D)10,10,9,1,

答:D)

16.下面程序的功能是計(jì)算1-3+5-7+...-99+101的值,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

(

inti,t=l,s=0;

for(i=l;i<=101;i+=2)

{⑴;s=s+t;(2);}/*填空*/

printf(〃%d\n〃,s);

}

答:(1)t=t*i

(2)t=-t

17.程序的運(yùn)行結(jié)果是()o

#include<stdio.h>

main()

(

inti,k=0;

for(i=l;;i++)

{k++;

while(k<i*i)

{k++;

if(k%3==0)gotoloop;

)

)

loop:printf(z/%d,%d”,i,k);

}

答:2,3

18.以下程序是利用互減法求三個(gè)自然數(shù)的最大公約數(shù),請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

(

inta,b,i;

printf("Enterthefirstnumbertoa:〃);

scanf(〃%d〃,&a);

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

{printf(,zEnternextnumber:〃);

scanf(〃%d”,&b);

a=gcd(a,b);

)

printf(Z/Thegreatestcommondivisoris%d\n〃,a);

)

intgcd(intx,inty)

{if(x>y)

⑴;/*填空*/

elseif(x<y=

(2);/*填空*/

else

returnx;

}

答:⑴gcd(x-y,y)

(2)gcd(x,y-x)

19.以下程序通過命令行參數(shù)將命令行中給出的若干個(gè)字符串連接起來并輸出到屏幕上。程

序文件名為p9.c,

執(zhí)行該程序的命令是:

p9abed9712

請(qǐng)?zhí)羁詹懗鲚敵鼋Y(jié)果。

/*p9.c*/

#include<stdio.h>

char*hx(char*sl,char*s2)

{char*temp;

temp=si;

while(*sl)

si++;

while(*s2)

{⑴;/*填空*/

si++;

s2++;

}

*sl=,\0,;

returntemp;

)

main(intargc,char*argv[])

{inti;

for(i=l;(2);i++)/*填空*/

hs(argv[i],⑶);/*填空*/

printf(〃%s\n〃,argv[1]);

)

答:(1)*sl=*s2

(2)i<argc-l

(3)argv[i+l]

程序的輸出結(jié)果為abcd9712

20.請(qǐng)寫出以下程序的運(yùn)行結(jié)果()。

#include<stdio.h>

main()

{

char**pd;

staticchar*d[]={"up",〃down〃,"left","right”,〃〃};

pd=d;

while(**pd!=NULL)

printf(〃%s\n〃,*pd++);

)

答:updownleftright

21.若i為整型變量,i=0;

while(i=0)i++;

則以上循環(huán)

A)執(zhí)行10次B)執(zhí)行1次

C)一次也不執(zhí)行D)無限循環(huán)

答:O

因?yàn)閕=0是賦值表達(dá)式,其值為0即假,而非條件表達(dá)式i==0。

22.下面的程序中有錯(cuò)誤的是()o(每行程序前面的數(shù)字是行號(hào))。

1#include<stdio.h>

2main()

3{

4floata[3]={0.0};

5inti;

6for(i=0;i<3;i++)scanf(〃%d〃,&a[i]);

7for(i=l;i<3;i++)a[0]=a[0]+a[i]);

8printfC%f\n,z,a[0]);

9)

答:第6行

因?yàn)閿?shù)組元素是浮點(diǎn)型變量,因此不能用/d作為格式編輯符,應(yīng)該用格式編輯符%f。

23.下列程序執(zhí)行后的結(jié)果是()。

inta,y;

a=10;y=0;

do{a+=2;y+=a;

printf(〃a=/dy=%d\n〃,a,y);

if(y>20)break;

}while(a=14);

A)a=12y=12B)a=12y=12

a=14y=16a=16y=28

a=16y=20D)a=12y=12

a=18y=24a=14y=26

C)a=12y=12a=14y=44

答:B)

注意a=14是賦值表達(dá)式,其值為14(表示真),而非條件表達(dá)式a=14。

24.下面程序的功能是:計(jì)算1到10之間的奇數(shù)之和及偶數(shù)之和,請(qǐng)?zhí)羁铡?/p>

#include〃stdio.h〃

main()

{inta,b,c,i;

a=c=0;

for(i=0;i<=10;i+=2)

{a+=i;

(1);/*填空*/

c+=b;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論