![第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第1頁](http://file4.renrendoc.com/view/fc4d228d00999bbc49c0ed45d2f74ec4/fc4d228d00999bbc49c0ed45d2f74ec41.gif)
![第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第2頁](http://file4.renrendoc.com/view/fc4d228d00999bbc49c0ed45d2f74ec4/fc4d228d00999bbc49c0ed45d2f74ec42.gif)
![第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第3頁](http://file4.renrendoc.com/view/fc4d228d00999bbc49c0ed45d2f74ec4/fc4d228d00999bbc49c0ed45d2f74ec43.gif)
![第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第4頁](http://file4.renrendoc.com/view/fc4d228d00999bbc49c0ed45d2f74ec4/fc4d228d00999bbc49c0ed45d2f74ec44.gif)
![第三章(C語言程序設(shè)計(jì)同步練習(xí)指導(dǎo))_第5頁](http://file4.renrendoc.com/view/fc4d228d00999bbc49c0ed45d2f74ec4/fc4d228d00999bbc49c0ed45d2f74ec45.gif)
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Pt-IV-M13-生命科學(xué)試劑-MCE-4429
- Frutinone-A-生命科學(xué)試劑-MCE-8513
- 2-Carbamimidoylsulfanyl-acetic-acid-hydrochloride-生命科學(xué)試劑-MCE-6335
- 二零二五年度茶葉品牌授權(quán)合作協(xié)議
- 2025年度籃球俱樂部賽事安全預(yù)案與責(zé)任承擔(dān)協(xié)議
- 二零二五年度中式餐廳合伙人合作協(xié)議
- 2025年度游艇碼頭租賃與船舶租賃稅務(wù)籌劃合同
- 二零二五年度表格合同管理系統(tǒng)在線培訓(xùn)及售后服務(wù)協(xié)議
- 施工現(xiàn)場(chǎng)施工防化學(xué)事故威脅制度
- 科技創(chuàng)新在小學(xué)生課余生活中的重要性
- 農(nóng)業(yè)生產(chǎn)質(zhì)量安全風(fēng)險(xiǎn)評(píng)估與監(jiān)控方案
- 人教版六年級(jí)上冊(cè)解方程練習(xí)300道及答案
- 2017年湖北省黃岡市中考語文(有解析)
- 2024年廣東省高考地理真題(解析版)
- DB37-T3953-2020醫(yī)療衛(wèi)生機(jī)構(gòu)安全風(fēng)險(xiǎn)分級(jí)管控體系實(shí)施指南
- 浩順一卡通軟件新版說明書
- 植物檢疫員崗位職責(zé)說明書
- 2023~2024學(xué)年二年級(jí)下冊(cè)語文期末??荚嚲怼?chuàng)意情境 統(tǒng)編版
- 2024年北師大版六年級(jí)下冊(cè)數(shù)學(xué)期末測(cè)試卷(各地真題)
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫附答案
- 經(jīng)理層年度任期經(jīng)營業(yè)績(jī)考核及薪酬辦法
評(píng)論
0/150
提交評(píng)論