《C语言程序设计》课件第1章_第1页
《C语言程序设计》课件第1章_第2页
《C语言程序设计》课件第1章_第3页
《C语言程序设计》课件第1章_第4页
《C语言程序设计》课件第1章_第5页
已阅读5页,还剩276页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题一C语言概述

习题二

常量、变量及数据类型

习题三运算符与表达式

习题四基本输入、输出

习题五选择结构程序设计

习题六循环结构程序设计

习题七数组

习题八字符数组与字符串

习题九函数

习题十结构体与共用体

习题十一指针

习题十二文件管理

习题十三编译预处理

第一部分章节同步训练习题习题一C语言概述

一、填空题

1.应用程序myfile.c中只有一个函数,这个函数的名称是_______。2.一个函数由_______和_______两部分组成。3.在一个C源程序中,注释部分两侧的分界符分别是_______和_______。4.在C语言中,输入操作是由库函数_______完成的,输出操作是由库函数_______完成的。5.通过文字编辑建立的源程序文件的扩展名是_______;编译后生成目标程序文件,扩展名是_______;链接后生成可执行程序文件,扩展名是_______;运行得到结果。6. C语言程序的基本单位或者模块是_______。7. C语言程序的语句结束符是_______。8.编写一个C程序,上机运行,要经过________、________、_______和_______几个步骤。9.符合结构化原则的三种基本控制结构是:_______、_______和_______。10.程序流程图中菱形框表示的是_______。二、选择题1.一个C程序的执行是从()。A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束

2.以下不是C语言特点的是()。A. C语言简洁、紧凑,使用方便、灵活B. C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作C. C语言具有结构化的控制语句D. C语言中没有运算符3.以下叙述不正确的是()。A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.在C程序中,注释说明只能位于一条语句的后面D. C程序的基本组成单位是函数4. C语言规定:在一个源程序中,main函数的位置()。A.必须在程序的开头 B.必须在系统调用的库函数的后面C.可以在程序的任意位置 D.必须在程序的最后5.一个C语言程序是由()。A.一个主程序和若干个子程序组成 B.函数组成C.若干个过程组成 D.若干个子程序组成6. C编译程序是()。A.将C源程序编译成目标程序的程序B.一组机器语言指令C.将C源程序编译成应用软件D. C程序的机器语言版本7.以下叙述中正确的是()。A. C语言的源程序不必通过编译就可以直接运行B. C语言中的每条可执行语句最终都将被转换成二进制的机器指令C. C源程序经编译形成的二进制代码可以直接运行D. C语言中的函数不可以单独进行编译8.用C语言编写的代码程序()。A.可立即执行 B.是一个源程序C.经过编译即可执行 D.经过编译解释才能执行三、简答题1. C语言程序的总体结构是怎样的?2. C语言程序的基本单位是什么?它的结构又如何?3.主函数main()在程序中的地位如何?程序总是从哪个函数开始执行,到哪个函数执行完后结束?4.什么是算法?算法有些什么特性?计算机如何表示算法?5.执行一个C语言程序的一般过程是什么?四、编程题1.请参照《教材》例1-1,编写一个C程序,输出以下信息:************VeryGood!************2.请参照《教材》例1-2,设计一个C语言程序,计算10+20+50的和。习题二

常量、变量及数据类型

一、填空题

1. C程序中数据有_______和_______之分,其中,用一个标识符代表一个常量的称为_______常量。C语言规定在程序中对用到的所有数据都必须指定其_______类型,对变量必须做到先_______,后使用。2. C语言所提供的基本数据类型包括:单精度型、双精度型、_______、_______、_______。3. 5.4321E2在常规表示法中表示为_______,327.876在科学表示法中表示为_______。4.写出下列数所对应的其他进制数。(1) 32D = _________B = ________O = ________H(2) 75D = _________B = ________O = ________H5. C的字符常量是用_______引号括起来的_______个字符,而字符串常量是用_______引号括起来的_______序列。6. C语言中,字符型数据和_______数据之间可以通用。7.字符串"abcke"长度为_______,占用_______个字节的空间。

8.假设已指定i为int型变量,f为float型变量,d为double型变量,e为long型变量,有式子:10+'a'+i*f-d/e,则结果为_______型。9.若有定义:charc=‘\010’;则变量c中包含的字符个数为_______。二、选择题1.以下选项中属于C语言的数据类型是()。A.复数型 B.逻辑型

C.双精度型D.集合型2.下列常数中不能作为C的常量的是()。A.0xA5 B.2.5e-2

C.3e2 D.05823. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()。A.必须为字母 B.必须为下划线C.必须为字母或下划线

D.可以是字母、数字和下划线中任一种字符4.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()。

A. 0~255 B. 0~32767

C. 0~65535 D. 0~21474836475.以下正确的C语言标识符是()。A.#define B._123 C.%d D.\n6.为求出s=10!的值,则变量s的类型应当为()。A.intB.unsigedC.longD.以上三种类型均可7.在C语言中,合法的字符常量是()。A.'\084'

B.'\x48' C.'ab'

D."\0"8.下列不正确的转义字符是()。A.'\\'

B.'\"

C.'074'

D.'\0

9.若有说明语句:charc='\72',则变量c()。A.包含1个字符 B.包含2个字符C.包含3个字符 D.说明不合法,c的值不确定10.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2中的值为()。A. D B. 68 C.不确定的值D. C三、简答题

1. C语言中用到的数据类型都有哪些?是如何划分的?2. C语言为什么规定对所有用到的变量要“先定义,后使用”?这样做有什么好处?3.字符常量与字符串常量有什么区别?4.指出下列变量名中,哪些是合法的?哪些是非法的?如果是非法的,请说明理由。Int,char,345,ABdf,c&d,string*,_322,alpf_beat,JOHN.smith,3ab习题三运算符与表达式

一、填空题

1.若有定义:intx=3,y=2;floata=2.5,b=3.5;则表达式:(x+y)%2+(int)a/(int)b的值为_______。2.若s为整型变量,且s=6,则表达式s%2+(s+1)%2的值为_______。3. 5/3的值为_______,5.0/3的值为_______。4.将下面的语句补充完整,使得ch1和ch2都被初始化为字母D,但要用不同的方法:

charch1=_______;charch2=_______;

5.自增运算符

++ 和自减运算符

-- 只能用于_______,不能用于常量或表达式。

6. ++ 和

-- 的结合方向是“自_______至_______”。

7.赋值运算符的作用是将一个数据赋给一个_______。

8.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为_______。9.若a是int型变量,则执行表达式a=25/3%3后,a的值为_______。10.若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后,x的值为_______,n的值为_______。

11.若x和a均是int型变量,则执行表达式(1)后的x值为_______,执行表达式(2)后的x值为_______。(1) x=(a=4,6*2)(2) x=a=4,6*212.若a、b和c均是int型变量,则执行表达式a=(b=4)+(c=2)后,a值为_______,b值为_______,c值为_______。13.若有代数式

,则正确的C语言表达式是_______。二、选择题1.在C语言中,要求运算数必须是整型的运算符是()。A./ B.++ C.! = D.%2.设有说明:charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为()。A. float B. Char C. int D. double3.若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。A. 2.500000 B. 2.750000 C. 3.500000 D. 0.0000004.以下能正确地定义整型变量a,b和c,并为其赋初值5的语句是()。A. inta=b=c=5, B. inta,b,c=5;C. inta=5,b=5,c=5; D. a=b=c=5;5.设以下变量均为int类型,则值不等于7的表达式是()。A. (x=y=6,x+y,x+1) B. (x=y=6,x+y,y+1)C. (x=6,x+1,y=6,x+y) D. (y=6,y+1,x=y,x+1)6.设X,Y,Z和K都是int型变量,则执行表达式:X=(Y=52,Z=26,K=32)后,X的值为()。A.4 B.26 C.32 D.527.逗号表达式“(a=3*5,a*4),a+15”的值是()。A.15 B.60 C.30 D.不确定三、阅读程序,写出运行结果1.main(){charc1,c2;c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);

}2.main(){ chari,j,m,n;i=8;j=10

m=++i;

n=j++;

printf("%d,%d,%d,%d\n",i,j,m,n);}

3.

main()

{intx=8,y,z;

y=z=x;

x=y==z;

printf("%d",x);}

4.main(){doublex;x=(int)8.4;

printf("%f\n",x);

四、计算下列表达式的值1. a+b%3*(int)(a-b)/4(设a=13.6,b=8)2. (x+y)/2+(int)x%(int)y(设x=4.5,y=2.5)3. z*=3+6,z/z=z/2,z+=z-=z*=z(设z=6)习题四基本输入、输出

一、填空题1. C语句分为五种:_______、函数调用语句、_______、空语句和_______。2.一条基本语句的最后一个字符是_______。3.复合语句又称分程序,是用_______括起来的语句。4.使用标准输入输出库函数时,程序的开头要有如下预处理命令:_______。5. getchar函数的作用是从终端输入_______个字符。6. printf函数的作用是向终端_______若干个任意类型的数据。7. printf函数中的“格式控制”,包括_______和_______两种信息。8. scanf函数中的“格式控制”后面应当是变量_______,而不是变量名。9.在用scanf函数中输入数据时,如果在“格式控制”字符串中除了格式说明以外还有其他字符,则应在对应位置输入与这些字符相同的_______。10.在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符_______。11.在输入数据时,遇到以下情况时该数据认为结束:遇_______,或按_______或_______;按指定的宽度结束;遇非法输入。12.输入数据时不能规定_______。二、选择题1.以下不属于流程控制语句的是()。A.表达式语句 B.选择语句

C.循环语句 D.转移语句2. putchar函数可以向终端输出一个()。A.整型变量表达式值 B.实型变量值C.字符串 D.字符或字符型变量值3. getchar函数的参数个数是()。A.1 B.0C.2D.任意4.以下程序的输出结果是()。

main() { printf("\n*s1=%15s*","chinabeijing");

printf("\n*s2=%-5s*","chi");

}

A.*s1=chinabeijing*

B.*s1=chinabeijing* *s2=**chi*    *s2=chi*C.*s1=*chinabeijing* D.*s1=chinabeijing* *s2=chi*  *s2=chi*5. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式();如果字符串长度小于5,则输出按方式()。A.从左起输出该字串,右补空格

B.按原字符长从左向右全部输出C.右对齐输出该字串,左补空格

D.输出错误信息6.已有定义inta=-2;和输出语句:printf("%8x",a);以下叙述中正确的是()。A.整型变量的输出格式符只有%d一种B.%x是格式符的一种,它可以适用于任何一种类型的数据C.%x是格式符的一种,其变量的值按十六进制输出,但%8x是错误的D.%8x不是错误的格式符,其中数字8规定了输出字段的宽度7.若inta,b;scanf("%d%d",&a,&b);不可以用()作为输入的分隔符。A., B.空格键

C.回车键 D.Tab键

8.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是()。

inta1,a2;charc1,c2;

scanf("%d%d",&a1,&a2);

scanf("%c%c",&c1,&c2);

A.1020AB<CR>

B.1020<CR> AB<CR>

C.1020AB<CR>

D.1020AB<CR>9.阅读以下程序,当输入数据的形式为25,13,10<CR>时,正确的输出结果为()。

main() {intx,y,z; scanf("%d%d%d",&x,&y,&z);printf("x+y+z=%d\n",x+y+z); }A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值10.已有程序段和输入数据的形式如下,程序中输入语句的正确形式应当为()。 main() { inta;floatf; printf("\nInputnumber:");

输入语句

printf("\nf=%f,a=%d\n",f,a);

} Inputnumber:4.52<CR>

A.scanf("%d,%f",&a,&f); B.scanf("%f,%d",&f,&a);

C.scanf("%d%f",&a,&f); D.scanf("%f%d",&f,&a);11.根据定义和数据的输入方式,输入语句的正确形式为()。

已有定义:floatf1,f2;

数据的输入方式:4.52

3.5A.scanf("%f,%f",&f1,&f2); B.scanf("%f%f",&f1,&f2);C.scanf("%3.2f%2.1f",&f1,&f2); D.scanf("%3.2f%2.1f",&f1,&f2);12.阅读以下程序,若运行结果为如下形式,则输入、输出语句的正确内容是()。

main() { intx;floaty; printf("enterx,y:");

输入语句

输出语句 }

输入形式 enterx,y:23.4

输出形式 x+y=5.40A.scanf("%d,%f ",&x,&y); printf("\nx+y=%4.2f",x+y);B.scanf("%d%f",&x,&y); printf("\nx+y=%4.2f",x+y);C.scanf("%d%f",&x,&y); printf("\nx+y=%6.1f",x+y);D.scanf("%d%3.1f",&x,&y); printf("\nx+y=%4.2f",x+y);13.以下说法中正确的是()。A.输入项可以为一实型常量,如scanf("%f",3.5);B.只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d,b=%d");C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);D.当输入数据时,必须指明变量的地址,如scanf("%f",&f);14.有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b为3,c为2,则从键盘输入数据的正确形式应当是()。A.132<回车> B.1,3,2<回车>C.a=1b=3c=2<回车> D.a=1,b=3,c=2<回车>15.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,则当从第一列开始输入数据时,正确的数据输入方式是()。

inta1,a2;charc1,c2; scanf("%d%c%d%c",&a1,&c1,&a2,&c2);A.10A20B<CR> B.10A20B<CR>C.10A20B<CR> D.10A20B<CR>三、阅读程序,写出运行结果

1.

main()

{shorti;

i=-4;

printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i);}

2.

main()

{ intd=-2;

printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);

printf("*d(4)=%o*d(5)=%7o*d(6)=%-7o*\n",d,d,d);}

3.

main()

{intx=1,y=2;

printf("x=%dy=%d*sum*=%d\n",x,y,x+y);

printf("10Squaredis:%d\n",10*10);}

4.

main(){floata=123.456;doubleb=8765.4567;

printf("(1)%f\n",a);printf("(2)%14.3f\n",a);printf("(3)%6.4f\n",a);printf("(4)%lf\n",b);printf("(5)%14.3lf\n",b);printf("(6)%8.4lf\n",b);printf("(7)%.4f\n",b);}四、编程题1.编写程序,从键盘上输入三个数分别给变量a、b、c,求它们的平均值。并按如下形式输出:averageof**,**and**is**.**。其中,三个

**

依次表示a、b、c的值,**.**

表示a,b,c的平均值。2.1.31英里=1.609千米,地球与月球之间的距离大约是238857英里,请编写C程序,在屏幕上显示出地球与月球之间大约是多少千米?3.设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果(保留小数点后两位数字)。请编写程序。4.输入一个华氏温度,要求输出摄氏温度。公式为c = 5(F - 32)/9,取小数点后两位数字。5.编写C程序,从键盘输入一个字符,在屏幕上显示出其前后相连的三个字符。习题五选择结构程序设计

一、填空题1.关系表达式的运算结果是_______值。C语言没有逻辑型数据,以_______代表“真”,以_______代表“假”。2. C语言提供的三种逻辑运算符是_______、_______、_______。其中优先级最高的为_______,优先级最低的为_______。3.逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以_______和_______来判定它们属于“真”或“假”。4.设y为int型变量,则描述“y是偶数”的表达式是_______。5.设x,y,z均为int型变量,则描述“x或y中有一个小于z”的表达式是_______。6.条件“2<x<3或x<-10”的C语言表达式是_______。7.判断char型变量ch是否为大写字母的正确表达式是_______。8.当a=3,b=2,c=1时,表达式f=a>b>c的值是_______。9.当a=5,b=4,c=2时,表达式a>b!=c的值是_______。10.已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||A<B&&!C>B的值是_______。11.若a=6,b=4,c=2,则表达式 !(a-B.+c-1&&b+c/2的值是_______。12.若有intx,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为_______。13.若有intx,y,z;且x=3,y=-4,z=5,则表达式!(x>y)+(y!=z)||(x+y)&&(y-z)的值为_______。14.若有inta=3,b=4,c=5,x,y;则表达式:!(x=a)&&(y=b)&&0的值为_______。15. if(!k)a=3;语句中的!k可以改写为_______,使其功能不变。16.在if语句中又包含一个或多个if语句称为_______。17.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与________配对。如果if与else数目不一样,为实现设计者的目的,可以加_______来确定配对关系。18.条件运算符是C语言中唯一的一个_______目运算符,其结合性为_______。19.假设条件表达式的格式为:表达式1?表达式2:表达式3;若表达式2和表达式3的类型不同,此时条件表达式的值的类型为二者中较_______的类型。20.在switch语句中,switch后面括弧内的“表达式”,可以为_______类型。21.若a=1,b=2,则表达式a>b?a:b+1的值是_______。22.若w=1、x=2、y=3、z=4,则条件表达式w<x?w:y<z?y:z的值是_______。23.若有以下if语句:if(a<b)min=a;elsemin=b;可用条件运算符来处理的等价式子为_______。24.若x=1,y=2,z=3,则表达式(x<y?x:y)==z++的值是_______。25.设有变量定义:inta=5,c=4;则(--a==++c)?--a:c++的值是_______,此时c的存储单元的值为_______。二、选择题1.逻辑运算符两侧运算对象的数据类型()。A.只能是0或1

B.只能是0或非0正数C.只能是整型或字符型数据

D.可以是任何类型的数据2.以下关于运算符优先顺序的描述中正确的是()。A.关系运算符<算术运算符<赋值运算符<逻辑与运算符B.逻辑与运算符<关系运算符<算术运算符<赋值运算符C.赋值运算符<逻辑与运算符<关系运算符<算术运算符D.算术运算符<关系运算符<赋值运算符<逻辑与运算符3.下列运算符中优先级最高的是()。A.< B.+ C.&& D.!=4.为判断字符变量c的值不是数字也不是字母时,应采用下述表达式()。A.c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122B.!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)C.c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122D.!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)5.能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表达式是()。A.(x>=1)&&(x<=100)&&(x>=200)&&(x<=300)B.(x>=1)||(x<=100)||(x>=200)||(x<=300)C.(x>=1)&&(x<=100)||(x>=200)&&(x<=300)D.(x>=1)||(x<=100)&&(x>=200)||(x<=300)6.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是()。A.'x'&&'y‘ B.x<=yC.x||y+z&&y-z D.!((x<y)&&!z||1)7.已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()。A.0 B.语法错误 C.1 D.“假”8.设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>B.&&(n=c>d)后n的值为()。A.1 B.2 C.3 D.4

9.以下不正确的if语句形式是()。A.if(x>y&&x!=y); B.if(x==y)x+=y;C.if(x!=y)scanf("%d",&x)elsescanf("%d",&y);D.if(x<y){x++;y++;}10.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是()。 if(x>y) z=x;x=y;y=z;A.x=10,y=20,z=30 B.x=20,y=30,z=30C.x=20,y=30,z=10D.x=20,y=30,z=2011.以下if语句语法正确的是()。

A.if(x>0

B.if(x>0)

printf(“%f”,x)

{x=x+y;printf("%f",x);}

elseprintf(“%f”,-x);

elseprintf("%f",-x);

C.if(x>0) D.if(x>0)

{x=x+y;printf(“%f”,x);};

{x=x+y;printf("%f",x)}

elseprintf("%f",-x); elseprintf("%f",-x);12.请阅读下面程序:下面描述中正确的是()。A.程序有语法错误,不能通过编译

B.程序可以通过编译,但不能通过链接C.输出***

D.输出$$$

main() { inta=5,b=5,c=0; if(a==b+c) printf("***\n");

else printf("$$$\n"); }13.请阅读下面程序:

main() { inta=5,b=0,c=0; if(a=b+c) printf("***\n"); else printf("$$$\n"); }下面描述中正确的是()。A.程序有语法错误,不能通过编译 B.程序可以通过编译,但不能通过链接C.输出*** D.输出$$$14.以下程序的运行结果是()。

main() { intm=5; if(m++>5) printf("%d\n",m);

else printf("%d\n",m--); }A.4 B.5 C.6 D.7三、阅读程序,写出运行结果1.若运行时输入:2<回车>,则以下程序的运行结果是_______。

main(){ charClass; printf("Enter1for1stclasspostor2for2ndpost"); scanf("%c",&Class); if(Class=='1') printf("1stclasspostageis19p"); else printf("2ndclasspostageis14p");}2.main(){ if(2*2==5<2*2==4)printf("T");elseprintf("F");}3.main(){ inta=2,b=3,c;c=a;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;printf("%d\n",c);}4.main(){ inta,b,c;ints,w,t;s=w=t=0;a=-1;b=3;c=3;if(c>0)s=a+b;if(a<=0){if(b>0)if(c<=0)w=a-b;}elseif(c>0)w=a-b;elset=c;printf("%d%d%d",s,w,t);}

5.switch(grade){ case'A':printf("85--100\n"); case'B':printf("70--84\n"); case'C':printf("60--69\n"); case'D':printf("<60\n");

default:printf("error!\n");} 若grade的值为 'C',则输出结果是_______。6.main(){ intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d",a,b);}

四、程序填空1.以下程序对输入的四个整数,按从小到大的顺序输出。请在_______内填入正确内容。main()

{ intt,a,b,c,d;

printf("inputa,b,c,d:")scanf("%d,%d,%d,%d",【1】);if(a>b){【2】}if(【3】){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(【4】){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("%d,%d,%d,%d",a,b,c,d);}2.以下程序是计算某年某月有几天。其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。请在_______内填入正确内容。

main()

{ intyy,mm,len;

printf("pleaseinputyear,month:");

scanf("%d%d",&yy,&mm);

switch(mm)

{ case1:

case3:

case5:case7:case8:case10:case12:【1】;break;case4:case6:case9:case11:len=30;break;case2:if(yy%4==0&&yy%100!=0||yy%400==0)【2】;else【3】

;break;default:printf("inputerror");break;} printf("thelengthof%d%dis%d\n",yy,mm,len);}

五、编程题1.试编程,判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes,否则输出no。2.编写程序,要求输入整数x、y和z,若x2+y2+z2大于1000,则输出x2+y2+z2千位以上的数字,否则输出三数之和。3.有一个函数,定义如下,编一个程序,输入一个x值,输出y值。4.已知银行整存整取存款不同期限的月息利率分别为:0.315%期限一年0.330%期限二年0.345%期限三年0.375%期限五年0.420%期限八年编写一个程序,要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。5.编写一个简单计算器程序,输入格式为:data1opdata2。其中,data1和data2是参加运算的两个数,op为运算符,它的取值只能是 +、-、*、/。习题六循环结构程序设计

一、简答题1.简述三种循环while、do-while和for语句的执行过程。2. break和continue语句在循环中的作用是什么?3.简述while语句和do-while语句的区别。二、选择题1. C语言中while和do-while循环的主要区别是()。A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句2.以下描述中正确的是()。A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作C. do-while循环中,根据情况可以省略while3.设有程序段:

intk=10;

while(k)k=k-1;则下面描述中正确的是()。A. while循环执行10次 B.循环是无限循环C.循环体语句一次也不执行 D.循环体语句执行一次

4.已知inti=1;执行语句while(i++<4);后,变量i的值为()。A.3 B.4 C.5 D.65.语句while(!E);中的表达式 !E等价于()。A.E==0 B.E!=1 C.E!=0 D.E==1

6.下面程序段的运行结果是()。

a=1;b=2;c=2; while(a<b<c){ t=a;a=b;b=t;c--; } printf("%d,%d,%d",a,b,c);A.1,2,0 B.2,1,0 C.1,2,1 D.2,1,1

7.下面程序的运行结果是()。

#include<stdio.h>

main()

{ intnum=0; while(num<=2) { num++; printf("%d\n",num); }

}8.以下能正确计算1

×

2

×

3

× … ×

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{s=s*i; do{s=s*i; i++; i++; }while(i<=10); }while(i<=10);9.下面程序的运行结果是()。#include<stdio.h> main() { inty=10; do{y--;}while(--y);

printf("%d\n",y--); }A.-1 B.1 C.8 D.010.下面有关for循环的正确描述是()。A.

for循环只能用于循环次数已经确定的情况B. for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来11.对for(表达式1;;表达式3)可理解为()。A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3)C.for(表达式1;表达式1;表达式3)D.for(表达式1;表达式3;表达式3)12.下列说法中正确的是()。A. break用在switch语句中,而continue用在循环语句中B. break用在循环语句中,而continue用在switch语句中C. break能结束循环,而continue只能结束本次循环D. continue能结束循环,而break只能结束本次循环13.以下说法中正确的描述是()。A. continue语句的作用是结束整个循环的执行B.只能在循环体内和switch语句体内使用break语句C.在循环体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出时,只能使用goto语句14.若i为整型变量,则以下循环执行次数是()。for(i=2;i==0;)printf("%d",i--);A.无限次 B.0次 C.1次 D.2次15.以下for循环的执行次数是()。

for(x=0,y=0;(y=123)&&(x<4);x++)A.是无限循环 B.循环次数不定 C.执行4次 D.执行3次16.以下不是无限循环的语句为()。A. for(y=0,x=1;x>++y;x=i++)i=xB. for(;;x++=i);C. while(1){x++;}D. for(i=10;;i--)sum+=i;17.执行语句for(i=1;i++<4;);后变量i的值是()。A.3 B.4 C.5 D.不定18.关于下面程序段,其中描述正确的是()。

for(t=1;t<=100;t++)

{ scanf("%d",&x); if(x<0)continue; printf("%3d",t);

}A.当x<0时,整个循环结束B.当x≥0时,什么也不输出C. printf函数永远也不执行 D.最多允许输出100个非负整数19.关于下面程序段,其中描述正确的是()。x=3;do{ y=x--; if(!y){printf("*");continue;}

printf("#");}while(1<=x<=2);A.将输出## B.将输出##*C.是死循环 D.含有不合法的控制表达式三、阅读程序,写出运行结果1.

main() { inta,s,n,count; a=2;s=0;n=1;count=1; while(count<=7){n=n*a;s=s+n;++count;} printf("s=%d",s); }2.

main()

{ inti; for(i=1;i<=5;i++)

{ if(i%2)printf("*"); elsecontinue; printf("#");

} printf("$\n"); }3.

main() { inti,j; for(i=4;i>=1;i--) { for(j=1;j<=i;j++)putchar('#'); for(j=1;j<=4-i;j++)putchar('*');

putchar('\n'); }}4.若运行以下程序时,从键盘输入“2473<回车>”,则下面程序的运行结果是(

)。 #include<stdio.h> main() { 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"); }四、程序填空1.下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环。请在_______内填入正确内容。main(){ inta,max=0;scanf("%d",&a);while(【1】){if(max<a)【2】;scanf("%d",【3】);}printf("%d",【4】);}2.下面程序的功能是求1至1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印5个数。请在_______内填入正确内容。 main(){ inti=1,j=0; do { if(【1】) {

printf("%4d",i); j=j+1; if(【2】)printf("\n"); } i=i+1; }while(【3】);}3.以下程序的功能是计算:m = 1 - 3 + 5 -7 + … + 99 - 101的值。请在_______内填入正确内容。

main()

{ inti,t=1,s;

【1】;

for(i=1;

【2】;

【3】)

{s=

【4】;

t=-t;

}

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

}4.以下程序的功能是输入n值,输出如图1-1所示高为n的直角三角形图形。请填空。图1-1第4题输出图形main(){ inti,j,n;printf("\nPleaseEntern:");scanf("%d",&n);for(i=1;

【1】;i++){for(j=1;

【2】;j++)printf("");for(j=1;

【3】;j++)printf("*");

【4】;}}五、编程题1.编写程序计算下列算式的值:…(x>1)直到某一项A≤0.000001时为止。输出最后C的值。2.有一分数序列:

,…求出这个数列的前20项之和。3.求

的值。4.从键盘输入的字符中统计数字字符的个数,用换行符结束循环。5.编写程序,输出用1元人民币兑换成1分、2分和5分硬币的不同兑换方法。6.打印如图1-2所示的钻石图形。图1-2第6题输出图形7.一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高?习题七数

一、填空题1.构成数组的各个元素必须具有相同的_______。C语言中数组的下标必须是正整数、0或_______。如果一维数组的长度为n,则数组下标的最小值为_______,最大值为_______。

2.在C语言中,一维数组的定义方式为:类型说明符数组名_______。3.已知数组b定义为intb[]={9,6,3};,则b的各元素的值分别是_______,最小下标是_______,最大下标是_______。4.在C语言中数组名是一个_______,不能对其进行加、减及赋值操作。5.已知数组T是一个有10个单元的整型数组,正序输出T中的10个元素的值的语句为:for(j=0;j<10;j++)printf("%d",T[j]);下面的语句试图按相反的顺序显示输出T中的10个元素的相反数。请补充完整下面的语句:for(_______;_______;j--)printf("%d",_______);6.已知:inta[][3]={1,2,3,4,5,6,7};则数组a的第一维的大小是_______,元素a[0][2]的值为_______,元素a[1][1]的值为_______。二、选择题1.在C语言中,引用数组元素时,其数组下标的数据类型允许是()。A.整型常量 B.整型表达式C.整型常量或整型表达式 D.任何类型的表达式2.要说明一个有10个int元素的数组,应当选择语句()。A.inta[10]; B.inta(10); C.inta[9] D.inta[11]3.以下对数组的定义正确的是:()。A.floatb[5.0] B.floatb[5] C.floatb(5) D.floatb[]4.对以下说明语句的理解正确的是()。inta[10]={6,7,8,9,10};A.将5个初值依次赋给a[1]至a[5]B.将5个初值依次赋给a[0]至a[4]C.将5个初值依次赋给a[6]至a[10]D.因为数组长度与初值的个数不相同,所以此语句不正确5.已知:inta[10];则对a数组元素的正确引用是()。A.a[10] B.a[3.5] C.a(5) D.a[10-10]6.以下能对一维数组a进行正确初始化的语句是()。

A.inta[10]=(0,0,0,0,0); B.inta[10]={}

C.inta[]={0}; D.inta[10]={10*1};7.以下能对一维数组a进行正确初始化的语句是()。

A.inta[5]; B.inta[3];

a={0,1,2,3,4};

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

scanf("%d",a);

C.inta[3]={0,1,2,3}; D.inta[5];

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

scanf("%d",&a[i]);8.在C语言中,二维数组元素在内存中的存放顺序是()。A.按行存放 B.按列存放

C.由用户自己定义 D.由编译器决定

9.以下对二维数组a的说明正确的是()。A.inta[3][] B.floata(3,4) C.doublea[1][4] D.floata(3)(4)10.已知:inta[3][4];则对数组元素引用正确的是()。A.a[2][4] B.a[1,3] C.a[2][0] D.a(2)(1)11.已知:inta[3][4]={0};则下面叙述正确的是()。A.只有元素a[0][0]可得到初值0B.此说明语句是错误的C.数组a中的每个元素都可得到初值,但其值不一定为0D.数组a中的每个元素均可得到初值012.以下语句正确的是()。A.inta[1][4]={1,2,3,4,5}; B.floatx[3][]={{1},{2},{3}};C.longb[2][3]={{1},{1,2},{1,2,3}};D.doubley[][3]={0};13.以下能对二维数组元素a进行初始化正确的语句是()。A.inta[2][]={{1,0,1},{5,2,3}};B.inta[][3]={1,2,3},{4,5,6}};C.inta[2][4]={{1,2,3},{4,5},{6}};D.inta[][3]={{1,0,1},{},{1,1}};14.以下对一维整型数组a的说明正确的是()。A.inta(10); B.intn=10,a[n];C.intn; D.#defineSIZE10; scanf("%",&n); inta[SIZE]; inta[n];15.要定义一个int型一维数组art,并使其各元素具有初值89,-23,0,0,0,定义语句不正确的是()。A.intart[5]={89,-23};B.intart[]={89,-23};C.intart[5]={89,-23,0,0,0};D.intart[]={89,-23,0,0,0};16.以下各组选项中,均能正确说明二维实型数组a的是()。A.floata[3][4]; B.floata(3,4); floata[][4];  floata[3][4]; floata[3][]={{1},{0}}; floata[][]={{0},{0}};C.floata[3][4]; D.floata[3][4]; floata[][4]={{0},{0}};  floata[3][]; floata[][4]={{0},{0},{0}};  floata[][4];1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论