判断一个c判断字符串的子序列是否是递增序列增长这样程序为什么不对

程序设计 • (1)编写 fun 函数,该函数的功能是:判断 t 所指字符串中_百度知道
程序设计 • (1)编写 fun 函数,该函数的功能是:判断 t 所指字符串中
• (1)编写 fun 函数,该函数的功能是:判断 t 所指字符串中的字母是否由连续递增字母序列组成。例如字符串:
uvwxyz 满足要求;而 uvxwyz 不满足。
不得改变 main 函数,仅在 fun 函数的花括号内写入语句。
我有更好的答案
void fun(char *ss){
for(i=0;ss[i];++i)
if(i%2&&ss[i]&='a'&&ss[i]&='z')
ss[i]+='A'-'a';
这个功能我可以给你做哈,很简单。
真的吗?谢谢了~
看我头像。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。编程序判断一个字符序列是否是回文_百度知道
编程序判断一个字符序列是否是回文
要求只使用堆栈,不使用队列
我有更好的答案
int Chk(char *s) /*判断是不是回文的函数*/ { int n,i; n=strlen(s); i=0; while(i&n/2&&s[i]==s[n-i-1]) i++; if(i==n/2) return 1; else return 0; } main() { char s[6]=&nihin&; if(Chk(s)) puts(&yes&); else puts(&no&); }
用栈实现:#include &iostream.h&const int SM=20;struct Stack{ char*
short StackMaxS};static void InitStack(Stack& S,int ms){ S.stack=new char[ms]; S.top=-1; S.StackMaxSize=}static void ClearStack(Stack& S){S.top=-1;}static void DeleteStack(Stack& S){ delete []S. S.top=-1; S.StackMaxSize=0;}static bool StackEmpty(Stack& S){return S.top==-1;}char Peek(Stack& S){ return S.stack[S.top];}static void Push(Stack& S,const char& item){ S.top++; S.stack[S.top]=}static char Pop(Stack& S){ S.top--; return S.stack[S.top+1];}static bool StackFull(Stack& S){ return S.top==S.StackMaxSize-1;}void main(){ char str[SM]; cin&& S InitStack(www,SM); for(int i=0;str[i]!='\0';i++)
Push(www,str[i]); int a=0; while(1) {
if(Peek(www)==str[a])
if(a==i-1)
cout&&&????????!&&&
cout&&&????????????!&&&
} } ClearStack(www);}
本回答被网友采纳
//返回TRUE:是回文字符串//
FALSE:不是回文字符串bool CheckRer(char *pString){
//指向字符串头的指针
//指向字符串尾的指针
//初始化变量
= pStart + Strlen(pString) - 1;
//判断回文字符串,直到头指针的位置大于等于尾指针的位置
while (pStart & pEnd)
//比较两个字符是否相等(有些编译器可能需要使用字符串比较函数)
if ( *pStart != *pEnd )
//移动指针
return bR}
int Check(char *s) /*判断是不是回文的函数*/ { int n, n=strlen(s); int count=n/2;char* stack=new char[count]; for(int i=0;i&i++)
statck[i]=s[i]; //入栈 int top = count-1; //top为栈顶if(n %2 !=0)
index = count+1; //与栈内数进行对比的起始字母位置else
index =bool bfind =int j = 0;while((!bfind)$$(j & count)){
if(stack[top] != s[index+j])
}}delete [] if(!bfind)
return 1; //是回文else
return 0;}
其他2条回答
为您推荐:
其他类似问题
回文的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。算法要有一个明确的起点和确定的步骤序列
时间: 7:06:52
&&&&第1章认识C语言&&&&二、习题&&&&(一)、是非题1.程序是指挥计算机进行各种信息处理任务的一组指令序列。A.对B.错2.机器语言与硬件平台相关,但汇编语言和硬件平台无关。A.对B.错3.编译型高级语言明显优于解释型高级语言。A.对B.错4.C语言把高级语言的基本结构和低级语言的实用性紧密结合起来,不仅适合编写应用软件,而且适于编写系统软件。A.对B.错5.面向对象的程序设计方法明显优于面向过程的程序设计方法。A.对B.错6.计算机算法要有一个明确的起点和确定的步骤序列。A.对B.错7.main函数是C程序的入口,由计算机系统负责调用。A.对B.错8.在C语言中,同一行上可以写一条或多条语句,但一条语句不能写在多行上。A.对B.错9.在C语言中,扩展名为.h的文件称为头文件,常用于组织C标准函数库中的函数。A.对B.错10.注释语句会增加编译结果的复杂性,因此要尽量减少注释语句的数量。A.对B.错(注释语句在预处理阶段被删除,不影响编译)11.声明变量的含义是通知编译系统为变量分配合适大小的存储空间。A.对B.错12.C语言不允许使用关键字作为变量的名称,但可以使用保留字为变量命名。A.对B.错13.符号常量提高了程序的可读性,但降低了程序维护的方便性。A.对B.错14.变量声明把一个具体的标识符名称和计算机内存中的一个特殊的位置联系起来,同时确定了该位置存储的信息类型。A.对B.错15.C语言允许在同一条语句中定义多个相同类型的变量,其间用分号进行分隔。A.对B.错&&&&1&&&&&&&&16.在ISO/ANSI1999规定中,允许将变量声明放在程序中的任何位置。A.对B.错17.不同类型的数据在内存中所占存储单元的大小不同,内部存储方式不同,取值范围不同,甚至能够参与的运算种类也不相同。A.对B.错18.有符号和无符号整数的区别仅在于对数据最高位的解释不同。若最高位解释为数据位,则为signed类型;若最高位解释为符号位,则为unsigned类型。A.对B.错19.默认形式的实数常量的数据类型为float类型。A.对B.错20.实型变量能表示的数字的有效位数是有限的。A.对B.错21.sizeof()是C语言提供的标准库函数,用于测试数据类型在系统中所占的字节数。A.对B.错22.使用转义字符可输出ASCII码表中的任一字符。A.对B.错23.char类型数据内部采用整数存储方式,因此它和int型数据可以互为通用。A.对B.错24.在C语言中,保存字符串“B”实质上是保存字符'B'和'\0'两个符号。A.对B.错25.在C语言中,允许对两个字符型数据进行加法运算。A.对B.错(二)、选择题1.C语言是一种______。A.汇编语言B.“解释型”语言C.“编译型”语言D.面向对象语言2.下列说法中,正确的是______。A.机器语言与硬件相关,但汇编语言与硬件无关B.不同的计算机类型,其能理解的机器语言相同C.汇编语言采用助记符提高程序的可读性,但同样属于低级语言D.汇编源程序属于低级语言程序,计算机可以直接识别并执行3.下面有关高级语言的说法中,正确的是______。A.高级语言编写的程序可读性好,执行效率也最高B.高级语言程序必须翻译成机器语言程序,计算机才能执行C.解释方式和编译方式相比,具有占用内存少、执行速度快的特点D.C语言是一种解释型高级语言4.下面有关C语言特点的说法中,错误的是______。A.C语言编写的代码较为紧凑,执行速度也较快B.C语言不仅适合编写各种应用软件,还适于编写各种系统软件C.C语言是一种模块化和结构化的语言&&&&2&&&&&&&&D.C语言编写的程序通常不具备移植性5.下面有关程序设计技术的说法中,错误的是______。A.机器语言和汇编语言编程通常采用面向计算机的程序设计方式B.面向过程的程序设计方法通常采用结构化和模块化设计方法C.面向对象的程序设计方法采用客观世界的描述方式D.C语言是一种兼顾面向过程和面向对象的高级程序设计语言6.下面有关C程序操作过程的说法中,错误的是______。A.C源程序经过编译,得到的目标文件即为可执行文件B.C源程序的链接实质上是将目标代码文件和库函数等代码进行连接的过程C.C源程序不能通过编译,通常是由于语法错误引起的D.导致不能得到预期计算结果的主要原因是程序算法考虑不周7.一个C语言程序是由________组成。A.主程序B.子程序C.函数D.过程8.C源程序中不能表示的数制是______。A.二进制B.八进制C.十进制D.十六进制9.一个C语言程序总是从__________开始执行。A.主程序B.子程序C.主函数D.函数10.以下叙述中正确的是_______。A.在C程序中,main函数必须位于程序的最前面B.C程序的每一行中只能写一条语句C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误D.C语言本身没有输入输出语句11.以下叙述中正确的是_________。A.C程序的基本组成单位是语句B.C程序中的每一行中只能写一条语句C.C语句必须以分号结束D.C语句必须在一行内写完12.以下叙述中错误的是_________。A.函数是C程序的基本组成单位B.函数体一般由一组C语句序列组成C.printf是C语言提供的输出语句D.函数通常分为库函数和用户自定义函数两种13.以下程序的输出结果是______。#include"stdio.h"voidmain(){inta=2,b=3,c=4;printf("%d,%d,%d\n",c,b,a);}A.432B.2,3,4C.4,3,2D.23414.C语言中,最基本的数据类型是_________。A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.整型、实型、逻辑型、字符型15.下面有关变量声明的说法中,正确的是_________。A.C语言中不用先声明变量,需要时直接使用即可B.每个变量的存储空间大小由数据类型和编译环境共同决定&&&&3&&&&&&&&C.在VC++6.0环境下,为int型变量分配的存储空间大小为2个字节D.变量声明时,不能进行赋值操作16.若x和y为整型变量,对于scanf("a=%d,b=%d",x,y);语句,可使x和y的值分别为10和20的正确输入方法是_________。A.C.a=10b=20D.a=10,b=2017.下列标识符中,不合法的用户标识符为_________。A.aBaB._11C.a_1D.ab18.下列标识符中,合法的用户标识符为_________。A.monthB.5xyC.intD.yourname19._________是C语言提供的合法的数据类型关键字。A.BooleanB.signedC.integerD.Char20.不合法的字符常量是_________。A.'\678'B.'\"'C.''D.'\4'21.不正确的字符串常量是_________。A.'abc'B."12'12"C."0"D.""22.关于下面的程序,正确的说法是_________。#includestdio.hvoidmain(){floata=b=2,result=a/b;printf("result=%f\n",result);}A.程序可正常编译,结果为result=1.000000B.共有1处语法错误C.共有2处语法错误D.共有3处语法错误23.下面变量声明的语句中,错误的是_________。A.charc=B;B.inta=3C.charc=65;D.floatarea=0;24.关于下面的程序,正确的说法是_________。#includestdio.hvoidmain(){intx,y,z;x=y=z=1;printf("x=%d,y=%d,z=%d\n",x,y,z);}A.程序无误,能正常通过编译B.#includestdio.h有误,需改为#include"stdio.h"C.intx,y,z;有误,需改为y;z;D.x=y=z=1;有误,需改为x=1;y=1;z=1;25.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'2';后,c2中的值为__________。A.69B.CC.DD.E26.为了计算s=10!,则定义变量s时应该使用的数据类型是________。A.intB.unsigned&&&&4&&&&&&&&C.longD.以上三种类型均可27.以下选项中合法的标识符是________。A.1_1B.1-1C._11D.1_28.下列关于C语言用户标识符的叙述中正确的是________。A.用户标识符中可以出现下画线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下画线C.用户标识符中可以出现下画线,但不可以放在用户标识符的开头D.用户标识符中可以出现下画线和数字,它们都可以放在用户标识符的开头29.以下选项中,能用作数据常量的是________。A.0119B.o126C.2.5e2.5D.119L30.以下关于short、int和long类型数据占用内存大小的叙述中正确的是________。A.均占4个字节B.根据数据的大小决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定31.若已定义charc='\010',则变量c所占的字节数为__________。A.1B.2C.3D.432.要定义双精度实型变量a和b,并初始化为数值7,则正确的语句是__________。A.doublea,b;a=b=7;B.doublea=b=7;C.doublea=b=7;D.doublea=7,b=7;33.已知字符a的ASCII码值为97,则以下程序的输出结果是__________。#include"stdio.h"voidmain(){charch='c';printf("%c%d\n",ch,ch);}A.c99B.c98C.c97D.编译出错34.以下程序运行后的输出结果是_________。#include“stdio.h”voidmain(){c='B'+32;printf("%c\n",m);}A.BB.bC.B32D.b3235.以下程序运行后的输出结果是_________。#include"stdio.h"voidmain(){charc1,c2;c1='a';c2='b';c1=c1-32;c2=c2-32;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}&&&&5&&&&&&&&A.ABB.ABC.abD.ab979836.如果将一个函数的返回值类型说明为void,则表示_________。A.该函数可以返回任意类型的值B.该函数不能返回任何值C.该函数可以返回基本类型的值D.该函数是main函数,是程序运行的起点37.对于int型常量,不正确的是__________。A.029B.-25C.0x2AD.-0X2838.下列整型常量,错误的是__________。A.025B.285LC.-285u(u表示无符号,怎么还有负号)D.285lu39.以下有关整型变量的定义中,错误的是___________。A.B.C.D.40.下列实型常量,错误的是__________。A.3.2fB.-2.2E-2FC.-12.0D.e341.在VC++6.0环境下,sizeof(int)和sizeof(float)的值分别为__________。A.2,2B.2,4C.4,4D.4,842.对于浮点型数据,下列说法中不正确的是______。A.浮点数在存储时存在舍入误差B.程序设计时,不能直接对两个浮点型数据进行相等比较C.将一个很小的浮点数和一个很大的浮点数进行相加,结果可能不正确D.C语言中的浮点型变量有float和double两种43.若ch为字符型变量,则不能使ch表示字符'B'的语句是__________。A.ch=B;B.ch=66;C.ch='\102';D.ch='\x42';44.以下程序运行后的输出结果是_________。#include"stdio.h"intf(intx,inty){return2*x+y;}voidmain(){inta=3,b=2,t=0;t=f(b,a);printf("%d\n",t);}A.0B.5C.7D.845.以下程序运行后的输出结果是_________。#include"stdio.h"voidmain(){charch='a';intx=5;floats=2.5F;printf("%d,%d,%d\n",sizeof(ch),sizeof(x),sizeof(s));}&&&&6&&&&&&&&A.1,2,4B.1,4,4C.1,4,8D.a,5,2.5(三)、编程题1.已知长方形的长和宽分别为x和y,计算其周长和面积。2.编写一个程序,其功能为:从键盘上输入两个整型数据,分别存放在整型变量a和b中,然后输出表达式a/b和a%b的值。3.编写一个程序,其功能为:从键盘上输入一个浮点数,然后分别输出该数的整数部分和小数部分。4.编写一个程序,其功能为:从键盘上输入一个小写字母,显示这个小写字母及它所对应的大写字母以及它们的ASCII码值。提示:大写字母A~Z的ASCII码值为65~90,小写字母a~z的ASCII码值为97~122。可见,对应的大小写字母的ASCII码值相差32,所以大写字母转换成小写字母就是将其ASCII值加上32,小写字母转换成大写字母就是将其ASCII值减去32。5.输入一个华氏温度F,根据公式c=5(F-32)/9计算输出对应的摄氏温度。要求:输入要有提示,输出要有说明。&&&&四、习题答案&&&&(一)、是非题1.A2.B3.B4.A5.B6.A7.A8.B9.A10.B11.A12.B13.B14.A15.B16.A17.A18.B19.B20.A21.B22.A23.B24.A25.A(二)、选择题1.C2.C3.B4.D5.D6.A7.C8.A9.C10.D11.C12.C13.C14.B15.B16.D17.D18.A19.B20.A21.A22.C23.A24.A25.A26.C27.C28.B29.D30.D31.A32.D33.A34.B35.A36.B37.A38.C39.C40.D41.C42.D43.A44.C45.B&&&&7&&&&&&&&第2章顺序结构&&&&二、习题&&&&(一)是非题1.表达式1/4+2.75的值是3。A.对B.错(表达式的值为?)2.C语言中浮点型变量可以进行自增或自减操作。A.对B.错3.如果整型变量a、b、c已经正确定义,那么c=b=a=012是一个正确的表达式。A.对B.错4.算术运算符和赋值运算符的结合方向均由左自右。A.对B.错5.在进行赋值转换时,变量的类型被自动转换为赋值号右边的表达式值的类型。A.对B.错6.语句charc="A";定义了字符型变量c,并将其初始化为A。A.对B.错7.运算符“%”的操作数不允许为单精度和双精度浮点型,允许为字符型和整型。A.对B.错8.运算符++的优先级高于运算符+。A.对B.错9.逗号运算符的求值顺序是从左到右的,逗号表达式的值为第一个表达式的值。A.对B.错10.“=”运算符用于判断两个数是否相等。A.对B.错11.C语言本身不提供输入输出语句,但可以通过输入输出函数来实现数据的输入输出。A.对B.错12.在使用函数scanf输入数据时必须与函数参数指定的输入格式一致。A.对B.错13.getchar()函数用于输入单个字符,putchar()函数用于输出单个字符。A.对B.错14.123、029、-0xEFF均是合法的整型常量。A.对B.错15.假定已有定义charc;,sizeofc中的sizeof是容量运算符,而sizeof(char)中由于使用了括号形式,称为容量函数。A.对B.错16.假定已有整型变量x的定义,则(x+1)++是一个合法的表达式。&&&&8&&&&&&&&A.对B.错17.假定已有整型变量初始化语句intx=2;,那么表达式x++,x*=2+1的值为9。A.对B.错18.假定已有变量定义语句:intm=3,n=2;,那么(float)(m/n)表达式的值是1.5。A.对B.错19.C语言中,表达式1/2*2的值为0。A.对B.错20.若scanf函数的格式说明中有一个空格,在输入时也一定要在对应位置输入一个空格。A.对B.错(二)选择题1.数字字符0的ASCII值为48,则以下程序运行后的输出结果是______。#includestdio.hmain(){chara='1',b='2';printf("%c,",b++);printf("%d\n",b-a);}A.3,2B.50,2C.2,2D.2,502.以下程序运行后的输出结果是______。#includestdio.hmain(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}A.3435133.若整型变量a、b、c、d中的值依次为1、2、3、4。则表达式a+b/d*c的值是______。A.1B.2.5C.0.25D.24.以下程序运行后的输出结果是______。#includestdio.hmain(){inta,b,c;a=10;b=20;c=a%b+a/b;printf("%d%d%d\n",a,b,c);}A.1C.2015.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错,出错的原因是______。#includestdio.hmain(){scanf("%d",r);s=*p*r*r;printf("s=%f\n",s);}A.注释语句书写位置错误B.存放圆半径的变量r不应该定义为整型&&&&9&&&&&&&&C.s=*p*r*r;语句中使用了非法变量D.输出语句中格式描述符非法6.设有定义:intk=1,m=2;floatf=7;,则以下选项中错误的表达式是______。A.k=k+=kB.-k++C.k%int(f)D.f=k%m7.设有定义:inta=2,b=3,c=4;,则以下选项中值为0的表达式是______。A.a%b%cB.a/b/cC.a=b=cD.a,b,c8.有以下程序段:intk=0,a=1,b=2,c=3;k=a+=b-=c;,执行该程序段后,k的值是______。A.0B.1C.2D.39.以下程序运行后的输出结果是______。#includestdio.hmain(){intn=100;floatf=10;x=f*=n/=(c=50);printf("%d%f\n",n,x);}A.220B.220.010D.0.已知字母A的ASCII码为65,则以下程序运行后的输出结果是______。#includestdio.hmain(){chara,b;a='A'+'5'-'3';b=a+'6'-'2';printf("%d%c\n",a,b);}A.6771B.67GC.CGD.C7111.表达式3.6-5/2+1.2+5%2的值是______。A.3.3B.3.8C.4.3D.4.812.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是________。A.++x,y=x-B.x+1=y(反了)C.x=x+10=x+y(x+10=x+y赋值报错)D.double(x)/1013.以下程序运行后的输出结果是________。#includestdio.hmain(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}A.2,3,3B.2,3,2C.2,3,1D.2,2,114.以下选项中,值为1的表达式是________。A.1-'0'B.1-'\0'C.'1'-0D.'\0'-'0'15.设有定义:intk=0;,以下选项的________与其他三个表达式的值不相同。A.k++B.k+=1C.++kD.k+116.执行以下程序后的输出结果是________。&&&&10&&&&&&&&#includestdio.hmain(){inta=10;a=(3*5,a+4);printf("a=%d\n",a);}//考察逗号运算符A.a=10B.a=14C.a=15D.a=1917.若变量均已正确定义并赋值,以下合法的C语言赋值语句是________。A.x=y=5;B.x=n%2.5;C.x+n=i;D.x=5=4+1;18.设变量已经正确定义并赋值,以下正确的表达式是________。A.x=y*5=x+zB.int(15.8%5)C.x=y+z*5,++yD.x=25%5.019.以下不能正确表示代数式2ab/cd的C语言表达式是________。A.2*a*b/c/dB.a*b/c/d*2C.a/c/d*b*2D.2*a*b/c*d20.设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式________。A.a=a-a+bB.a-a=bC.a=a-(a+b)D.a=-a+b21.设有定义:intx=2;,以下表达式中,值不为6的是________。A.x*=x+1B.x++,2*xC.x*=(1+x)D.2*x,x+=222.表达式(int)((double)9/2)-(9)%2的值是________。A.0B.3C.4D.523.若有定义intx=10;,则表达式x-=x+x的值为________。A.-20B.-10C.0D.1024.若有定义doublea=22;inti=0,k=18;,则以下有错的语句是________。A.a=a++,i++;B.i=(a+k)/(k-i);C.i=a%11;D.i=!a;25.以下程序运行后的结果是________。#includestdio.hmain(){inta=2,b=2,c=2;printf("%d\n",a/b%c);}A.0B.1C.2D.326.若有定义doublex,y;,则以下选项中正确的表达式是________。A.a%(int)(x-y)B.a=b=x,y;C.(a*y)%bD.y=x+y=x27.表达式a+=a-=a=9的值是________。A.-9B.0C.9D.1828.若有定义inta=3,b=2,c=1;,以下选项中错误的赋值表达式是________。A.a=(b=4)=3B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);29.若有定义intx=12,y=8,z;,在其后执行语句z=0.9+x/y;,则z的值为________。A.1(右边表达式的值为1.9,赋值给z舍弃小数)B.1.9C.2D.2.430.以下程序运行后输出的结果是________。#includestdio.hmain(){inta=0,b=0,c=0;c=(a-=a-5);(a=b,b+=4);&&&&11&&&&&&&&printf("%d,%d,%d",a,b,c);}A.0,4,5B.4,4,5C.4,4,4D.0,0,031.设变量均已正确定义并且赋值,以下与其他三组输出结果不同的一组语句是________。A.x++;printf("%d\n",x);B.n=++x;printf("%d\n",n);C.++x;printf("%d\n",x);D.n=x++;printf("%d\n",n);32.以下程序运行后输出的结果是________。#includestdio.hmain(){inta=1,b=0;printf("%d,",b=a+b);printf("%d",a=2*b);}A.0,0B.1,0C.3,2D.1,233.以下程序运行后输出的结果是________。#includestdio.hmain(){intk=011;printf("%d\n"k++);}A.12B.11C.10D.934.有以下程序:#includestdio.hmain(){intm,n,p;scanf("m=%dn=%dp=%d",m,n,p);printf("%d%d%d\n",m,n,p);}若想使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。A.m=123n=456p=789B.123,456,789C.m=123,n=456,p=789D..以下程序运行后输出的结果是________。#includestdio.hmain(){inta,b,d=25;a=d/10%9;b=a+-1;printf("%d,%d\n",a,b);}A.6,1B.2,1C.6,0D.2,036.以下叙述中正确的是______。A.调用printf函数时,必须要有输出项B.使用putchar函数时,必须在之前包含头文件stdio.hC.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码37.程序如下,下叙述中正确的是______。#includestdio.hmain(){chara1='M',a2='m';printf("%c\n",(a1,a2));}//逗号运算符是最后的值A.程序输出大写字母MB.程序输出小写字母mC.格式说明符不足,编译出错D.程序运行时产生出错信息38.以下程序运行时若输入:a回车,则叙述正确的是______。&&&&12&&&&&&&&#includestdio.hmain(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}A.变量c1被赋予字符a,c2被赋予回车符B.程序将等待用户输入第2个字符C.变量c1被赋予字符a,c2中仍是原有字符2D.变量c1被赋予字符a,c2中将无确定值39.设有定义:,执行scanf("%2d%f",a,b);语句时,若从键盘输入:,a和b的值分别是________。A.876和543.0B.87和6.0C.87和543.0D.76和543.040.若在定义语句:inta,b,c;之后,接着执行以下选项中的语句,则能正确执行的语句是________。A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c);C.scanf("%d%d%d",a,b,c);D.scanf("%d%d%d",a,b,c);41.已知字符'A'的ASCII码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句printf("%d,%d",c1,c2-2);后,输出结果是________。A.A,BB.A,68C.65,66D.65,6842.程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);的输出结果是________。A.123.3.,3.3..若要求从键盘读入含有空格字符的字符串,应使用函数________。A.getc()B.gets()C.getchar()D.scanf()44.有以下程序,其中%u表示按无符号整数输出,程序运行后的输出结果是______。#includestdio.hmain(){unsignedintx=0xFFFF;printf("%u\n",x);}A.-1B.6D.0XFFFF(三)、编程题1.编写一个程序,从键盘输入圆的半径,计算并输出该圆的周长、面积和体积。2.输入四个季度的销售额(整型),计算并输出各季度自年初起的累计销售额,计算并输出第一季度外的三个季度的环比增长率(环比增长率是本期与相比上一期的增长率,针对本题目,即为本季度对上季度的增长率)。3.从键盘输入四门课程的(整数)分数,输出成绩信息,计算并输出平均分数。要求输入输出有一定提示,输出的平均分数保留二位小数。&&&&四、习题答案&&&&(一)是非题1.B2.A3.A4.B5.B6.B11.A12.A13.A14.B15.B16.B17.A(二)选择题1.C2.A3.A4.B5.C6.C7.B&&&&13&&&&7.A18.B8.A&&&&8.A19.A9.B&&&&9.B20.B10.B&&&&10.B&&&&&&&&11.B21.D31.D41.C&&&&12.A22.B32.D42.A&&&&13.C14.B15.A23.B24.C25.B33.D34.A35.B43.C44.B&&&&16.B26.A36.B&&&&17.C27.B37.B&&&&18.C28.A38.A&&&&19.D29.A39.B&&&&20.C30.A40.B&&&&14&&&&&&&&第3章选择结构&&&&二、习题&&&&(一)、是非题1.关系运算符是双目运算符,其功能是将两个运算对象进行大小比较。A.对B.错2.对于与运算“”,只有当两个运算对象都为真时运算结果才为真。A.对B.错3.使用条件表达式可以构成各种各样的两路选择结构。A.对B.错4.条件可以是任何类型的表达式,如逻辑型,关系型,数值型等,单个已赋过值的变量或常量也可以作为表达式的特例。A.对B.错5.else子句不能单独作为语句使用,它是if语句的一部分,必须与if配对使用。A.对B.错6.C语言规定,else总是与它上面最远的if配对。A.对B.错7.在switch语句中,每一个case后的常量表达式的值不能相同,因为选择结构中只允许一个分支所对应的语句组被执行。A.对B.错8.在执行switch选择结构时,从匹配表达式的相应case处入口,一直执行到break语句或到达switch的末尾为止A.对B.错9.在C语言中,运算符“=”与“==”的含义都是等于。A.对B.错10.当进行比较的运算对象是字符型数据时,则按字符的ASCII码值从左到右逐个对应比较,先大为大。A.对B.错11.判断字符变量ch的值是否为数字字符的表达式为(ch='0')(ch='9')。A.对B.错12.条件运算符“?:”是C语言中唯一的一个三目运算符,该运算符可以嵌套使用。A.对B.错13.在C语言中用0表示逻辑值“真”,用非0表示逻辑值“假”。A.对B.错14.在C语言中,所有的逻辑运算符的优先级都一样。A.对B.错&&&&15&&&&&&&&15.在C语言中,逻辑运算符的优先级高于算术运算符和关系运算符。A.对B.错16.数学表达式“|x|4”对应的C语言表达式是“x-4||x4”。A.对B.错17.与表达式“!(x0)”等价的表达式是“x=0”。A.对B.错18.与表达式“!0”等价的表达式是“1”。A.对B.错19.当a=1,b=2,c=3时,执行语句“if(ac)b=a;a=c;c=b;”后,变量c中的值为3。A.对B.错a=1,b=2,c=3;if(ac)b=a;a=c;c=b;b=220.当a=1,b=2,c=3时,执行语句“if(ac){b=a;a=c;c=b;}”后,变量c中的值为2。A.对B.错a=1,b=2,c=3;if(ac){b=a;a=c;c=b;}C=3&&&&(二)、选择题1.判断char型变量ch是否为小写字母的正确表达式是______。A.'a'=ch='z'B.(ch='a')(ch='z')C.(ch='a')(ch='z')D.('a'=ch)AND('z'=ch)2.为表示关系100≥b≥0,应使用C语言表达式______。A.(100=b)(b=0)B.(100=b)and(b=0)C.100=b=0D.(100=B)(B=0)3.以下运算符中优先级最高的运算符为______。A.!B.C.!=D.%&&&&16&&&&&&&&4.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是______。A.'x''y'B.x=yC.x||y+zy-zD.!((xy)!z||1)!((34)!5||1)!(10||1)!(0||1)!1&&&&5.执行以下程序段后,x的值为______。inta=14,b=15,x;charc='A';x=(ab)(c'B');A.trueB.1C.falseD.06.下列表达式中,______不是关系表达式。A.x%2==0B.!(x%2)C.(x/2*2-x)==0D.x%2!=07.执行以下程序后,输出的结果是______。include"stdio.h"main(){inta=2,b=-1,c=2;if(ab)if(b0)c=0;elsec+=1;printf("%d\n",c);}A.0B.1C.2D.38.执行以下程序后,输出的结果是______。include"stdio.h"main(){intw=4,x=3,y=2,z=1;printf("%d\n",(wx?w:zy?z:x));}A.4B.2C.1D.39.执行以下程序段后,输出结果是______。inta=3,b=5,c=7;if(ab)a=b;c=a;if(c!=a)c=b;printf("%d,%d,%d\n",a,b,c);A.程序段有语法错误B.3,5,3C.3,5,5D.3,5,710.下面程序段的输出结果是______。inta=-1,b=4,k;&&&&17&&&&&&&&k=(a++=0)(!b--=0);printf("%d,%d,%d",k,a,b);A.0,0,3B.0,1,2C.1,0,3D.1,1,211.若有定义:floatx=1.5;inta=1,b=3,c=2;,则正确的switch语句是______。A.switch(x)//()里为整型,字符,枚举B.switch(int(x)){case1.0:printf("*\n");{case1:printf("*\n");case2.0:printf("**\n");case2:printf("**\n");}}C.switch(a+b)D.switch(a+b){case1:printf("*\n");{case1:printf("*\n");case2+1:printf("**\n");casec:printf("**\n");}}12.下面程序段的输出结果是______。intn='c';switch(n++)//n先用,后自增(n=’c’)。{default:printf("error");case'a':case'A':case'b':case'B':printf("good");case'c':case'C':printf("pass");case'd':case'D':printf("warn");}A.passwarnB.passerrorC.goodpasswarnD.pass13.下述程序段的输出结果是_______。inta=2,b=3,c=4,d=5;intm=2,n=2;a=(m=ab)(n=cd)+5;printf("%d,%d",n,a);A.2,5B.0,5C.2,6D.0,614.若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是_______。A.0B.1C.2D.不能确定15.已知intx=10,y=20,z=30;,以下语句执行后x,y,z的值是_______。if(xy)z=x;x=y;y=z;printf("%d,%d,%d",x,y,z);A.10,20,30B.20,30,20&&&&18&&&&&&&&C.20,30,10D.20,30,3016.当a=1,b=3,c=5,d=4,x=0时,执行完下面一段程序后x的值是_______。if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;elsex=3;elsex=6;elsex=7;A.7B.2C.3D.617.设变量a、b、c、d和y都已经正确定义并赋值,则以下if语句的所表示的含义是_______。if(ab)if(c==d)y=0;elsey=1;A.ab且c=d时y=0,a≥b时y=1B.ab且c=d时y=0,a≥b且c≠d时y=1C.ab且c=d时y=0,ab且c≠d时y=1D.ab且c=d时y=0,c≠d时y=118.下述程序的输出结果是_______。#inludestdio.hmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;case1:b++;}case2:a++;b++;case3:a++;b++;}printf("\na=%d,b=%d",a,b);}A.a=1,b=0B.a=2,b=1C.a=1,b=1D.a=2,b=219.在执行下述程序时,若从键盘输入6和8,则输出结果是_______。#inludestdio.hmain(){inta,b,s;scanf("%d%d",a,b);s=a;if(ab)&&&&19&&&&&&&&s=b;s*=s;printf("\n%d",s);}A.36B.48C.64D.以上都不对20.以下程序运行时,输入的值在_______范围时才会有输出结果。#inludestdio.hmain(){scanf("%d",x);if(x=3);elseif(x!=10)printf("%d\n",x);}A.不等于10的整数B.大于3且不等于10的整数C.大于3或等于10的整数D.小于3的整数21.下列程序的输出结果是_______。#inludestdio.hmain(){inta=0,b=0,c=0;if(++a0||++b0)++c;//短路运算,++b未作运算。printf("%d,%d,%d",a,b,c);}A.0,0,0B.1,1,C.1,0,1D.0,1,122.有定义语句:inta=1,b=2,c=3;,则以下_______对应的表达式的值不为真。A.a!='a'B.a+b-c!='0'-48C.c-a=='C'-'A'D.c='7'+'0'23.下列程序的输出结果是_______。#inludestdio.hmain(){inti=1,j=2,k=3;if(i++==1(++j==3||k++==3))//短路运算,k=k+3未作运算。printf("%d%d%d",i,j,k);}A.123B.234C.223D.23324.当变量c的值不为2、4、6时,值也为“真”的表达式是_______。A.(c==2)||(c==4)||(c==6)B.(c=2c=6)||(c!=3)||(c!=5)C.(c=2c=6)!(c%2)D.(c=2c=6)(c%2!=1)25.下列程序的输出结果是_______。main(){inta=5,b=4,c=3,d=2;if(abc)printf("%d\n",d);elseif((c-1=d)==1)printf("%d\n",d+1);&&&&20&&&&&&&&elseprintf("%d\n",d+2);}A.2B.3C.4D.编译时有错且无结果26.己有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1y+z/2的值是_______。A.6B.0C.2D.l!(3+4)+5-14+5/2!7+44+20+461127.以下程序运行后的输出结果是_______。#inludestdio.hmain(){inta=15,b=21,m=0;switch(a%3)//15%3=0{case0:m++;//执行后,退出第一层。case1:m++;switch(b%2)//第二层,未执行{default:m++;case0:m++;}}printf("%d\n",m);}A.1B.2C.3D.428.在执行下述程序时,若从键盘输入6和2,则输出结果是_______。#inludestdio.hmain(){inta,b,k;scanf("%d,%d",a,b);k=a;if(ab)k=a%b;elsek=b%a;printf("\n%d",k);}A.5B.3C.2D.029.在执行下述程序时,若从键盘输入字母H,则输出结果是_______。#inludestdio.hmain(){ch=getchar();switch(ch){case'H':printf("Hello!\n");case'G':printf("Goodmorning!\n");&&&&21&&&&&&&&default:printf("Bye_Bye!\n");}}A.Hello!B.Hello!Goodmorning!D.Hello!Bye_Bye!&&&&C.Hello!Goodmorning!Bye_Bye!30.设变量x和y均已正确定义并赋值,则以下if语句中,在编译时将产生错误信息的是_______。A.if(x++);//空语句B.if(xyy!=0);C.if(x0)x--//少了“;”号D.if(y0){;}elsey++;elsex++;31.以下程序的运行后的输出结果是_______。#inludestdio.hmain(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3;printf("%d\n",b);}A.0B.1C.2D.332.下列条件语句中,输出结果与其他语句不同的是_______。A.if(a)printf("%d\n",x);elseprintf("%d\n",y);B.if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C.if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);D.if(a==0)printf("%d\n",x);elseprintf("%d\n",y);33.以下选项中,能表示逻辑值“假”的是_______。A.1B.0.D.100.034.以下程序运行时,若从键盘输入9,则输出结果是_______。#inludestdio.hmain(){inta=1;scanf("%d",a);if(a++9)printf("%d\n",a);elseprintf("%d\n",a);}A.10B.11C.9D.835.若变量c的值为非0,则能正确地将c的值赋给变量a和b的表达式是_______。A.(a=c)||(b=c)B.(b=a)=c&&&&22&&&&&&&&C.(a=c)(b=c)D.a=c=b36.设有定义,则表达式(i=1,i=10)?i++||++i:++i的值是_______。A.10B.1C.2D.337.设a=2、b=7.5、c=-3.6,则_______中的两个表达式的逻辑值相等。A.'a''c'||'x''y'与b-a=-c/2c==-3.6B.'a''c'x''y'与a-7b-6.5C.'a''c'||'x''y'与'a''c'abD.'a''c''x''y'与'a''c'||ac38.当y处于闭区间[x,z]时,值为真的表达式是_______。A.(y=z)(y=x)B.(x=y)and(y=z)cC.(x=y=z)D.(x=y)(y=z)39.以下程序执行后的输出结果是_______。#inludestdio.hmain(){inta=5,b=4,c=3,d=1;d=(abc);//ab为真,判断结果为1,1再和c比较1c,为假。表达式值为0.printf("%d\n",d);}A.3B.2C.1D.040.以下程序执行后的输出结果是_______。#inludestdio.hmain(){inta=2,b=7,c=5;switch(a0){case1:switch(b10){case1:printf("@");case0:printf("!");}case0:switch(c==5){case0:printf("*");case1:printf("#");default:printf("%");}default:printf("");}printf("\n");}A.!*#B.@!#C.@%#D.@#&&&&四、习题答案&&&&(一)、是非题1.A2.A3.B11.A12.A13.B(二)、选择题1.C2.A3.A4.A14.B4.D5.A15.B5.B6.B16.A6.B7.A17.A7.C&&&&23&&&&8.A18.A8.C&&&&9.B19.B9.B&&&&10.A20.A10.C&&&&&&&&11.B12.A13.A14.B21.C22.B23.D24.B31.C32.D33.C34.A(三)、编程题(略)&&&&15.D25.B35.C&&&&16.A26.D36.B&&&&17.C27.A37.C&&&&18.B28.C38.A&&&&19.C29.C39.D&&&&20.B30.C40.D&&&&24&&&&&&&&第4章循环结构&&&&二、习题&&&&(一)、是非题1.C语言中,do-while语句构成的循环只能用break语句退出。A.对B.错2.在循环外的语句不受循环的控制,在循环内的语句也不受循环的控制。A.对B.错3.从语法角度看,for(表达式1;表达式2;表达式3)语句中的3个表达式均可省略。A.对B.错4.for、while和dowhile循环结构的循环体均为紧接其后的第一个语句(含复合语句)。A.对B.错5.由i=-1;while(i10)i+=2;i++;可知,此while循环的循环体执行次数为6次。A.对B.错6.循环for(;;)的循环条件始终为真。A.对B.错7.do?while语句的循环体至少执行1次,while和for循环的循环体可能一次也不执行。A.对B.错8.语句执行时退出本层循环,语句结束本次循环。A.对B.错9.for循环、while循环和dowhile循环结构之间可以相互转化。A.对B.错10.语句执行时退出到包含该语句的所有循环外。。A.对B.错11.二重循环for(i=0;i5;i+=2)for(j=0;j5;j++)的循环体的执行次数为15。A.对B.错外循环i执行3次,内循环j执行5次。3*5=15次。12.执行i=-1;while(i10)i+=2;i++;后,i的值为11。A.对B.错13.inti=1;while(1)i++;则在任何条件下,该循环语句都会执行无穷多次A.对B.错14.while和do?while的功能完全相同。A.对B.错15.while后的表达式只能是逻辑或关系表达式。A.对B.错16.语句while(E);中的表达式E等价于E!=0。&&&&25&&&&&&&&A.对&&&&B.错&&&&17.只能在循环体内和switch语句体内使用break语句。A.对B.错18.程序段intk=10;while(k=0)k=k-1;中,while循环执行10次。A.对B.错19.若i为整型变量,则for(i=2;i==0;)printf("%d",i--);循环执行次数是0次。A.对B.错20.执行语句for(i=1;i++4;);后,变量i的值是4。A.对B.错(二)、选择题1.下列程序的输出结果是______。#include"stdio.h"voidmain(){inti,a=0,b=0;for(i=1;i10;i++){if(i%2==0){a++;}b++;}printf("a=%d,b=%d",a,b);}A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=52.已知:intt=0;while(t=1){...},则以下叙述正确的是______。A.循环表达式的值为0B.循环表达式的值为1C.循环表达式不合法D.以上说法都不对3.设有以下程序段,则_____。intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);while(!0!=0)while(1!=0)while(1)执行s=s+(++x)s=1A.运行程序段后输出0B.运行程序段后输出1C.程序段中的表达式是非法的D.程序段执行无限次4.以下程序的运行结果是______。#includestdio.hvoidmain(){inty=9;for(;y0;y--)if(y%3==0)printf("%d",--y);}A.741B.963C.852D.875421在循环中,能被3整除的数有9,6,3,输出前自减1,所以得8,5,2。5.以下描述中正确的是______。A.由于do-while的循环体只能有一条语句,所以循环体内不能使用复合语句&&&&26&&&&&&&&B.do-while由do开始,用while结束,在while(表达式)后面不能写分号C.在do-while循环中,是先执行一次循环体,再进行判断D.在do-while循环中,根据情况可以省略while6.以下程序段的运行结果是______。i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);A.0,0B.0,1C.1,1D.程序进入无限循环7.若程序执行时的输入数据是2473回车,则下述程序的输出结果是______。#includestdio.hvoidmain(){while((cs=getchar())!='\n'){switch(cs-'2'){case0:case1:putchar(cs+4);case2:putchar(cs+4);case3:putchar(cs+3);default:putchar(cs+2);}}}A.7D.6688766&&&&8.以下程序的输出结果是______。#include"stdio.h"voidmain(){inta,i;a=0;for(i=1;i5;i++)switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}printf("%d\n",a);}A.31B.139.以下程序的运行结果是______。#includestdio.hvoidmain(){inti,j,m=55;&&&&C.10&&&&D.20&&&&27&&&&&&&&for(i=1;i=3;i++)for(j=3;j=i;j++)m=m%j;printf("%d\n",m);}A.0B.1C.2D.310.以下程序的运行结果是______。#includestdio.hvoidmain(){for(i='a';i'f';i++,i++)printf("%c",i-'a'+'A');printf("\n");}A.ACEB.BDFC.ABD11.以下程序运行后的输出结果是______。#includestdio.hvoidmain(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;default:n=0;k--;case2:case4:n+=2;k--;}printf("%d",n);}while(k0n5);}A.235B.D.235612.下面程序的输出结果是______。#includestdio.hvoidmain(){intn=9;while(n6){n--;printf("%d",n);}}A.987B.876C..下述程序的输出结果是_______。#includestdio.hvoidmain(){intx=0,y=0,i;for(i=1;;++i){if(i%2==0){x++;}if(i%5==0){y++;}}printf("%d,%d",x,y);}A.2,1B.2,2C.2,5D.5,214.下述程序的输出结果是_______。#includestdio.hvoidmain()&&&&28&&&&D.CDE&&&&&&&&{intx=8;for(;x0;x--){if(x%3){printf("%d,",x--);}printf("%d,",--x);}}A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,15.以下不会构成无限循环的语句或语句组是_______。A.n=0;do{++n;}while(n=0);B.n=0;while(1){n++;}C.n=10;while(n);{n--;}D.for(n=0,i=1;;i++)n+=i;16.以下程序的运行结果是_______。#include"stdio.h"voidmain(){intk=0,m=0,i,j;for(i=0;i2;i++){for(j=0;j3;j++)k++;k-=j;}m=i+j;printf("k=%d,m=%d",k,m);}A.k=0,m=3B.k=0,m=5C.k=1,m=3D.k=1,m=517.若inti,j;,则for(i=j=0;i10j8;i++,j+=3)控制的循环体的执行次数是_______。A.9B.8C.3D.218.下述程序的输出结果是_______。#include"stdio.h"voidmain(){inti=6;while(i--)printf("%d",--i);printf("\n");}A.531B.420C.654321D.死循环19.下述程序的输出结果是_______。#include"stdio.h"voidmain(){inta=0,b=0,c=0,i;for(i=0;i4;i++)switch(i){case0:a=i++;case1:b=i++;case2:c=i++;case3:i++;}printf("%d,%d,%d,%d\n",a,b,c,i);}A.0,1,3,4B.1,2,3,4C.0,1,2,5D.0,2,3,420.下面程序的运行结果是_______。a=1;b=2;c=2;while(abc){t=a;a=b;b=t;c--;}&&&&29&&&&&&&&printf("%d,%d,%d",a,b,c);A.1,2,0B.2,1,0C.1,2,1D.2,1,121.以下叙述中正确的是_______。A.break语句只能用于switch语句体中B.continue语句的作用是使程序的执行流程跳出包含它的所有循环C.break语句只能用在循环体内和switch语句体内D.在循环体内使用break语句和continue语句的作用相同22.以下程序运行后的输出结果是_______。#include"stdio.h"voidmain(){intk=5,n=0;do{switch(k){case1:case3:n+=1;default:n=0;k--;case2:case4:n+=2;k--;}printf("%d",n);}while(k0n5);}A.C.0.下列程序的输出结果是_______。#include"stdio.h"voidmain(){inti,j;for(i=1;i4;i++){for(j=i;j4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}A.1*1=11*2=21*3=3B.1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9C.1*1=1D.1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=924.执行以下程序时输入回车,则其中while循环体将执行_______次。#include"stdio.h"voidmain(){while((ch=getchar())=='0')printf("#");}A.10B.0C.2D.l25.下列程序的输出结果是_______。#include"stdio.h"voidmain(){intk=5;while(-k)printf("%d",k-=3);printf("\n");}&&&&30&&&&&&&&A.1B.2C.4D.死循环26.以下程序执行后的输出结果是________。#include"stdio.h"voidmain(){for(i=1;i=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}A.5B.24C.32D.4027.有以下程序,若运行时从键盘输入:18,11回车,则程序输出结果是_______。#include"stdio.h"voidmain(){inta,b;printf("Entera,b:");scanf("%d,%d",a,b);while(a!=b){while(ab)a-=b;while(ba)b-=a;}printf("%3d%3d\n",a,b);}A.11B.12C.13D.1428.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是_______。A.while((ch=getchar())!='N')printf("%c",ch);B.while(ch=getchar()!='N')printf("%c",ch);C.while(ch=getchar()=='N')printf("%c",ch);D.while((ch=getchar())=='N')printf("%c",ch);29.以下程序运行后的输出结果是_______。#include"stdio.h"voidmain(){inty=10;while(y--);printf("y=%d\n",y);}A.y=0B.y=-1C.y=1D.while构成无限循环30.有以下程序段:intn,t=1,s=0;scanf("%d",n);do{s=s+t;t=t-2;}while(t!=n);?为使此程序段不陷入死循环,从键盘输入的数据应该是_______。A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数31.以下程序运行后的输出结果是_______。#include"stdio.h"voidmain(){inti,j,x=0;&&&&31&&&&&&&&for(i=0;i2;i++){x++;for(j=0;j=3;j++){if(j%2)x++;}x++;}printf("x=%d\n",x);}A.x=4B.x=8C.x=6D.x=1232.设变量已正确定义,则以下能正确计算f=n!的程序段是_______。A.f=0;B.f=1;for(i=1;i=n;i++)for(i=1;i=n;i--)f*=i;f*=i;C.f=1;D.f=1;for(i=n;i1;i++)for(i=n;i=2;i--)f*=i;f*=i;33.以下程序运行后的输出结果是_______。#include"stdio.h"voidmain(){intk=5,n=0;while(k0){switch(k){default:case1:n+=k;case2:case3:n+=k;}k--;}printf("%d\n",n);}?A.0B.4C.6D.734.以下程序的输出结果是_______。#include"stdio.h"voidmain(){inta=1,b;for(b=1;b=10;b++){if(a=8)if(a%2==1){a+=5;}a-=3;}printf("%d\n",b);}A.3B.4C.5D.635.以下程序输出结果是_______。?#include"stdio.h"voidmain()&&&&32&&&&&&&&{for(i=0;i3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}A.D.01236.以下程序输出结果是_______。?#include"stdio.h"voidmain(){inti=0,s=0;for(;;){if(i==3||i==5)if(i==6)i++;s+=i;};printf("%d\n",s);}A.10B.13C.21D.程序进入死循环37.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是_______。A.for(i=1,p=1;i=5;i++)p*=i;B.for(i=1;i=5;i++){p=1;p*=i;}C.i=1;p=1;while(i=5){p*=i;i++;}D.i=1;p=1;do{p*=i;i++;}while(i=5);38.以下程序执行后的输出结果是_______。#include"stdio.h"voidmain(){intx=0,y=5,z=3;while(z--0++x5)y=y-1;printf("%d,%d,%d\n",x,y,z);}A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-539.以下程序执行后的输出结果是_______。#include"stdio.h"voidmain(){inti,n=0;for(i=2;i5;i++){do{if(i%3)n++;}while(!i);n++;}printf("n=%d\n",n);}A.n=5B.n=2C.n=3D.n=440.下面程序的功能是输出以下形式的金字塔图。在下划线处应填入的是_______。*********&&&&33&&&&&&&&*******#include"stdio.h"voidmain(){inti,j;for(i=1;i=4;i++){for(j=1;j=4-i;j++)printf("");for(j=1;j=_______;j++)printf("*");printf("\n");}}A.iB.2*i-1C.2*i+1&&&&D.i+2&&&&四、习题答案&&&&(一)、是非题1.B2.B3.A11.A12.B13.A(二)、选择题1.B2.B3.B11.A12.B13.A21.C22.A23.B31.B32.D33.D4.A14.B4.C14.D24.B34.B5.A15.B5.C15.A25.D35.C6.A16.A6.B16.B26.C36.D7.A17.A7.A17.C27.A37.B8.A18.B8.A18.B28.A38.B9.A19.A9.B19.C29.B39.D10.B20.B10.A20.A30.D40.B&&&&34&&&&&&&&第5章数组&&&&二、习题&&&&(一)、是非题1.数组名代表数组的首地址。A.对B.错2.字符型数组可以用来存储字符串,因此可以用字符串初始化数组,例如:charstr[]="CProgramming";。A.对B.错3.函数strcpy(str1,str2)是将字符串str2连接到字符串str1之后。A.对B.错4.一个数组可以存储不同类型的数据。A.对B.错5.数组在定义时可以不指定数组的长度,可根据程序中实际使用的元素个数决定。A.对B.错6.在C语言中,只有当两个字符串所包含的字符个数相同时,才能比较大小。例如,字符串“That”与“The”就不能进行大小比较。A.对B.错7.若有定义:inta[10];,使用数组元素时,下标的最小值是1,最大值是10。A.对B.错8.在C语言中引用数组元素时,其数组的下标可以是任何类型的表达式。A.对B.错9.任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占用存储空间。A.对B.错10.一维数组的元素实质上就是一个变量,代表内存中的一个存储单元。A.对B.错11.若有说明:inta[3][4]={0};,则只有元素a[0][0]可得到初值0。A.对B.错12.若有说明:inta[][3]={1,2,3,4,5,6,7};,则a数组第一维的大小不能确定。A.对B.错13.若一维数组在定义时进行了初始化,则可以省略数组长度,系统会根据初始值个数确定该数组长度。A.对B.错14.数组初始化时,若初始值的个数少于数组定义的长度,C语言会自动将剩余的元素初始化为初始化列表中最后一个初始值。&&&&35&&&&&&&&A.对B.错15.可以对字符型数组进行整体输入、输出。A.对B.错16.可以对实型数组进行整体输入、输出。A.对B.错17.设有定义:doublea[4][5];,则数组a中元素的个数是9。A.对B.错18.设有定义:inta[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}};,则表达式a[1][2]+a[2][3]的值9。A.对B.错19.设有定义:chars[]={"E_mail"};,则执行printf("%d\n",strlen(s));后输出的值是6。A.对B.错20.设有两个整型数组a和b,可以通过a=b,将数组b整体赋值给数组a。A.对B.错(二)、选择题1.设有两字符串“Good”、“Morning”分别存放在字符数组str1[10]、str2[10]中,下面语句中能把“Morning”连接到“Good”之后的是______。A.strcpy(str1,str2);B.strcpy(str1,"Morning");C.strcat(str1,"Morning");D.strcat("Good",str2);2.以下对一维整型数组a定义正确的是______。A.inta(10);B.intn=10,a[n];C.scanf("%d",n);inta[n];D.#defineSIZE10inta[SIZE];3.下列字符串赋值语句中,不能正确把字符串“HelloWorld”赋给数组的语句是______。A.chara1[]={'H','e','l','l','o','','W','o','r','l','d','\0'};B.chara2[15];strcpy(a2,"HelloWorld");C.chara3[15];a3="HelloWorld";D.chara4[10]={"HelloWorld"};4.用scanf函数输入一个字符串到数组str中,下面正确的语句是______。A.scanf("%s",str);B.scanf("%c",str[10]);C.scanf("%s",str[10]);D.scanf("%s",str);5.以下能对二维数组a进行正确说明和初始化的语句是______。A.inta()(3)={(1,2,3),(2,4,6)};B.inta[2][]={{3,2,1},{5,6,7}};C.inta[][3]={{3,2,1},{5,6,7}};D.inta(2)()={(1,2,3),(2,4,6)};6.判断字符串a和b是否相等,应当使用______。A.if(a==b)B.if(a=b)C.if(strcat(a,b))D.if(strcmp(a,b))7.有字符数组a[80]和b[80],则正确的输出语句是______。A.puts(a,b);B.puts(a);puts(b);C.printf("%s,%s",a[],b[]);D.putchar(a,b);8.下面程序的运行结果是______。&&&&36&&&&&&&&#includestdio.hmain(){inta[5],i;for(i=0;i5;i++){a[i]=9*(i-2+4*(i3))%5;printf("%2d",a[i]);}}A.-3-4044B.-3-4043C.-3-4042D.-3-40409.假设array是一个有10个元素的整型数组,则下列写法中正确的是______。A.array[0]=10;B.array=0;C.array[10]=0;D.array[-1]=0;10.下面程序的运行结果是______。#includestdio.hmain(){inta[3],i,j,k;for(i=0;i3;i++)a[i]=0;k=2;for(i=0;i++)for(j=0;j++)a[j]=a[i]+1;printf("%d\n",a[1]);}A.0B.1C.2D.311.若有定义:inta[5]={1,2,3,4,5};charb='c',c;,则下面表达式中数值为2的是______。A.a[2]B.a[c-b]C.a[b]D.a[b-'b']12.下面程序的运行结果是______。#includestdio.hmain(){inta[3][3]={1,2,3,4,5,6,7,8,9},i;for(i=0;i=2;i++)printf("%d",a[i][2-i]);}A.357B.369C.159D.14713.下面程序的运行结果是______。#includestdio.hmain(){charc[5]={'a','b','\0','c','\0'};printf("%s",c);}A.'a''b'B.abC.abcD.ab\0c\014.下面程序的运行结果是______。#includestdio.hmain(){chars[12]="abook!";printf("%d",strlen(s));}A.6B.7C.10D.12&&&&37&&&&&&&&15.若有说明:inta[3][4];则对a数组元素的正确引用是______。A.a[2][4]B.a[1,3]C.a[1+1][0]D.a(2)(1)16.以下各组选项中,均能正确定义二维实型数组a的选项是______。A.floata[3][4];floata[][4];floata[3][]={{1},{0}};B.floata(3,4);floata[3][4];floata[][]={{0};{0}};C.floata[3][4];staticfloata[][4]={{0},{0}};D.floata[3][4];floata[3][];17.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式是______。(假设a[0][0]位于数组的第一个位置上。)A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+118.以下对C语言字符数组描述错误的是______。A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入或输出C.可以在赋值语句中通过赋值运算符”=”对字符数组整体赋值D.不可以用关系运算符对字符数组中的字符串进行比较19.以下合法的数组定义是______。A.inta[]="language";B.inta[5]={0,1,2,3,4,5};C.chara="string";D.chara[]={"0,1,2,3,4,5"};20.下面程序的运行结果是______。#includestdio.h#includestring.hmain(){chara[7]="abcdef",b[4]="ABC";strcpy(a,b);printf("%c",a[5]);}A.空格B.\0C.fD.不确定21.下面程序的运行结果是______。#includestdio.h#includestring.hmain(){chara[30];strcpy(a[0],"ch");strcpy(a[1],"def");strcpy(a[2],"abc");printf("%s\n",a);system("pause");}A.chdefabcB.cdaC.cdabcD.abcdef22.设有定义:chara[80];inti=0;,以下不能将一行带有空格的字符串(不超过80个字符)正确读入的是______。A.gets(a);&&&&38&&&&&&&&B.while((a[i++]=getchar())!='\n');a[i]='\0';C.scanf("%s",a);D.do{scanf("%c",a[i]);}while(a[i++]!='\n');a[i]='\0';23.下面程序的运行结果是______。#includestdio.hmain(){charstr[]="SSSWLIA",c;for(k=2;(c=str[k])!='\0';k++){switch(c){case'I':++k;case'L':default:putchar(c);}putchar('*');}}A.SSW*B.SW*C.SW*AD.SWA*24.设chars[10]="abcd",t[]="12345";,则s和t在内存中分配的字节数分别是______。A.6和5B.6和6C.10和5D.10和625.下面程序的运行结果是______。#includestdio.hmain(){chara[]="HelloWorld";inti,j;for(i=j=0;a[i]!='\0';i++)if(a[i]!='l')a[j++]=a[i];a[j]='\0';puts(a);}A.HelloWorldB.HeoWorldC.HeoWordD.没有任何输出内容26.下面程序的运行结果是______。#includestdio.hmain(){charstr1[]="abcd",str2[]="abcef";inti,s;i=0;while((str1[i]==str2[i])(str1[i]!='\0'))i++;s=str1[i]-str2[i];printf("%d\n",s);}&&&&39&&&&&&&&A.-1B.0C.1D.不确定27.下面程序的运行结果是______。#includemain(){chars[]="012xy";inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]='a's[i]='z')n++;printf("%d\n",n);}A.0B.2C.3D.528.下面程序的运行结果是______。#includestdio.hmain(){inta[]={2,3,5,4},i;for(i=0;i4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;case1:a[i]--;}}for(i=0;i4;i++)printf("%2d",a[i]);printf("\n");}A.C..下面程序的运行结果是______。#includestdio.h#includestring.hmain(){chara[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));}A.7,4B.4,10C.8,8D.10,1030.下面程序的运行结果是______。#includestdio.h#defineMAX10main(){inti,sum,a[]={1,2,3,4,5,6,7,8,9,10};sum=1;for(i=0;iMAX;i++)sum-=a[i];printf("%d",sum);system("pause");}A.55B.-54C.-55D.54&&&&40&&&&&&&&四、习题答案&&&&(一)、是非题1.A2.A3.B11.B12.B13.A(二)、选择题1.C2.D3.C11.D12.A13.B21.C22.C23.B4.B14.B4.D14.B24.D5.B15.A5.C15.C25.C6.B16.B6.D16.C26.A7.B17.B7.B17.D27.B8.B18.B8.A18.C28.A9.A19.A10.A20.B&&&&9.A10.D19.d20.C29.B30.B&&&&41&&&&&&&&第6章函数&&&&二、习题&&&&(一)是非题1.在C程序中,main()函数必须有且只有一个。A.对B.错2.如果某个函数在定义时省略了存储类型,则默认的存储类型是int。A.对B.错3.C程序中,定义函数时的参数是“实际参数”,调用函数时的参数是“形式参数”。A.对B.错4.函数的定义可以嵌套,但函数的调用不可以嵌套。A.对B.错5.若函数定义的头部为:doublecacl(floatx,floaty),则该函数是外部函数。A.对B.错6.若用数组名作为函数调用的实参,传递给形参的是数组中的第一个元素的值。A.对B.错7.C程序中所有的全局变量都是静态存储的。A.对B.错8.函数中的多个return语句,可以实现调用该函数后,多个值同时被返回。A.对B.错9.如果在一个函数中的复合语句内定义了一个变量,则该变量在该函数中都有效。A.对B.错10.有参的宏,其参数参与运算,宏替换要先完成参数的计算,然后再执行替换。A.对B.错11.在函数之间数据传递的方式有三种,即返回值、参数、全局变量。A.对B.错12.在C语言中,除了main()函数外,其余所有的函数都能够被调用。A.对B.错13.在main()函数中定义的变量称为全局变量。A.对B.错14.在C语言中形参与实参共用内存单元。A.对B.错15.在C语言中定义的auto变量,若没有对其进行显式初始化,则初值是一个不确定的值。A.对B.错(二)选择题1.以下说法中正确的是________。&&&&42&&&&&&&&A.C语言程序总是从第一个定义的函数开始执行B.在C语言程序中,要调用的函数必须在main()函数中定义C.C语言程序总是从main()函数开始执行D.C语言程序中的main()函数必须放在程序的开始部分2.在C语言中,函数值类型在定义时可以缺省,此时函数值的隐含类型是________。A.voidB.intC.floatD.double3.在C语言中,函数返回值的类型最终取决于________。A.函数定义时在函数值首部所说明的函数类型B.return语句中表达式值的类型C.用函数时主调函数所传递的实参类型D.函数定义时形参的类型4.以下程序的执行结果为________。#include"stdio.h"floatfun(intx,inty){return(x*y);}main(){inta=2,b=5,c=8;printf("%.0f\n",fun((int)fun(a+b,c),a-b));}A.-24B.24C.-168D.168&&&&5.以下程序运行后的输出结果是________。#include"stdio.h"intf(intx);main(){intn=1,m;m=f(f(f(n)));printf("%d\n",m);}intf(intx){returnx*2;}A.1B.2C.4D.86.如下函数调用语句中,含有的实参个数是________。fun(arg1,arg2+arg3,(arg4,arg5));//实参可以是表达式A.3B.4C.5D.有语法错误7.以下程序的输出结果是________。#include"stdio.h"main(){intw=5;fun(w);}fun(intm){if(m0)fun(m-1);&&&&43&&&&&&&&printf("%d",m);}A.5C.18.在一个C源程序文件中所定义的全局变量,其作用域为________。A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围9.以下程序的运行结果是________。#include"stdio.h"inta=1;intf(intc){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i2;i++){inta=3;k+=f(a);}k+=a;printf("%d\n",k);}A.13B.14C.15D.1610.以下程序执行后变量w的值是________。#include"stdio.h"intfun1(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){w=fun2(1.1,2.0);}A.5.21B.5C.5.0D.0.011.以下程序执行时,给变量x输入10,程序的输出结果是________。#include"stdio.h"intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){scanf("%d",x);&&&&44&&&&&&&&x=fun(x);printf("%d\n",x);}A.45B.54C.55D.6512.以下叙述中错误的是________。A.C程序必须由一个或一个以上的函数组成B.函数调用可以作为一个独立的语句存在C.若函数有返回值,必须通过return语句返回D.函数形参的值也可以传回给对应的实参13.以下叙述中正确的是________。A.预处理命令行必须位于C源程序的起始位置B.在C语言中,预处理命令行都以"#"开头C.每个C程序必须在开头包含预处理命令行:#include"stdio.h"D.C语言的预处理不能实现宏定义和条件编译的功能14.以下叙述中正确的是________。A.局部变量说明为static,其生存期将得到延长B.全局变量说明为static,其作用域将被扩大C.任何存储类的变量在未赋初值时,其值都是不确定的D.形参可以使用的存储类说明符与局部变量完全相同15.在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则________。A.称为函数的直接递归调用B.C语言中不允许这样的递归调用C.称为函数的循环调用D.称为函数的间接递归调用16.以下程序的输出结果是________。#include"stdio.h"longfib(intn){if(n2)return(fib(n-1)+fib(n-2));elsereturn(2);}voidmain(){printf("%d\n",fib(3));}A.2B.4C.6D.817.以下所列的各函数首部中,正确的是________。A.voidplay(var:Integer,varb:Integer)B.voidplay(inta,b)C.voidplay(inta,intb)D.Subplay(aasinteger,basinteger)18.以下程序的输出结果是________。#include"stdio.h"#definef(x)x*xvoidmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}&&&&45&&&&&&&&A.9B.18C.3619.下列程序的运行结果为________。#include"stdio.h"#defineMA(x)x*(x-1)voidmain(){inta=1,b=2;printf("%d\n",MA(1+a+b));}A.5B.6C.7D.820.以下程序的输出结果是________。#include"stdio.h"f(intb[],intm,intn){inti,s=0;for(i=m;i=i+2)s=s+b[i];}main(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%d\n",x);}A.10B.18C.8D.1521.下列的结论中只有________是正确的。A.所有的递归程序均可以采用非递归算法实现B.只有部分递归程序可以用非递归算法实现C.所有的递归程序均不可以采用非递归算法实现D.以上三种说法都不对22.以下程序的运行结果为________。#include"stdio.h"intx=2;intfun(intp){staticintx=3;x+=p;printf("%d",x);return(x);}voidmain(){inty=3;printf("%d\n",fun(fun(x)));}A.5C.5101023.下列程序的输出结果是________。#include"stdio.h"intfun(intx,inty,intcp,intdp){cp=x*x+y*y;dp=x*x-y*y;}&&&&46&&&&D.6&&&&D.5510&&&&&&&&voidmain(){inta=4,b=3,c=5,d=6;fun(a,b,c,d);printf("%d%d\n",c,d);}A.169B.43C.259D.5624.以下程序输出的结果是________。#include"stdio.h"longfun(intn){if(n==1||n==2)s=2;elses=n-fun(n-1);}main(){printf("%ld\n",fun(3));}A.1B.2C.3D.425.阅读下面的程序:#include"stdio.h"voidmain(){intswap();inta,b;a=3;b=10;swap(a,b);printf("a=%d,b=%d\n",a,b);}swap(inta,intb){temp=a;a=b;b=}下面的说法中,正确的是________。A.在main()函数中调用swap()后,能使变量a和b的值交换B.在main()函数中输出的结果是:a=3,b=10C.程序第2行的语句intswap();是对swap()函数进行调用D.swap()函数的类型是void&&&&四、习题答案&&&&(一)、是非题1.A2.A3.B11.B12.B13.B(二)、选择题1.C2.B3.A11.C12.D13.B4.B14.B4.C14.A5.A15.A5.D15.D6.B7.A8.B9.B10.B&&&&6.A16.B&&&&7.B17.C&&&&47&&&&8.D18.C&&&&9.B19.B&&&&10.C20.A&&&&&&&&21.B&&&&22.C&&&&23.D&&&&24.A&&&&25.B&&&&48&&&&&&&&第7章结构体二、习题&&&&(一)、是非题1.结构体变量所占用空间是全部成员占用空间之和。A.对B.错2.共用体可以作为结构体的成员,但结构体不能作为共用体的成员。A.对B.错3.结构体中各个成员的数据类型必须是相同的。A.对B.错4.有以下定义的结构体:typedefstructstudent{charname[10];}stu1;则,structstudent是结构体变量名。A.对B.错5.枚举类型中,枚举值是常量,不能再在程序中对其赋值。A.对B.错6.typedef的作用是给数据类型取一个别名。A.对B.错7.如果两个结构体变量有相同的类型,则可以把其中一个结构体变量的值整体赋值给另一个结构体变量。A.对B.错8.一个共用体变量可以有多个数据成员,这些数据成员共享同一个存储空间,但如果空间不够用可以临时由系统分配。A.对B.错9.结构体变量可以整体赋值,但不能整体比较。A.对B.错10.在定义了枚举变量后,系统才为该变量分配内存空间。A.对B.错(二)、选择题1.在定义一个共用体变量时,系统分配给它的内存是______。A.各成员所需内存之和B.第一个成员所需内存C.成员中占用内存最大者D.任意一个成员所需内存2.以下结构体的定义语句中,正确的是______。A.structstudent{charname[10];};B.struct{charname[10];}C.structstudent{charname[10];}D.structstudent{charname[10];};&&&&49&&&&&&&&3.如有定义的枚举类型:enumweek_day{Wed=3,Thu,Fri,Sat,Sun,Mon,Tue}则,Mon的值为______。A.1B.2C.8D.54.有如下定义的结构体类型:structdata{}对其中成员month的正确引用方式是______。A.data.monthB.data.year.monthC.monthD.workday.month5.已知对学生记录的描述为:structstudent{charname[20],struct{intyear,month,}};设变量stu中的“生日”是“日”,对“birthday”正确赋值的程序是______。A.year=1995;month=11;day=12;B.stu.year=1995;stu.month=11;stu.day=12;C.birthday.year=1995;birthday.month=11;birthday.day=12;D.stu.birthday.year=1995;stu.birthday.month=11;stu.birthday.day=12;6.下列关于枚举类型的描述不正确的是______。A.可以在定义枚举类型时对枚举元素进行初始化B.在赋值时,不可以将一个整数赋值给枚举变量C.枚举变量不可以进行关系运算D.枚举变量只能取对应枚举类型的枚举元素表中的元素值7.有如下的说明:uniontest{}test1;则在VC环境下sizeof(uniontest)的结果是______。A.4B.2C.5D.38.以下程序的运行结果是______。#includestdio.hunioncon{struct{intx,y,z;}m;}main(){num.m.x=4;num.m.y=5;num.m.z=6;num.i=0;printf("%d\n",num.m.x);&&&&50&&&&&&&&}A.4B.0C.5D.69.有如下程序段,执行后的输出结果是______。#includestdio.hmain(){structa{}num[2]={{20,5},{6,7}};printf("%d\n",num[0].x/num[0].y*num[1].y);}A.0B.28C.20D.510.以下程序的运行结果是______。#includestdio.h#includestring.htypedefstruct{charname[9];floatscore[2];}STU;voidf(STUa){STUb={"Zhao",'m',85.0,90.0};strcpy(a.name,b.name);a.sex=b.for(i=0;i2;i++)a.score[i]=b.score[i];}main(){STUc={"Qian",'f',95.0,92.0};f(c);printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);}A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90&&&&四、习题答案&&&&(一)、是非题1.A2.B3.B(二)、选择题1.C2.C3.C4.B4.D5.A5.D6.A6.C7.A7.A8.B8.B9.B9.B10.A10.A&&&&51&&&&&&&&第8章指针&&&&二、习题&&&&(一)、是非题1.运算符“*”有时是单目运算符,有时又可能是双目运算符。A.对B.错2.取地址运算符“”与指针运算符“*”的优先级相同,结合方向为自右向左。A.对B.错3.指针变量的类型不是该变量本身的类型,而是它所指向的变量的类型。A.对B.错4.指针变量不可以作为函数的参数。A.对B.错5.b指的是变量b的地址所存放的值。A.对B.错6.语句int*p;定义了一个指针变量p,其值是整型的。A.对B.错7.语句“int*p;”中*p的含义为取值。//定义指针变量A.对B.错8.一个变量的地址就称为该变量的“指针”。A.对B.错9.语句inti,*p=i;是正确的C定义。A.对B.错10.变量的指针,其含义是指该变量的一个标志。A.对B.错11.void类型的指针不指向某种类型的数据,所以没有意义。A.对B.错12.表达式*p++的运算顺序为先自增后取值。A.对B.错13.C语言中,执行表达式(*p)++后p的指向改变了。A.对B.错14.两个指针相加没有意义。A.对B.错15.若有定义:int*p1,*p2,m=3,n;,则p1=m;p2=p1;是正确的赋值语句。A.对B.错16.已知inta[4],*p;,则语句p=a;是正确的。//p=a;A.对B.错&&&&52&&&&&&&&17.char*name[5]定义了一个一维指针数组,它有5个元素,每个元素都是指向字符数据的指针型数据。A.对B.错18.*(a[i]+j)与a[i][j]的含义相同。A.对B.错19.若有定义:int(*p)[4];,则标示符p是一个指针,它指向一个含有四个整型元素的一维数组。A.对B.错20.设有以下定义:char*c[2]={"12","34"};,表示c数组的两个元素中分别存放了字符串"12"和"34"的首地址。A.对B.错(二)、选择题1.变量的指针,其含义是指该变量的______。A.值B.地址C.名D.一个标志2.下面能正确进行字符串赋值操作的是______。A.chars[5]={"ABCDE"};B.chars[5]={'A','B','C','D','E'};C.char*s;s="ABCDE";D.char*s;scnaf("%s",s);3.以下语句或语句组中,能正确进行字符串赋值的是______。。A.char**sp="right";B.chars[10];s="right";C.chars[10];*s="right";D.char*sp="right";4.设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是______。A.charstr[]="string";c=B.scanf("%s",c);C.c=getchar();D.*c="string";5.下列语句中,正确的是______。A.char*s;s="Olympic";B.chars[7];s="Olympic";C.char*s;s={"Olympic"};D.chars[7];s={"Olympic"};6.已有定义intk=2;int*p1,*p2;且p1和p2均已指向变量k,下面不能正确执行的赋值语句是______。A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);7.若有定义:doublea[10],*s=a;,以下能够代表数组元素a[3]的是______。A.(*s)[3]B.*(s+3)C.*s[3]D.*s+38.若有定义inta[5],*p=a;,则对a数组元素的正确引用是______。A.*a[5]B.a+2C.*(p+5)D.*(a+2)9.若有定义语句:doublea,*p=a;以下叙述中错误的是______。A.定义语句中*是一个间接访问运算符B.定义语句中*号只是一个说明符C.定义语句中p只能存放double类型变量的地址D.定义语句中,*p=a把变量a的地址作为初始赋给指针变量p10.若有程序段:charstr[]="china";char*p;p=则下列叙述正确的是______。A.*p与str[0]相等&&&&53&&&&&&&&B.str数组长度和p所指向的字符串长度相等C.str和p完全相同D.数组str中的内容和指针变量p中的内容相等11.若有语句int*point,a=4;和point=a;下面均代表地址的一组选项是______。A.a,point,*aB.*a,a,*pointC.point,*point,aD.a,*point,point12.以下选项中,对指针变量p的正确操作是______。A.inta[5],*p;p=a;B.inta[5],*p;p=a;C.inta[5];int*p=a=1000;D.inta[5];int*p1,*p2=a;*p1=*p2;13.设有定义语句:intm[]={2,4,6,8},*k=m;,以下选项中表达式的值为6的是______。A.*(k+2)B.k+2C.*k+2D.*k+=214.若有定义:int*p,m=5,n;,以下正确的程序段是______。A.p=n;scanf("%d",p);B.p=n;scanf("%d",*p);C.scanf("%d",n);*p=n;D.p=n;*p=m;15.以下程序的运行结果是______。#include"stdio.h"main(){intm=1,n=2,*p=m,*q=n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,216.若有定义语句:inta[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A.p=aB.q[i]=a[i]C.p=a[i]D.p=a[2][1]17.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是______。#include"stdio.h"main(){int*p,q,a,b;p=a;printf("inputa:");scnaf("%d",*p);?}A.*p表示的是指针变量p的地址B.*p表示的是变量a的值,而不是变量a的地址C.*p表示的是指针变量p的值D.*p只能用来说明p是一个指针变量18.程序段char*s="abcde";s+=2;printf("%d",s);的运行结果是______。A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果19.下面程序段的运行结果是______。charstr[]="ABC",*p=printf("%d\n",*(p+3));//*(p+3)表示p的地址从开始处移动3A.67B.0C.字符'C'的地址D.字符'C'20.下面程序段的运行结果是______。chara[]="language",*p;p=a;&&&&54&&&&&&&&while(*p!='u'){printf("%c",*p-32);p++;}A.LANGUAGEB.languageC.LANGD.langUAGE21.若有定义chars[10];,则在下面表达式中不表示s[1]的地址的是______。A.s+1B.s++C.s[0]+1D.s[1]22.以下程序的运行结果是______。#includestdio.h#includestring.hmain(){charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}A.9,One*WorldB.9,One*Dream!C.10,One*Dream!D.10,One*World23.下列函数的功能是______。fun(char*a,char*b){while((*b=*a)!='\0'){a++,b++;}}A.使a所指字符串赋给b所指空间B.使指针b指向a所指字符串C.将a所指字符串和b所指字符串进行比较D.检查a和b所指字符串中是否有'\0'24.以下程序的运行结果是______。#includestdio.hmain(){char*s={"abc"};do{printf("%d",*s%10);++s;}while(*s);}A.abcB.789C.25.以下程序的运行结果是______。#includestdio.hvoidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(a[3]);}A.5B.6C.8D.926.若有定义语句:char*s="OK",*s2="ok";,以下选项中能够输出“OK”的语句是______。A.if(strcmp(s1,s2)=0)puts(s1);B.if(strcmp(s1,s2)!=0)puts(s2);C.if(strcmp(s1,s2)=1)puts(s1);D.if(strcmp(s1,s2)!=0)puts(s1);27.以下程序的运行结果是______。#includestdio.hvoidfun(char*c,intd){*c=*c+1;d=d+1;&&&&55&&&&&&&&printf("%c,%c,",*c,d);}main(){charb='a',a='A';fun(b,a);printf("%c,%c\n",b,a);}A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B28.有以下定义和语句:structworkers{charname[20];struct{}s;};structworkersw,*pw=w;能给w中year成员赋1980的语句是______。A.*pw.year=1980;B.w.year=1980C.pw—year=1980;D.w.s.year=1980;29.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是______。main(){inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;for(i=o;i10;i++,p++)if(________)*a=*p;printf("%d",*a);}A.paB.*pa[0]C.*p*a[0]D.*p[0]*a[0]30.以下程序的运行结果是______。#includestdio.hmain(){inta[]={10,20,30,40},*p=a,i;for(i=0;i=3;i++){a[i]=*p;p++;}printf("%d\n",a[2]);}A.30B.40C.10D.1031.以下程序的输出结果是______。#includestdio.hmain(){char*s="12134";intk=0,a=0;while(s[k+1]!='\0'){k++;if(k%2==0){a=a+(s[k]-'0'+1);}a=a+(s[k]-'0');}printf("k=%da=%d\n",k,a);}A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=1532.以下程序的输出结果是______。#includestdio.h&&&&56&&&&&&&&main(){chara[5][10]={"one","two","three","four","five"};inti,j;for(i=0;i4;i++)for(j=i+1;j5;j++)if(a[i][0]a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}A.fwoB.fixC.twoD.owo33.下面程序对两个整型变量的值进行交换。以下正确的说法是______。main(){inta=10,b=20;printf("(1)a=%d,b=%d\n",a,b);swap(a,b);printf("(2)a=%d,b=%d\n",a,b);}swap(intp,intq){t=p;p=q;q=t;}A.该程序完全正确B.该程序有错,只要将语句swap(a,b);中的参数改为a,b即可C.该程序有错,只要将swap()函数中形参p和q以及t均定义为指针即可D.以上说法都不正确34.下面程序的功能是按字典顺序比较两个字符串a,b的大小,如果a大于b则返回正值,等于则返回0,小于则返回负值。下划线处应该填______。#include"stdio.h"s(char*s,char*t){for(;*s==*t;t++,s++)if(*s=='\0')return0;return(*s-*t);}main(){chara[20],b[10],*p,*q;p=a;q=b;scanf("%s%s",a,b);i=s(__________);printf("%d",i);}A.p,qB.q,pC.a,pD.b,q35.下面程序的运行结果是______。#includestdio.hvoiddelch(char*s){inti,j;char*a;a=s;for(i=0,j=0;a[i]!='\0';i++)if(a[i]='0'a[i]='9'){s[j]=a[i];j++;}s[j]='\0';}main(){char*item="a34bc";delch(item);printf("\n%s",item);}A.abcB.34C.a23D.a34bc36.以下程序的执行后输出结果是______。&&&&57&&&&&&&&#includestdio.hmain(){charstr[]="xyz",*ps=while(*ps)ps++;for(ps--;ps-str=0;ps--)puts(ps);}A.yzB.zxyzyz&&&&C.zyzxyz&&&&D.xxyxyz&&&&37.以下程序的执行后输出结果是______。#includestdio.hvoidmain(){inta[3][3],*p,i;p=a[0][0];for(i=0;i9;i++)p[i]=i;for(i=0;i3;i++)printf("%d",a[i][j]);}A.012B.123C.234D.34538.以下程序执行后的输出结果是______。#includestdio.hvoidmain(){inta[]={1,2,3,4},y,*p=a[1];y=(*--p)++;printf("%d",y);}A.1B.2C.3D.439.以下程序执行后的输出结果是______。#includestdio.h#includestring.hvoidmain(){chars1[10],*s2="ab\0cdef";strcpy(s1,s2);printf("%s",s1);}A.ab\0cdefB.abcdefC.abD.以上答案都不对40.若有函数:voidfun(doublea[],int*n){},以下叙述中正确的是______。A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送B.形参a和n都是指针变量C.形参a是一个数组名,n是指针变量D.调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组&&&&四、习题答案&&&&(一)、是非题1.A2.A3.A4.B5.B6.B7.B&&&&58&&&&8.A&&&&9.B&&&&10.B&&&&&&&&11.B12.B13.B14.A(二)、选择题1.B2.C3.D4.A11.D12.B13.A14.D21.B22.C23.A24.B31.C32.A33.D34.A(三)、编程题(略)&&&&15.A5.A15.B25.D35.B&&&&16.B6.B16.A26.D36.C&&&&17.A7.B17.B27.A37.D&&&&18.A8.D18.C28.D38.A&&&&19.A9.A19.B29.B39.C&&&&20.A10.A20.C30.A40.C&&&&59&&&&&&&&第9章文件二、习题&&&&(一)、判断题1.C语言通过文件指针对它所指向的文件进行操作。A.对B.错2.函数fseek(fp,n,k)中的第二个参数代表的位移量是相对于的文件的开始来说的。A.对B.错3.函数rewind()的作用是位置指针返回移动前的位置。A.对B.错4.为了提高读写效率,在进行读写操作后不应关闭文件以便下次再进行读写。A.对B.错5.使用fwrite()向文件中写入数据之前,该文件必须是以wb方式打开。A.对B.错6.命令行参数是指在操作系统状态下执行命令程序时允许带的参数。A.对B.错7.在C语言中将文件视为无结构的字节流。A.对B.错8.当以参数w打开文件时,若指定路径下已有同名文件,则覆盖原有文件。A.对B.错9.可以使用ftell()获得文件的当前读写位置。A.对B.错10.文件正常关闭时返回1。A.对B.错11.由于在C语言中将文件视为无结构的字节流,所以不能对文件进行二进制读写。A.对B.错12.表达式c=fgetc(fp)!=EOF的功能是从fp指向的文件中读取字符并判断文件是否结束。A.对B.错13.C语言中的文件是一种流式文件,读写时均以字符为单位。A.对B.错14.函数fopen()不可以打开二进制文件。A.对B.错15.函数fgets(s,n,fp)读出的字符串长为n。A.对B.错16.系统打开的标准设备文件不需要用fclose()函数关闭。A.对B.错17.语句puts(fp,"hello");可以向fp指向的文件中写入字符串。&&&&60&&&&&&&&A.对B.错18.fseek()函数中的位移量必须是一个long型数据。A.对B.错19.用“rb”方式打开的文件必须是已经存在的文件。A.对B.错20.使用fgetc()函数读取字符后,文件内部位置指针移动到文件末尾。A.对B.错(二)、选择题1.以下函数不能用于向文件写入数据的是______。A.ftellB.fwriteC.fputcD.fprintf2.设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是______。A.写操作结束后可以从头开始读B.只能写不能读C.可以在原有内容后追加D.可以随意读和写3.下列关于C语言文件的叙述中正确的是______。A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件4.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是______。A.一个文件指针,指向待读取的文件B.一个整型变量,代表待读取的数据的字节数C.一个内存块的首地址,代表读入数据存放的地址D.一个内存块的字节数5.标准库函数fgets(buf,n,fp)的功能是____。A.从fp所指向的文件中读取长度为n的字符串存入缓冲区bufB.从fp所指向的文件中读取长度不超过n-1的字符串存入缓冲区bufC.从fp所指向的文件中读取n个字符串存入缓冲区bufD.从fp所指向的文件中读取长度为n-1的字符串存入缓冲区buf6.以下程序完成的功能是___。#include"stdio.h"main(){FILE*in,*charch,infile[10],outfile[10];printf("Entertheinfilename:");scanf("%s",infile);printf("Entertheoutfilename:");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL)&&&&61&&&&&&&&printf("cannotopeninfile\n");if((in=fopen(outfile,"w"))==NULL)printf("cannotopenoutfile\n");while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}A.程序完成将磁盘文件的信息在屏幕上显示的功能B.程序完成将两个磁盘文件合二为一的功能C.程序完成将一个磁盘文件复制到另一个磁盘文件中D.程序完成将两个磁盘文件合并并在屏幕上输出7.以下程序运行后的输出结果是_______。#include"stdio.h"main(){FILE*inti=20,j=30,k,n;fp=fopen("dl.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("dl.dat","r");fscanf(fp,"%d%d",k,n);printf("%d%d\n",k,n);fclose(fp);}A.C..阅读下面的程序,程序实现的功能是(a123.txt在当前盘符下已经存在)_______。#include"stdio.h"#include"string.h"voidmain(){FILE*inta[10],*p=a;fp=fopen("a123.txt","w");while(strlen(gets(p))0){fputs(a,fp);fputs("\n",fp);}fclose(fp);}A.从键盘输入若干行字符,按行号倒序写入文本文件a123.txt中B.从键盘输入若干行字符,取前2行写入文本文件al23.txt中C.从键盘输入若于行字符,第一行写入文本文件a123.txt中D.从键盘输入若干行字符,依次写入文本文件a123.txt中9.下面的程序执行后,文件test中的内容是_____。#include"stdio.h"#include"string.h"&&&&62&&&&&&&&voidfun(char*fname,char*st){FILE*myf=fopen(fname,"w");for(i=0;istrlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test","newworld");fun("test","hello");}A.helloB.newworldhelloC.newworldD.hello,rld10.阅读下面的程序,此程序的功能为______#include"stdio.h"#include"string.h"main(intargc,char*argv[]){FILE*p1,*p2;p1=fopen(argv[1],"r");p2=fopen(argv[2],"a");c=fseek(p2,0L,2);while((c=fgetc(p1))!=EOF)fputc(c,p2);fclose(p1);fclose(p2);}A.实现将p1打开的文件中的内容复制到p2打开的文件B.实现将p2打开的文件中的内容复制到p1打开的文件C.实现将p1打开的文件中的内容追加到p2打开的文件内容之后D.实现将p2打开的文件中的内容追加到p1打开的文件内容之屠11.fseek函数的正确调用形式是_____。A.fseek(文件指针,起始点,位移量)B.fseek(文件指针,位移量,起始点)C.fseek(位移量,起始点,文件指针)D.fseek(起始点,位移量,文件指针)12.若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是_____。A.EOFB.-1C.1D.NULL//结束标志-113.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是_______。A.文件开始B.文件末尾C.文件当前位置D.以上都不对14.16位系统中,将一个整数12000分别以ASCII码文件和二进制文件形式存放,各自需要占据的存储空间字节数分别是______。A.5和2B.2和5C.2和2D.5和515.若要用fopen()函数打开一个新的二进制文件,该文件要既能读也能写,则文件读方式字符串应是_______。A."a+"B."r+"C."rb+"D."ab+"16.函数fscanf的功能是______。A.将信息从文件输入B.将信息输出到文件&&&&63&&&&&&&&C.将信息从控制台输入D.将信息输出到控制台终端上17.下面叙述中,不正确的是_______。A.C语言中的文本文件以ASCII形式存储数据B.C语言对二进制文件的访问速度比文本文件快C.C语言中,随机读写方式不适用于文本文件D.C语言中,顺序读写方式不适用于二进制文件18.如果程序中有语句FILE*fp;fp=fopen("abc.txt","w");,则程序准备做______。A.对文件读写操作B.对文件读操作C.对文件写操作D.对文件不操作19.使用函数fopen()以文本方式打开或建立可读可写文件,要求:若指定的文件不存在,则新建一个,并}

我要回帖

更多关于 c判断字符串的子序列 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信