第三章(C語言程序設計同步練習指導)_第1頁
第三章(C語言程序設計同步練習指導)_第2頁
第三章(C語言程序設計同步練習指導)_第3頁
第三章(C語言程序設計同步練習指導)_第4頁
第三章(C語言程序設計同步練習指導)_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章C語言程序設計同步練習指導

簡介:本章從歷屆“國家計算機等級考試二級c語言筆試”試題中精選出典型的試題,

按照c語言程序設計教學內容編排,供學生們邊學習邊練習,達到即學即會,舉一反三,

觸類旁通的效果。

3.1C語言基本知識

3.1.1考試要求

一、C語言的結構

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

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

3.源程序的書寫格式

4.C語言的風格

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

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

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

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

4.各種類型的C語言表達式(賦值表達式、算術表達式、關系表達式、邏輯表

達式、條件表達式、逗號表達式)及其計算規(guī)則

3.1.2要點指導

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

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

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

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

2.函數(shù)的組成

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

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

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

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

3.頭文件

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

#include〈頭文件名〉

例如:#include"stdio.h"

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

當調用C語言標準函數(shù)庫中輸入輸出類函數(shù)時,要把頭文件stdio.h包含在程序的

開頭;當調用C語言標準函數(shù)庫中數(shù)學類函數(shù)(如sin、sqrt)時,要把頭文件math.h包含

在程序的開頭;

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

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

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

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

類型名變量名=常量;

5.源程序的書寫格式

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

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

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

I*注釋信息*/

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

6.C語言的風格

語言簡練、使用方便:有32個關鍵字、9種控制語句;

運算符豐富:32種運算符;

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

構體、共用體等構造類型和指針類型,能夠實現(xiàn)復雜的數(shù)據(jù)結構;

可直接訪問地址;

可以進行位操作:

可移植性好。

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

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

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

無符號整型unsigned>unsignedshortunsignedlong)

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

字符型char

枚舉類型

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

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

圍是0到65535o

8.運算符和表達式

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

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

是由C語句組成的。因此在學習C語言的過程中注意熟練掌握C語言中的各種語句,達到

能夠靈活運用C語言中的各種語句。而構成C語句的核心是表達式,C語言中有算術表達

式、賦值表達式、逗號表達式、關系表達式、邏輯表達式和條件表達式。而表達式是由常量、

變量、函數(shù)和運算符構成的。

C語言共有34個運算符,這些運算符的優(yōu)先級和緒令侏十分重要,在學習中要

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

優(yōu)先級運算符結合方向

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

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

3*/%算術運算符自左至右

4+-算術運算符自左至右

5??位操作運算符自左至右

6<<=>>=關系運算符自左至右

7——!二關系運算符自左至右

8&位操作運算符自左至右

9A位操作運算符自左至右

101位操作運算符自左至右

11&&邏輯運算符自左至右

12II邏輯運算符自左至右

13?:條件運算符自右至左

14=+=-=*=/=%=?=&=賦值運算符自右至左

15逗號運算符自左至右

從而,C語言表達式的計算順序從高到低:

算術表達式

關系表達式

邏輯表達式

條件表達式

賦值表達式

逗號表達式

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

輸出函數(shù)printf

字符輸出函數(shù)putchar

輸入函數(shù)scanf

字符輸入函數(shù)getchar

常用格式編輯符:

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

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

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

3.1.3同步練習

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

答:int型數(shù)據(jù)在計算機內部是由16位補碼表示的。

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

A)_123B)alb2c3C)intD)123abc

答:A)和B)

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

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

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

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

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

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

答:輸出結果是5。

因為C語言是字母大小寫敏感的,也就是說區(qū)分大小寫字母。pad和pAd是兩個不同的變

量。

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

#include<stdio.h>

main()

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

}

答:o

因為stdio.h頭文件中NULL的定義如下:

^defineNULL0

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

main()

{intx=10,y=3;

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

)

答:3

因為兩個同類型的數(shù)據(jù)作算術運算,其結果仍為該類型?即整數(shù)除以整數(shù),商仍為整數(shù)。

10/3的商為3。

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

main()

{intx=023;

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

)

答:18

因為023是一個八進制數(shù),表達式一X的值為022,按照猊帶符號的十進制數(shù)輸出,結果為

18。

注意:023是八進制數(shù);23是十進制數(shù);0x23是十六進制數(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

因為在計算逗號表達式a=3*5,a*4,a+5時,依次計算下面3個表達式:

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

a*4(該算術表達式的值為60)

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

逗號表達式的值為20,但變量a的值認為15。

9.以下程序的輸出結果是()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)

因為嬲是格式說明符,輸出機其它原樣輸出。

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

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

#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。在邏輯運算中,非0的值為真,真“與”真結果為真,關系和邏輯運

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

11.請選出以下語句的輸出結果()。

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

答:5

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

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

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

注意:記住常用的轉義字符。

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

inti=65536;

printf(%d\n”,i);

答:T

因為int型變量i在C語言中是用16位補碼表示的,而65535變成二進制數(shù)為

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

因為1111111111111111是-1的補碼。

13.若有說明和語句:

inta=5;

a++;

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

答:5

表達式a++的值是5表達式計算后,變量a的值是6。

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

k=8567;

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

答:8567|

兩個I原樣輸出,格式符%R6d說明輸出變量k的值長度為6且左對齊。

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十進制代碼為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個字符

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

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

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

答:B)

因為字符,\092,中的092應該是八進制數(shù),但八進制數(shù)中不可能出現(xiàn)9o

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

inta=1;

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

答:2,1

因為C語言中函數(shù)的實參計算順序是從右至左。即首先計算a++,然后計算a。

20.以下程序的輸出結果是()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是八進制數(shù)。

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

#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);

輸出結果是()

答:6e,16

110的十六進制數(shù)為6e,八進制數(shù)017加1為020,等于十進制數(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);

)

輸出結果是()

答:1,1,3

24.請讀程序

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);

}

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

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

25.請讀程序片段(字符串內沒有空格字符):

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

上面程序的輸出結果是(

答:9

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

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

main()

{inti=—1;

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

)

答:-b65535

3.2選擇結構程序

3.2.1考試要求

用if語句實現(xiàn)選擇結構

用switch語句實現(xiàn)多分支選擇結構

選擇結構的嵌套

3.2.2要點指導

關系運算符、關系表達式

邏輯運算符、邏輯表達式

if語句三種形式:

1.if(表達式)語句

2.if(表達式)語句1

else語句2

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

elseif(表達式2)語句2

elseif(表達式3)語句3

elseif(表達式n)語句n

else語句n+1

switch語句形式:

switch(表達式)

(

case常量表達式1:語句1

case常量表達式2:語句2

case常量表達式n:語句n

default:語句n+1

)

break語句

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

選擇結構的嵌套

3.2.3同步練習

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

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

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

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

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

答:D)

2.程序的運行結果是(

main()

(

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

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

printfn);

)

答:2

首先計算m=a>b,因為關系運算符〉優(yōu)先級高于賦值運算符=,a>b的結果為假(0),賦值后

m的值為0。因為C語言計算邏輯表達式0&&(n=c>d)時,已經知道結果為0,因此n=c>d就

不計算了。N的值仍為2。

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

inta,b,c;

a=b=c=l;

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

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

4.程序的運行結果是()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

因為if(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.程序的運行結果是()。

mainO

(

intm=5;

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

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

)

答:6

因為表達式m++>5的值為假,m的值為6,執(zhí)行語句printf(〃%d\n為m—);時輸出6,m的值

又變?yōu)?。。

6.程序的運行結果是()。

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結合,因此本程序變?yōu)?

if(x<y)

{if(y!=m)

a=l;

else

if(n)a=10;

)

a=T;

最后變量a的值為-1。

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

表達式(exp)的是()

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

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

答:B)

因為表達式(exp)的意義是:當變量exp的值為0時表示假;當變量exp的值為非0時表示

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

8.程序的運行結果是()。

main()

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

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

)

答:1

因為運算符?的結合性是自右至左。因此首先計算c〈b?c:a,結果為1,然后計算k〈a?k:l,

結果仍為1。

9.已知A=7.5,B=2,C=3.6,表達式

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

答:0

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

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

答:n=0,m=l

因為首先計算關系運算a!=b,結果為真即1,再計算賦值運算m=l;再計算b>c,結果為假

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

11.程序的運行結果是()。

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ōu)先級高于邏輯運算符,因此首先計算y-Cx,結果表達式的值為假(0),

y的值為1;再計算x+y!=z,結果為真(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);

}

輸出結果是()

答:1,0,7

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

為結果為真(1),C語言不再計算表達式(++j>0)了。因為if()中的邏輯表達式值為真,

因此計算k++,結果k值7。

13.程序的運行結果是()。

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");

)

答:#&

因為表達式a>0的值為真(1),計算case1:后面的語句

switch(b<0)

{case1:printf;break;

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

)

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

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

switch(c==5)

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

case1:printf("#");break;

default:printf(〃?“);break;

)

結果輸出#,由于上面的語句后面也無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

關系表達式a++<=0的值為真(即1),因為首先判斷-1〈=0,然后執(zhí)行a++,蝎a的值為0:

關系表達式!(b-Y=0)的值為真(即1),因為首先判斷4<=0,然后執(zhí)行b-,變量b的值為

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

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

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

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)

因為語句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.設a=6,b=—8,c=3,以下邏輯表達式的值為()。

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

答:0}

19.若執(zhí)行下面的程序時從鍵盤上輸入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.兩次運行下面的程序,如果從鍵盤上分別輸入6和4,則輸出的結果是()。

main()

{intx;

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

if(x++>5)printfx);

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

)

答:75

22.假定所有變量均已正確說明,下列程序段運行后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)結構程序

3.3.1考試要求

for循環(huán)

while循環(huán)

dowhile循環(huán)

goto語句

continue語句和break語句

循環(huán)的嵌套

3.3.2要點指導

1.for循環(huán)結構

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

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

①首先計算表達式1;

②計算表達式2;

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

然后轉到②

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

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

次。

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

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

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

2.while循環(huán)結構

while(表達式)

循環(huán)體

執(zhí)行過程:

①計算表達式;

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

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

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

3.dowhile循環(huán)結構

do

循環(huán)體

while(表達式);

執(zhí)行過程:

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

②計算表達式;

③如果表達式的值為真,則轉到①

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

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

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

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

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

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

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

3.3.3同步練習

1.下面程序段的運行結果是()o

x=y=0;

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

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

答:8,20

y++,x+=++y;是一個逗號表達式語句,首先計算y++,然后計算x+=++y。

2.程序的運行結果是()。

#include<stdio.h>

main()

(

intc=0;

while(c<=2)

{c++;

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

)

)

答:1

2

3

3.輸入2473<CR>,下面程序的運行結果是()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í)行結束。

此次輸出字符66o

4.下面程序段輸出結果為()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,下面程序段的運行結果是()。

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.程序的運行結果是()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永遠是假,因此break永遠也不會被執(zhí)行。

B)for循環(huán)語句的第2個表達式沒有,意味著永遠為真。

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

D)因為語句-s并不在循環(huán)中,while(s);永遠執(zhí)行一個空語句。

9.下面程序段()。

x=3;

do{y=x—;

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

printf("#");

}while(K=x<=2);

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

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

答:C)

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

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

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

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

10.程序的運行結果是(

#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.程序的運行結果是()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.程序的運行結果是()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.求兩個正整數(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

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

14.程序的運行結果是()。

#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.程序的運行結果是()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.下面程序的功能是計算1-3+5-7+...-99+101的值,請?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.程序的運行結果是()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.以下程序是利用互減法求三個自然數(shù)的最大公約數(shù),請?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ù)將命令行中給出的若干個字符串連接起來并輸出到屏幕上。程

序文件名為p9.c,

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

p9abed9712

請?zhí)羁詹懗鲚敵鼋Y果。

/*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]

程序的輸出結果為abcd9712

20.請寫出以下程序的運行結果()。

#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

因為i=0是賦值表達式,其值為0即假,而非條件表達式i==0。

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

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行

因為數(shù)組元素是浮點型變量,因此不能用/d作為格式編輯符,應該用格式編輯符%f。

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

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是賦值表達式,其值為14(表示真),而非條件表達式a=14。

24.下面程序的功能是:計算1到10之間的奇數(shù)之和及偶數(shù)之和,請?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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論