C语言大作业西工大
- 格式:pdf
- 大小:544.46 KB
- 文档页数:21
学院*****************目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (4)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 (10)2.3函数实现 (13)2.4开发日志 (18)3 程序调试及运行 (20)3.1程序运行结果 (20)3.2程序使用说明 (22)3.3程序开发总结 (22)4 附件(源程序) (22)1 摘要1.1 设计题目折半法查找演示程序1.2 设计内容本程序是一个演示折半查找算法的演示程序。
由用户输入查找的数据表列和查找的数据,系统在将数表排序后可以在屏幕上演示在排序后的表列中按折半查找法查找该数据的具体过程(通过每次查找的中间数据、下次查找表列等,具体效果见下图),支持多次演示、错误提醒,程序暂停演示功能。
1.3 开发工具Visual C++ 6.0和Win32。
1.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构程序功能模块:本程序主要由五大模块组成:程序说明模块、输入模块、排序模块、折半法查找及显示模块、进程选择模块。
各模块的主要功能如下:程序说明模块:给使用者营造一个较为友好的界面,同时提供程序开发人员的相关信息以及程序操作的相关说明信息。
此部分模块主函数源代码如下:int a[N];/*存储要查找的数表,用户输入*/int i,n,num,count;/*count为折半次数计数器,n为数表数据个数,num存储所查数据*/int top,bottom,mid;char c;/*存储选择函数中的输入的字符y或n*/int flag=1;/*折半法循环标志变量*/int loc=-1;/*存储所查找数据位置*/double k=0;p_s(76);puts("\n");/*引用p_s函数,打出一行'*'*/(p_s函数位于print_star.cpp文件中,参见下文)printf("****欢****迎****使****用****折****半****查****找****法****演****示****器****\n");puts("\n");/*程序欢迎语*/p_s(13);printf("制作者:***************** ");/*作者信息*/p_s(4);printf("Email:************************ ");/*电子邮件*/p_s(11);puts("\n");p_s(76);puts("\n");/*再次引用p_s函数,程序说明部分结束*/附:print_star.cpp文件源代码#include<stdio.h>void p_s(int k){int i;for(i=1;i<=k;i++)/*连续输出ka个'*'*/printf("*");}输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。
学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (4)2.3函数实现 (4)2.4开发日志 (5)3 程序调试及运行 (6)3.1程序运行结果 (6)3.2程序使用说明 (7)3.3程序开发总结 (7)4 附件(源程序) (8)1 摘要1.1 设计题目界面编程——简谐运动1.2 设计内容基于Windows界面编程下的SDK编程框架,设计一个带有对话框、GDI图形输出的Windows窗口的程序,实现求解简谐运动方程,能流密度,绘制简谐振动曲线。
运行程序,初始化,X0=V0=W=1时的简谐运动方程和简谐振动曲线。
当点击“运行|计算绘图”时,弹出对话框对简谐运动初相位X0,初速度V0和角频率W进行修改,点击“确认”,就能计算出简谐运动方程,能流密度,绘制简谐振动曲线,这些结果在窗口显示。
1.3 开发工具Visual C++ 6.0和Win32SDKApp1.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构一、程序的整体结构首先定义资源头文件resource.h;在进行资源描述文件,此过程可通过可视化操作;正式进入编写程序代码:1、由Win32SDKApp自动生成的SDK编程框架:头文件包含所有头文件或链接库文件全局定义应用实例、主窗口变量、数据结构等全局定义,固定不变消息处理函数原型给出所有消息处理函数的原型,增加/删除消息处理时变动消息映射表宏定义定义消息映射表,增加/删除消息处理时变动窗口过程窗口过程函数的实现,固定不变注册窗口类注册窗口类函数的实现,除非修改窗口属性,一般不动初始化窗口初始化窗口函数的实现,除非修改窗口初始化值,一般不动消息循环Windows应用程序主消息循环,一般不动主函数Windows应用程序基本结构,一般不动消息处理函数实现在这编写消息处理函数2、再对SDK编程框架进行修改:设置了快捷键就必须对消息循环函数修改在编写消息处理函数之前:在消息处理函数原型模块中加入要添加的消息处理函数(如WM_COMMAND、WM_ONPAIT)在消息映射表模块增加该消息映射在消息处理函数实现模块中给出该消息处理函数的实现如果消息处理函数之间有共享使用的变量,则将它定义为全局变量。
西工大C语言POJ习题答案一、1、第一季10题全(注:第五题问题已经解决,确认AC!)#include <="">scanf("%d%d",&a,&b);sum=a+b;printf("%d\n",sum);return 0;?}2、#include <="" bdsfid="74" p="" pi="">intmain(){? double r,h,l,s,sq,vq,vz;? scanf("%lf%lf",&r,&h);?l=2*PI*r;? s=PI*r*r;? sq=4*PI*r*r;? vq=4*PI*r*r*r/3;vz=s*h;? printf("%、2lf\n%、2lf\n%、2lf\n%、2lf\n%、2lf\n",l,s,sq,vq,vz);? return0;?}3、#includeint main(){?int a,b,c;double d,e;scanf("%d%d%d",&a,&b,&c); d=a+b+c;? e=d/3;printf("%lf\n%lf\n",d,e);?return 0;}4、#include <stdio、h>int main(){int a,b,c;? scanf("%d%d%d",&a,&b,&c);if(a<b)? a=b;? if(a<c)?a=c;< bdsfid="94" p=""></c)?a=c;<>printf("%d\n",a);return 0;}5、#include<stdio、h>?int main(){? inti=0,j=0,k=1;char a[6];while((a[i]=getchar())!='\n'){i++;}? for(;i>0;i--){? if(a[j]==a[i-1]){j++;? continue;}else {k=0;break;}}? if(k==1)?printf("yes\n");else? printf("no\n");}6、#include?i?doublea,c;nt main()?{scanf("%lf",&a);{?case0:c=switch((int)a/10)?a*0、1;break;?case1:c=(a-10)*0、075+10*0、1;break;case2:case3:c=(a-20)*0、05+10*0、075+10*0、1;break;case4:?case5:c=(a-40)*0、03+20*0、05+10*0、075+10*0、1;break;case6:case7:?case8:case9:c=(a-60)*0、015+20*0、03+20*0、05+10*0、075+10*0、1;break;?default:c=(a-100)*0、01+40*0、015+20*0、03+20*0、05+10*0、075+10*0、1;?{printf("%lf\n",c);return0;{7、#include<stdio、h>?intmain()?{ doublea,b,c;?scanf("%lf",&a);c=(int)a;if(a>c)a=c+1;?if(a>15)b=(a-15)*2、1+7+13*1、5;?else{ if(a>2)b=(a-2)*1、5+7;?else b=7;?}printf("%lf\n",b);return0;{8、#include ?int main(){? int a,b,c,e,f=30,g=31,n;scanf("%d-%d-%d",&a,&b,&c);? if((a%400==0)||(a%100!=0&&a%4==0))? e=29;? elsee=28;{?case 1:n=c;break; switch (b)?case2:n=g+c;break;case3:n=g+e+c;break;? case 4:n=g+e+g+c;break;? case 5:n=g+e+g+f+c;break;?case 6:n=g+e+g+f +g+c;break;case7:n=g+e+g+f+g+f+c;break; case8:n=g+e+g+f+g+f+g+c;break;? case 9:n=g+e+g+f+g+f+g+g+c;break;case 10:n=g+e+g+f+g+f+g+g+f+c;break;?case 11:n=g+e+g+f+g+f+g+g+f+g+c;break;default: n=g+e+g+f+g+f+g+g+f +g+f+c;}? printf("%d\n",n);return 0;}9、#include <stdio、h>< bdsfid="166" p=""></stdio、h><> int main()?{int x;? scanf("%d",&x);if(x>=90&&x<=100)? printf("A\n");? else if (x>=80)? printf("B\n");?else if(x>=70)printf("C\n");?else if (x>=60)printf("D\n");?elseprintf("E\n");return 0;?}10、#includeint main()?{doublex,y,s;?scanf("%l f,%lf",&x,&y);s=(x+2)*(x+2)+(y-2)*(y-2);?if(s>1){ s=(x+2)*(x+2)+(y+2)*(y+2);?if(s>1){?s=(x-2)*(x-2)+(y+2)*(y+2);if(s>1){?s=(x-2)*(x-2)+(y-2)*(y-2);if(s>1){printf("0\n");return1;{{?{?{printf("10\n");?return0;{二。
西工大2020年4月《C语言程序设计》作业机考试卷总分:100 得分:96一、单选题(共35 道试题,共70 分)1. 一个C程序的执行是从()。
A.本程序的main函数开始,到main函数结束B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束D.本程序文件的第一个函数开始,到本程序main函数结束正确答案:A2. 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。
A.auto和registerB.extern和registerC.auto和staticD.static和register正确答案:A3. 以下存储类型只有在使用时才为该类型变量分配内存的是()。
A.auto和staticB.auto和registerC.register和staticD.static和extern正确答案:B4. 运行程序:#includemain(){int n='c';switch(n++){ default: printf("error");break;case 'a':case 'A':case 'b':case 'B':printf("good");break;case 'c':case 'C':printf("pass");case 'd':case 'D':printf("warn");}}则输出结果是()。
A.goodB.passC.warnD.passwarn。
童鞋们,快来呀!答案!答案!no1.绘制余弦曲线在屏幕上用“*”显示0~360度的余弦函数cos(x)曲线*问题分析与算法设计如果在程序中使用数组,这个问题十分简单。
但若规定不能使用数组,问题就变得不容易了。
关键在于余弦曲线在0~360度的区间内,一行中要显示两个点,而对一般的显示器来说,只能按行输出,即:输出第一行信息后,只能向下一行输出,不能再返回到上一行。
为了获得本文要求的图形就必须在一行中一次输出两个“*”。
为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利用cos(x)的左右对称性。
将屏幕的行方向定义为x,列方向定义为y,则0~180度的图形与180~360度的图形是左右对称的,若定义图形的总宽度为62列,计算出x行0~180度时y点的坐标m,那么在同一行与之对称的180~360度的y点的坐标就应为62-m。
程序中利用反余弦函数acos计算坐标(x,y)的对应关系。
使用这种方法编出的程序短小精炼,体现了一定的技巧。
*程序说明与注释#include<stdio.h>#include<math.h>void main(){double y;int x,m;for(y=1;y>=-1;y-=0.1){m=acos(y)*10;for(x=1;x<m;x++) printf(" ");printf("*");for(;x<62-m;x++)printf(" ");printf("*\\n");}}no2.绘制余弦曲线和直线在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。
其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。
*问题分析与算法设计本题可以在上题的基础上进行修改。
图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。
西北工业大学2020春机考《C语言程序设计》作业1单选题1.下面程序的输出结果是()。
main() { int a[10]={1,2,3,4,5,6,7,8,9,10,*p=a;A.3B.4C.1D.2答案:VX:34637870获取参考答案2.以下描述错误的是()。
A.break 语句不能用于循环语句和 switch 语句外的任何其他语句B.在 switch 语句中使用 break 语句或 continue 语句的作用相同C.在循环语句中使用 continue 语句是为了结束本次循环,而不是终止整个循环D.在循环语句中使用 break 语句是为了使流程跳出循环体,提前结束循环答案:VX:34637870获取参考答案3.下面程序的输出结果是()。
main() { int x=10; x+=(x=8); printf("%d\n",x); }A.10B.8C.18D.16答案:VX:34637870获取参考答案4.定义 int i=1; 则执行语句 while(i++<5); 后,i 的值为()。
A.3B.4C.5D.6答案:VX:34637870获取参考答案5.若有语句 scanf("%d%d",&a,&b);要使变量 a,b 分别得到 10 和 20,正确的输入形式为()。
A.10 20B.10,20C.1020D.10:20答案:VX:34637870获取参考答案6.有以下定义 #include char a[10],*b=a; 不能给 a 数组输入字符串的语句是()。
A.gets(a)B.gets(a[0]);C.gets(&a[0]);D.gets(b)答案:VX:34637870获取参考答案7.当 c 的值不为 0 时,在下列选项中能够将 c 的值赋给变量 a、b 的是()。
A.c=b=a;B.(a=c)||(b=c);C.(a=c)&&(b=c);答案:VX:34637870获取参考答案8.以下描述中正确的是()。
西工大c语言试题第一章1. 一个C源程序必须有一个也只能有一个函数。
2. 是构成C程序的基本单位。
3. 一个C程序总是从函数开始执行的。
4.在C语言中,一个函数一般由两个部分组成,它们是和。
5. C语句是以结束的。
6. 可以用对C程序中的任何部分作注释。
7. 下面4个选项中,均是C语言关键字的选项是。
A) auto B) switch C) else D) ifchar void extern structinclude continue scanf type8. 下面正确的说法是。
A) main函数可以调用其他函数,也可以被其他函数调用B)每个C语言源文件必须包含一个main函数,方可进行编译C) 分号是c语句的一部分D)函数的首部后必须加分号第一章1. main2. 函数 3 main 4.函数的首部函数体 5. ;6. /*. */7. b 8.c第三章1.1. 以下组常量全是合法的C语言常量。
A) ―1\101ab‖ 0f 3.e5 B) ?abc‘ -0 9eC) ?$‘ 1e5 0xa D) .5e-5 0198 e3.02. 如有定义:char c=‘\010‘;则变量c中包含的字符个数为。
3. 字符串“ab\n\\012\\\‖‖的长度是。
4. C语言中,整常数18的三种具体表示形式为。
5. C语言中的标识符只能由字母,数字,下划线3种字符组成,且第一个字符。
A)必须为字母B) 必须为下划线C)必须为字母或下划线D)可以为字母、数字、下划线中的任一种字符6. 下列4组选项中,均是C语言合法用户标识符的选项是。
A) timp abc$ suml B) day day_1 _dayC) day-1 3ab sum D) m.d.j 123 class7.C语言中int、char和double三种类型数据在内存中所占字节数的大小关系为。
8.若有定义:char a=123,b=456; int sum; 执行sum=a+b; 后,sum的值是。
作业名称:学生通讯录管理系统学院:自动化学院班级:学号:姓名:团队组成:西北工业大学2022年4月27日请填写以下十项内容,将表格按页对齐(插入空行),勿删除任何部分。
1、问题与背景(描述程序所要解决的问题或应用背景)2、开发工具(列出所使用的开发工具和第3方开发库)3、主要功能(详细说明程序的功能)4、设计内容(详细描述解决问题的原理和方法、算法、数据结构等)5、程序文件与工程名称(标出程序中所有文件名、工程名称及其说明)6、函数模块(程序中各个函数的原型声明及其说明)7、使用说明(运行程序的小型说明书)8、程序开发总结(简要叙述编写本作业的收获与思考)9、运行截图(附上程序运行的截图画面,至少有1幅,截图越翔实得分越高)增加联系人修改联系人删除联系人按学生姓名查询联系人按学生学号查询联系人保存通讯录打开通讯录10、源程序(附上程序源代码,若是多个文件,标出文件名)#include<string>#include<fstream>#include<iostream>#include<vector>using namespace std;static int n=0;struct student{string name;string number;string address;string telephone;string post;string mail;};class information{private:student st[10];public:void add(string name, string number,string address,string telephone,string post,string mail);void print(int i){cout<<"\t\t姓名:"<<st[i].name<<endl;cout<<"\t\t学号:"<<st[i].number<<endl;cout<<"\t\t地址:"<<st[i].address<<endl;cout<<"\t\t电话:"<<st[i].telephone<<endl;cout<<"\t\t邮编:"<<st[i].post<<endl;cout<<"\t\t邮箱:"<<st[i].mail<<endl;}void findname(string name);void findnumber(string number);void correct(string name);void del(string);void save();void read();};void information::add(string name, string number,string address,string telephone,string post,string mail){static int i=0;st[i].address=address;st[i].mail=mail;st[i].name=name;st[i].number=number;st[i].post=post;st[i].telephone=telephone;i++;n++;}void information::findname(string name){int x=0;for(int i=0;i<10;i++){if(st[i].name==name){print(i);x=1;break;}}if(x==0)cout<<"the man can.t be found in the record!"<<endl;}void information::findnumber(string number){for(int i=0;i<10;i++){if(st[i].number==number){print(i);x=1;break;}}if(x==0)cout<<"the student can.t be found in the record!"<<endl; }void information::correct(string name){string number;string address;string telephone;string post;string mail;int x=0;for(int i=0;i<10;i++){if(st[i].name==name){cout<<"\t输入要修改的姓名:";cin>>name;st[i].name=name;cout<<"\t输入要修改的学号:";cin>>number;st[i].number=number;cout<<"\t输入要修改的地址:";cin>>address;st[i].address=address;cout<<"\t输入要修改的电话:";cin>>telephone;st[i].telephone=telephone;cout<<"\t输入要修改的邮编:";cin>>post;st[i].post=post;cout<<"\t输入要修改的邮箱:";cin>>mail;st[i].mail=mail;print(i);x=1;}if(x==0)cout<<"the man can.t be found in the record"<<endl;}void information::del(string name){int x=0;for(int i=0;i<10;i++){if(st[i].name==name){st[i].address="0";st[i].mail="0";st[i].name="0";st[i].number="0";st[i].post="0";st[i].telephone="0";x=1;print(i);}}if(x==0)cout<<"the student can.t be found in the record"<<endl;}void information::save(){string fileName;second:cout<<"\t输入要保存的文件名:";cin>>fileName;ofstream outFile(fileName.c_str());if(!outFile){cerr<<"\terror:unable to open output file: "<<fileName<<endl; goto second;}for(int i=0;i<n;i++){outFile << "姓名:"<<st[i].name<<"\t";outFile << "学号:"<<st[i].number<<"\t";outFile << "地址:"<<st[i].address<<"\t";outFile << "电话号码:"<<st[i].telephone<<"\t";outFile << "邮编:"<<st[i].post<<"\t";outFile << "E_MAIL:"<<st[i].mail<<endl;}outFile.close();}void information::read(){vector<string> svec;string fileName,s;cin>>fileName;ifstream inFile(fileName.c_str());if(!inFile){cerr<<"\terror:unable to open output file: "<<fileName<<endl;}while(getline(inFile,s))svec.push_back(s);for(vector<string>::iterator iter=svec.begin();iter!=svec.end();++iter)cout<<*iter<<endl<<endl;}int main(){information s;cout<<"\t★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<<endl; cout<<endl;cout<<"\t\t\twelcome to use the communication book"<<endl;cout<<"\t\t\t\t\t\tdesigned: 郭振超"<<endl;cout<<"\t\t----------------------------------------------------"<<endl;begin:cout<<"\t\t| 1.编辑通信录 2.查询联系人 |"<<endl;cout<<"\t\t| 3.保存通信录 4.打开通记录 |"<<endl;cout<<"\t\t----------------------------------------------------"<<endl;string name;string number;string address;string telephone;string post;string mail;int val1;cout<<"\t\t请选择功能号:";cin>>val1;switch(val1){case 1:cout<<"\t\t(1) 增加联系人"<<endl;cout<<"\t\t(2) 修改联系人"<<endl;cout<<"\t\t(3) 删除联系人"<<endl;int val2;cout<<"\t\t请选择选项:";cin>>val2;switch(val2){case 1:cout<<"\t 输入姓名: ";cin>>name;cout<<"\t 输入学号: ";cin>>number;cout<<"\t 输入地址: ";cin>>address;cout<<"\t 输入电话: ";cin>>telephone;cout<<"\t 输入邮编: ";cin>>post;cout<<"\t 输入邮箱: ";cin>>mail;s.add(name,number,address,telephone,post,mail); cout<<"\t\t按0键退出系统,按其他键返回主菜单:";int back_add;cin>>back_add;if(back_add!=0)goto begin;elsegoto end;break;case 2:cout<<"\t请输入要修改的学生姓名:";cin>>name;s.correct(name);cout<<"\t\t按0键退出系统,按其他键返回主菜单:";int back_correct;cin>>back_correct;if(back_correct!=0)goto begin;elsegoto end;break;case 3:cout<<"\t请输入要删除的学生信息的学生姓名:"; cin>>name;s.del(name);cout<<"\t\t按0键退出系统,按其他键返回主菜单:";int back_del;cin>>back_del;if(back_del!=0)goto begin;elsegoto end;break;}break;case 2:cout<<"\t\t(1) 按学生姓名查询"<<endl;cout<<"\t\t(2) 按学生学号查询"<<endl;int val3;cout<<"\t\t请选择选项:";cin>>val3;switch(val3){case 1:cout<<"\t请输入查询的学生姓名:";cin>>name;s.findname(name);cout<<"\t\t按0键退出系统,按其他键返回主菜单:";int back_findname;cin>>back_findname;if(back_findname!=0)goto begin;elsegoto end;break;case 2:cout<<"\t请输入查询的学生学号:";cin>>number;s.findnumber(number);cout<<"\t\t按0键退出系统,按其他键返回主菜单:";int back_findnumber;cin>>back_findnumber;if(back_findnumber!=0)goto begin;elsegoto end;break;}break;case 3:cout<<"\t确定保存修改的记录吗(请输入y或n进行选择):"; char val4;cin>>val4;if(val4=='n'){cout<<"放弃记录保存!"<<endl;cout<<"\t\t按0键退出系统,按其他键返回主菜单:";int back_save;cin>>back_save;if(back_save!=0)goto begin;elsegoto end;}else{s.save();cout<<"\t保存成功!"<<endl;cout<<"\t\t按0键退出系统,按其他键返回主菜单:";int back_save;cin>>back_save;if(back_save!=0)goto begin;elsegoto end;}break;case 4:cout<<"\t输入要打开的记录名:";s.read();cout<<"\t\t按0键退出系统,按其他键返回主菜单:";int back_read;cin>>back_read;if(back_read!=0)goto begin;elsegoto end;break;}end:cout<<"\t**********成功退出系统,欢迎再次使用!**********"<<endl; return 0;}。
西安工业大学试题纸一.判断题:(共9分,每题1分)( )1.C语言编译时不检查语法( )2.所有的变量在使用前都必须予以声明()3.一个数组能够存放许多不同类型的值()4.若有说明:int a[3][4]={0};,则数组a中每个元素的初值都为0()5.函数可以嵌套定义,即在一个函数的内部可以定义另一个函数()6.字符“\0”是字符串的结束标记,其ASCII代码为0()7.若用数组名作为函数调用时的实参,则实际传递给形参的是数组的第一个元素值()8.存放地址的变量同其它变量一样,可以存放任何类型的数据()9.指针变量可用于保存同类型变量的地址值二.选择题:(共36分,每题2分)1.假定x和y为double型,则表达式x=2,y=x+3/2的值是()A)3.500000 B)3 C)2.000000 D)3.000000 2.整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是()A)x || y B)x *y C)x && y D)x %y 3.若a为int类型,且其值为3,则执行完表达式a-=a*a后,a的值是()A)6 B)0 C)-6 D)-124.假定有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是()A)3 B)6 C)10 D)205.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为()A)不定值B)4 C)3 D)16.C语言对嵌套if语句的规定是:else总是与()配对。
A)其之前最近的if B)第一个ifC)缩进位置相同的if D)其之前最近且不带else的if7.执行语句for(i=1 ; i<4 ; i++) ; 后变量i的值是()A)3; B)4 C)5 D)不定8.在C语句中,下列说法中正确的是()A)不能使用do-while语句构成循环;B)do-while语句构成的循环必须用break语句才能退出;C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环;D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环。