C++大作业
西电2022年秋季《面向对象程序设计(c++)》大作业及答案
学习中心/函授站姓名学号西安电子科技大学网络与继续教育学院2022 学年下学期《面向对象程序设计(C++)》期末考试试题(综合大作业)考试说明:1、大作业试题公布时间:(1)毕业班:2022 年10 月21 日;(2)正常班:2022 年11 月18 日;2、考试必须独立完成,如发现抄袭、雷同均按零分计;3、答案须用《西安电子科技大学网络与继续教育学院2022 秋期末考试答题纸》(个人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;4、在线上传时间:(1)毕业班学生于2022 年10 月21 日至2022 年11 月1 日在线上传大作业答卷;(2)正常班学生于2022 年11 月18 日至2022 年12 月5 日在线上传大作业答卷;5、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。
一、简答题(10 分)1、运算符 new 和 delete 的功能分别是什么?(3 分)答案:运算符new的功能是创建动态对象;delete的功能是释放由new创建的动态对象。
2、若派生类以 private 方式从一个基类派生,派生类的对象可以访问基类中的哪些成员?派生类的成员函数可以访问基类中的哪些成员?(3 分)答案:若派生类以private方式从一个基类派生,派生类的对象不能访问基类中的任何成员(1分);派生类的成员函数可以访问基类中的public和protected成员(2分)。
3、构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?(4 分)答案:构造函数的作用是创建对象并对其进行必要的初始化。
(1分)构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。
(2分)二、填空题(每空 2 分,共 20 分)1、函数的返回值是通过函数体中的return语句带回的;若被调用函数被定义为 void 类型,则被调用函数不带回任何值。
2、表示逻辑关系“ a 大于等于8 或者 a 小于等于5”的C++表达式是。
c语言大作业课程设计
c语言大作业课程设计一、课程目标知识目标:1. 学生能掌握C语言的基本语法,包括变量定义、数据类型、运算符、控制结构等;2. 学生能理解函数的定义和调用,灵活运用函数实现模块化编程;3. 学生能掌握数组、指针、结构体等C语言高级特性,并应用于实际编程中;4. 学生了解文件操作的基本方法,能够读写文件,实现数据的持久化存储。
技能目标:1. 学生能够运用C语言编程解决实际问题,具备独立分析和解决问题的能力;2. 学生能够运用所学知识,设计并实现一个小型的C语言项目;3. 学生能够通过编程实践,提高逻辑思维能力和编程技巧;4. 学生能够熟练使用集成开发环境(IDE),调试程序并优化代码。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习计算机科学的热情;2. 学生养成合作、探究的学习习惯,培养团队协作能力;3. 学生通过编程实践,体验解决问题的成就感,增强自信心;4. 学生遵循编程规范,注重代码质量,培养良好的编程习惯。
课程性质:本课程为C语言大作业课程设计,旨在巩固和拓展学生对C语言知识的掌握,提高学生的编程能力和实践能力。
学生特点:学生已经掌握了C语言的基本知识,具备一定的编程基础,但缺乏实际项目经验。
教学要求:注重实践,引导学生通过动手编程解决问题,培养学生独立思考和解决问题的能力。
将课程目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容1. 复习C语言基础知识,包括变量、数据类型、运算符、控制结构等,参考教材第1-4章;2. 函数的定义、调用、参数传递及作用域,引用教材第5章;3. 数组、字符串、指针的概念及应用,深入讲解教材第6-7章;4. 结构体、联合体、枚举类型的使用,分析教材第8章;5. 文件操作,包括文件的打开、读写、关闭,依据教材第9章;6. 面向过程的编程思想,以实际项目为例,引导学生运用所学知识设计程序;7. 编程规范和调试技巧,培养学生的良好编程习惯;8. 小型项目实践,分组进行项目设计和开发,涵盖整个C语言知识体系。
c语言大作业综合
c语言大作业综合第一章C语言简介及算法一.选择题1.一个C程序可以包含的函数。
A.一个B.多个C.若干D.任意2.下面不可以使用来编译和连接一个C 程序。
A.TurboCB.VC++C.C语言编译器D.BC3.C语言的程序一行写不下时,可以。
A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行4.C控制语句有种。
A.6B.9C.32D.345.复合语句是用一对界定的语句块。
A.{}B.[]C.()D.”6.一个C程序的执行总是从该程序的函数开始,在函数最后结束。
A.第一个、最后一个B.main、mainC.主函数、最后一个D.第一个、第一个7.C语言提供的合法的数据类型关键字A.FloatB.ignedC.integerD.Char8.在以下各组标识符中,合法的标识符是(1)A.B01B.table_1C.0_tD.k%(2)A.Fat_B.voidC.pblD.(3)A.某y_B.longdoubleC.某pD.CHAR(4)A.jB.IntC._某yD.w_y239.C语言的标识符里不能有A.大小写字母B.数字C..D.下划线二.填空题1.C程序是由构成的,一个C程序中至少包含因此,是C程序的基本单位。
2.C程序注释是由和所界定的文字信息组成的。
3.函数体一般包括和4.算法是解决问题的和的描述。
5.C程序的注释部分可以出现在程序的位置,它对程序的编译和运行作用,但是可以增加程序的第二章C语言数据类型、基本运算及简单程序设计一.选择题1.不合法的字符常量是A.‘\\t’B.“A”C.‘a’D.’\\某32’2.逻辑运算符两侧运算对象的数据类型。
A.只能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据3.下列表达式中,不满足“当某的值为偶数时值为真,为奇数时值为假”的要求。
A.某%2==0B.!某%2!=0C.(某/2某2-某)==0D.!(某%2)4.下面选项中,不是合法整型常量的是A.160B.-0某cdgC.-01D.-0某48a5.能正确表示“当某的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。
C大作业坦克大战
#include<iostream> #include<stdlib.h>#include<windows.h>#include<time.h>#include<conio.h> usingnamespacestd;HANDLEMutex=CreateMutex(NULL,FALSE,NULL);/互/ 斥对象intGameOver=0;intlevel=0;intmap[23][23];// 坦克种类,Normal 为玩家坦克#defineNormal0#defineRed1#defineBlue2#defineGreen3// 方向的宏定义#defineUp0#defineDown1#defineLeft2#defineRight3// 地图标记的宏定义#defineEmpty0#definePlayer1#definePlayerBullet2#defineEnemyBullet3#defineEnemy4intKill;intKillRed;intKillGreen;intEnemyExist;voidSetPos(inti,intj)// 设定光标位置{COORDpos={i,j};HANDLEOut=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(Out,pos);}voidHideCurSor(void)// 隐藏光标{CONSOLE_CURSOR_INFOinfo={1,0};HANDLEOut=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorInfo(Out,&info);}intsharp[4][12]={0,1,1,0,1,1,1,2,2,0,2,2},{0,0,0,2,1,0,1,1,1,2,2,1},{0,1,0,2,1,0,1,1,2,1,2,2},{0,0,0,1,1,1,1,2,2,0,2,1},};// 此数组用来保存坦克各个方向的形状信息DWORDWINAPIBulletfly(LPVOIDlpParameter);// 子弹函数申明voidUpdata();// 更新界面信息函数申明classTank// 坦克类{private:intDirection;// 方向inthotpoint[2];// 活动点intSpeed;// 速度intFirePower;// 火力public:Tank(intdir,inthot1,inthot2,inttyp,intspe,intfirepow)// 构造函数{Direction=dir;hotpoint[0]=hot1;hotpoint[1]=hot2; }Type=typ;Speed=spe;FirePower=firepow;}intType;// 坦克的种类(详见宏定义) intID;// 坦克在MAP中的标记(详见宏定义) intFireEnable;// 是否可以开火intLife;// 生命值voidRunning();// 运行函数intJudge(intx,inty,intID);// 判断是否可以绘制坦克voidDrawTank();// 重绘坦克voidRedraw();// 擦除坦克intGetSpeed()// 获取速度{returnSpeed;}intGetFire()// 获取火力{returnFirePower;}intGetDirection()// 获取方向{returnDirection;}intGetHotX()// 获取活动点坐标{returnhotpoint[0];}intGetHotY(){returnhotpoint[1];}voidIncreaseFire()// 火力+{FirePower++;}voidIncreaseSpeed()// 速度+{Speed++;}voidChangeDirection(intnewD)//改变方向{Direction=newD;}voidChangePos(intx,inty)// 改变活动点{hotpoint[0]=x;hotpoint[1]=y;}};Tankplayer(Right,0,0,Normal,1,1);// 玩家Tankenemy(Left,20,0,Red,1,1);// 敌人voidTank::DrawTank()// 绘制坦克{inti;intnx,ny;if(Type==Red)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_RED);elseif(Type==Blue)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_BLUE);elseif(Type==Green)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_GREEN);elseif(Type==Normal)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREG R OUND_BLUE);for(i=0;i<6;i++){nx=hotpoint[0]+sharp[Direction][i*2]; ny=hotpoint[1]+sharp[Direction][i*2+1];SetPos((ny+1)*2,nx+1);// 利用sharp 数组相对于点x,y 绘制形状map[nx][ny]=ID;cout<<" ■ ";}}voidTank::Redraw()// 擦除坦克,原理同上{inti;intnx,ny;}for(i=0;i<6;i++){ nx=hotpoint[0]+sharp[Direction][i*2]; ny=hotpoint[1]+sharp[Direction][i*2+1];map[nx][ny]=Empty;SetPos((ny+1)*2,nx+1); cout<<"";}}intTank::Judge(intx,inty,intdir)// 判断当前是否可以绘制坦克{inti;intnx,ny;for(i=0;i<6;i++){ nx=x+sharp[dir][i*2]; ny=y+sharp[dir][i*2+1];if(nx<0||nx>=23||ny<0||ny>=23||map[nx][ny]!=Empty)// 不能绘制,返回 1 return1;return0;}voidTank::Running()// 坦克运行函数{intnewD;// 坦克的运行while(1){if(Life==0){EnemyExist=0;// 敌人不存在return;} if(GameOver==1)return;if(FireEnable==1&&GameOver==0)// 如果可以开火{WaitForSingleObject(Mutex,INFINITE);// 线程拥有互斥对象FireEnable=0;// 设为不可开火HANDLEbullet=CreateThread(NULL,0,Bulletfly,&ID,0,NULL);/ / 创建子弹线程}}}CloseHandle(bullet); ReleaseMutex(Mutex);// 释放互斥对象Sleep(100);}WaitForSingleObject(Mutex,INFINITE);// 线程拥有互斥对象srand((int)time(0));newD=rand()%4;if(newD==Up)// 随机出新的方向并重新绘制坦克{Redraw();if(Judge(hotpoint[0]-1,hotpoint[1],newD)==0){hotpoint[0]--;Direction=newD;}else{if(Judge(hotpoint[0],hotpoint[1],newD)==0) Direction=newD;elseif(newD==Down){Redraw();if(Judge(hotpoint[0]+1,hotpoint[1],newD)==0) {hotpoint[0]++; Direction=newD;}else{ if(Judge(hotpoint[0],hotpoint[1],newD)==0)Direction=newD;}}elseif(newD==Left){Redraw();if(Judge(hotpoint[0],hotpoint[1]-1,newD)==0) {hotpoint[1]--; Direction=newD;}else{if(Judge(hotpoint[0],hotpoint[1],newD)==0) Direction=newD; }}elseif(newD==Right){Redraw();if(Judge(hotpoint[0],hotpoint[1]+1,newD)==0){hotpoint[1]++;Direction=newD;}else{if(Judge(hotpoint[0],hotpoint[1],newD)==0) Direction=newD; }}if(GameOver==0&&Life!=0)DrawTank();ReleaseMutex(Mutex);// 释放互斥对象 Sleep(500-80*Speed);}}/*********************DWORDWINAPIBulletfly(LPVOIDlpParameter){int*ID=(int*)lpParameter;//ID 用来获取发射子弹坦克的 intPos[2];// 子弹活动点 intdirection; intSpeed; inttype;inthit=0;// 击中标记intoldx,oldy;// 旧活动点 intflag=0;// 子弹是否有移动的标记 if(*ID==Player)// 如果是玩家坦克 {type=PlayerBullet; direction=player.GetDirection(); Speed=player.GetFire(); Pos[0]=player.GetHotX(); Pos[1]=player.GetHotY();子弹线程函数IDelseif(*ID==Enemy)// 如果是敌人坦克{type=EnemyBullet;direction=enemy.GetDirection();Speed=enemy.GetFire();Pos[0]=enemy.GetHotX();Pos[1]=enemy.GetHotY();}if(direction==Up)// 根据坦克的位置和方向确定子弹的初始坐标{Pos[0]--;Pos[1]++;}elseif(direction==Down){Pos[0]+=3;Pos[1]++;}elseif(direction==Left)Pos[0]++;Pos[1]--;}elseif(direction==Right){{Pos[0]++;Pos[1]+=3;}// 子弹的运行while(1){WaitForSingleObject(Mutex,INFINITE);//这个不再注释了。
大学C语言程序设计大作业题目
1数据处理系统一、软件开发目的该软件主要是使用C语言设计开发数据处理程序,实现对数据的排序、查找、插入、计算、输出等功能。
二、数据结构定义一个11*10的二维数组。
三、软件功能说明1.生成100个随机数:调用库函数rand()或random()产生100个随机数,并存储在二维数组中的前十行。
2.选择法排序:用选择法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
3.冒泡法排序:用冒泡法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
4.插入法排序:用插入法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
5.查找数据:输入待查找数据, 在二维数组中逐个查找,若找到输出数据所在位置的行列号,若无该数值则输出“无此数”。
6.转换二进制:将数组中数据转换为二进制并转存到另一数组中输出。
7.转换为素数之和:对于原数组中的数进行判断:若为偶数,则表示成两个素数的和,并输出。
8.插入数据:输入一个数,将该数插入原数组中,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。
9.删除数据输入一个数,若原数组中存在该数,则删除该数,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。
10.退出系统,结束任务。
四、软件验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
系统菜单功能项:1生成100个随机数2选择法排序3冒泡法排序4插入法排序5查找数据6转换二进制7转换为素数之和8插入数据9删除数据10退出系统注意:要求每执行一个具体的功能之后,程序将重新显示菜单。
2.系统要有一定的可靠性、稳定性,能够实现各功能模块。
2图书借阅管理系统一、软件开发目的该软件主要是使用C语言设计开发一个简单的图书借阅管理系统,实现对图书的借书,还书的管理和数据统计。
C语言程序设计大作业--图书管理系统
C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
C语言大作业_电话号码管理系统设计
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define N 100void input();//添加新用户void amend();//修改用户信息void delete_client();//删除用户信息void search_client();//用户信息查询void collect_telephone();//所有用户信息void save_client(struct telephone message);//保存void search_name();//按用户名查询void search_telephone();//按电话号码查询void goodbye();//退出提示struct telephone{char client_name[20];char client_address[30];char client_telephone[15];};void main(){char choice[10]="";int len=0;while (choice[0]!='7'){system("cls");printf(" ◢◤〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓◥◣");printf("\n ◢◤〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓◥◣");printf("\n █===┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓===█");printf("\n █===┠欢┨┠迎┨┠使┨┠用┨┠电┨┠话┨┠管┨┠理┨┠系┨┠统┨===█");printf("\n █===┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛===█");printf("\n ◥◣〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓◢◤");printf("\n ◥◣〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓◢◤\n");printf(" ★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");printf(" ┃| | | ┃\n");printf(" ┃ 1、 | 用户信息查询 | 2、 | 所有用户信息┃\n");printf(" ┃| | | ┃\n");printf(" ┃=========|════════════|========|════════════┃\n");printf(" ┃| | | ┃\n");printf(" ┃ 3、 | 删除用户信息 | 4、 | 添加用户┃\n");printf(" ┃| | | ┃\n");printf(" ┃=========|════════════|========|════════════┃\n");printf(" ┃| | | ┃\n");printf(" ┃ 5、 | 修改用户信息 | 6、 | 退出系统┃\n");printf(" ┃| | | ┃\n");printf(" 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");printf("\n 请选择(1-6):");scanf("%s",choice);len=strlen(choice);if (len>1){printf("\n 请输入1-6之间的整数\n");printf("\n 按回车键返回主菜单\n");getchar();getchar();continue;}switch (choice[0]){case '1':search_client();break;case '2':collect_telephone();break;case '3':delete_client();break;case '4':input();break;case '5':amend();break;case '6':goodbye();break;default:break;}}}//添加新用户void input(){struct telephone message;char reply='y';char save='y';while (reply=='y'){system("cls");printf("\n 用户姓名:");scanf("%s",message.client_name);printf("\n 家庭住址:");scanf("%s",message.client_address);printf("\n 电话号码:");scanf("%s",message.client_telephone);printf("\n 要保存吗?(y/n):");scanf(" %c",&save);if (save=='y'){save_client(message);}printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}printf("\n 按回车键返回主菜单\n");getchar();getchar();}//保存void save_client(struct telephone message){FILE *fp;fp=fopen("message.dat","a+");if (fp!=NULL){fwrite(&message,sizeof(struct telephone),1,fp);}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);}//修改用户信息void amend(){struct telephone message;FILE *fp;char amend_name[20];char reply='y';char found='y';char save='y';int size=sizeof(struct telephone);while (reply=='y'){found='n';fp=fopen("message.dat","r+w");if (fp!=NULL){system("cls");printf("\n 请输入你要修改的姓名:");scanf("%s",amend_name);while ((fread(&message,size,1,fp))==1){if ((strcmp(amend_name,message.client_name))==0){found='y';break;}}if (found=='y'){printf("\n 修改用户信息\n");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃ %-16s┃",message.client_name);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃家庭地址┃ %-16s┃",message.client_address);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃电话号码┃ %-16s┃",message.client_telephone);printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");printf("\n 修改用户信息:\n");printf("\n 用户姓名:");scanf("%s",message.client_name);printf("\n 家庭住址:");scanf("%s",message.client_address);printf("\n 电话号码:");scanf("%s",message.client_telephone);printf("\n 是否保存?(y/n):");scanf(" %c",&save);if(save=='y'){fseek(fp,-size,1);fwrite(&message,sizeof(struct telephone),1,fp);}}else{printf("\n 无此信息!\n");}}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}printf("\n 按回车键返回主菜单\n");getchar();getchar();}//删除用户信息void delete_client(){struct telephone message[N];struct telephone temp_str;struct telephone delete_str;int i=0,j=0;char reply='y';char found='y';char confirm='y';char delete_name[20];FILE *fp;while (reply=='y'){system("cls");fp=fopen("message.dat","r");if (fp!=NULL){i=0;found='n';printf("\n 请输入你要删除的姓名:");scanf("%s",delete_name);while ((fread(&temp_str,sizeof(struct telephone),1,fp))==1){if((strcmp(delete_name,temp_str.client_name))==0){found='y';delete_str=temp_str;}else{message[i]=temp_str;i++;}}}else{printf("\n 无此信息,按回车键返回\n");getchar();return;}fclose(fp);if (found=='y'){printf("\n 用户信息");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃ %-16s┃",delete_str.client_name);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃家庭地址┃ %-16s┃",delete_str.client_address);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃电话号码┃ %-16s┃",delete_str.client_telephone);printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");}else{printf("\n 无此信息,按回车键返回\n");getchar();break;}printf("\n 确定要删除?(y/n):");scanf(" %c",&confirm);if (confirm=='y'){fp=fopen("message.dat","w");if (fp!=NULL){for(j=0;j<i;j++){fwrite(&message[j],sizeof(struct telephone),1,fp);}printf("\n 记录已删除\n");}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);}printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}getchar();}//用户信息查询void search_client(){int choice=1;while (choice!=3){system("cls");printf("\n 电话查询菜单\n");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃ 1 ┃按用户姓名查询┃");printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃ 2 ┃按电话号码查询┃");printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃ 3 ┃返回主菜单┃");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");printf("\n 请选择(1-3):");scanf("%d%*c",&choice);if (choice>3){printf("\n 请输入1-3之间的整数(1-3)\n");printf("\n 按回车键返回");getchar();continue;}if (choice==1){search_name();}else if (choice==2){search_telephone();}}}//按用户名查询void search_name(){struct telephone message;FILE *fp;char amend_name[20];char reply='y';char found='y';while (reply=='y'){found='n';fp=fopen("message.dat","r+w");if (fp!=NULL){system("cls");printf("\n 请输入你要查的姓名:");scanf("%s",amend_name);while ((fread(&message,sizeof(struct telephone),1,fp))==1){if ((strcmp(amend_name,message.client_name))==0){found='y';break;}}if (found=='y'){printf("\n 用户信息\n");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃ %-16s┃",message.client_name);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃家庭地址┃ %-16s┃",message.client_address);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃电话号码┃ %-16s┃",message.client_telephone);printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");}else{printf("\n 无此信息\n");}}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}printf("\n 按回车键返回主菜单\n");getchar();getchar();}//按电话号码查询void search_telephone(){struct telephone message;FILE *fp;char telephone[20];char reply='y';char found='y';while (reply=='y'){found='n';fp=fopen("message.dat","r+w");if (fp!=NULL){system("cls");printf("\n 请输入你要查的电话号码:");scanf("%s",telephone);while ((fread(&message,sizeof(struct telephone),1,fp))==1){if ((strcmp(telephone,message.client_telephone))==0){found='y';break;}}if (found=='y'){printf("\n 用户信息\n");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃ %-16s┃",message.client_name);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃家庭地址┃ %-16s┃",message.client_address);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃电话号码┃ %-16s┃",message.client_telephone);printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");}else{printf("\n 无此电话号码信息\n");}}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}printf("\n 按回车键返回主菜单\n");getchar();}//显示所有用户信息函数void collect_telephone(){struct telephone message;FILE *fp;fp=fopen("message.dat","r");if (fp!=NULL){system("cls");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃家庭地址┃电话号码┃");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");while ((fread(&message,sizeof(struct telephone),1,fp))==1){printf(" ┃%-16s┃%-16s┃%-16s┃",message.client_name,message.client_address,message.client_telephone);printf("\n ┃━━━━━━━━┃━━━━━━━━┃━━━━━━━━┃\n");}}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);printf("\n 按回车键返回主菜单\n");getch();}//退出函数void goodbye(){char c;printf(" 真的退出?(y/n):");getchar();if(c=='y'||c=='Y'){system("cls");exit(0);}elseif(c=='n'||c=='N'){printf("\n 按回车键返回\n");getch();}}。
C语言大作业
#include<stdio.h>#include<string.h>#include<stdlib.h> //exit()的头文件#include<conio.h> //屏幕操作函数#define N 100 //控制学生记录的容量#define M 3 //控制课程数#define LEN 9void menu();void browse();typedef struct student //定义学生结构体{char num[11]; //把学号定义成字符数组类型,一来学号可能比较长,二来可直接用strcmp来比较,确保无雷同char name[20];int score[M];double ave;}STU;STU stu[N]; //定义一个外部学生结构体变量/*****以写的方式保存数据到文件的函数【原数据将被覆盖】*****/int save(int n) //保存函数,保存n个记录{FILE *fp;int i;if((fp=fopen("zhouhao.txt","wb"))==NULL)//以二进制写的方式打开,在此前的记录被覆盖{printf("无法打开文件!\n任意键退出程序... ...\n");getch(); //预防闪屏return 0;}for(i=0;i<n;i++)if(stu[i].ave!=0) //在后面的del()函数中通过将stu[i].ave=0来表示该记录被删除了if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)//开始写入文件printf("文件写入发生错误\n");fclose(fp);return 0; // 注意下这个地方,我只是随便赋的值,只是为了消除一个警告}/********【拷贝函数单纯的将一个文件拷贝到另一个文件中】*******/void copy(){char outfile[20],infile[10]; //保存源文件名和目标文件名FILE *sfp,*tfp; //定义指向源文件(sourcefile)和目标文件(targetfile)的指针STU *p=NULL; //定义临时指针,暂存读出的记录system("CLS"); //清屏;printf("请输入需要被复制的文件名(默认数据处理在zhouhao.txt中):\n");scanf("%s",infile); //输入源文件名if((sfp=fopen(infile,"rb"))==NULL)//以二进制方式打开源文件{printf("无法打开文件!\n任意键退出程序... ...\n");//显示不能打开文件的信息getch();return;}printf("另存为...,比如:hao.txt:\n"); //提示输入目标文件名scanf("%s",outfile); //输入目标文件名if((tfp=fopen(outfile,"wb"))==NULL)//以二进制写方式打开目标文件{printf("无法打开文件!\n\n");//显示不能打开文件的信息getch();return; //退出程序,同exit(0)}while(!feof(sfp)) //读文件直到文件尾fputc(fgetc(sfp),tfp); //从stp复制文件到tfpfclose(sfp); //关闭源文件fclose(tfp); //关闭目标文件printf("\n复制成功!!!\n"); //显示拷贝成功信息printf("\n输入任意键返回主菜单");getch();menu();}/***【加载记录或可以计算记录个数的函数】***/int load(){FILE *fp;int i;if((fp=fopen("zhouhao.txt","rb"))==NULL) //以二进制读的方式打开{printf("无法打开文件!\n任意键退出程序... ...\n"); //显示不能打开文件的信息getch(); //预防闪屏return 0;}for(i=0;!feof(fp);i++)fread(&stu[i],sizeof(struct student),1,fp); //将文件数据读入学生结构体fclose(fp);return(i-1); //返回目前总的记录个数,注意是i-1}/***【一个任务结束时的选择浏览还是返回的函数】***/void printf_back(){int w;printf("\n\t操作成功!^_^\n");printf("\t接着干什么?\n\t1).立刻浏览全部数据\t2).返回:[ ]\b\b");scanf("%d",&w);if(w==1)browse();elsemenu();}/***【显示数据结构项目函数】***/void printf_face(){printf("\n\t学号\t姓名\t\t 数学\t 英语C语言平均分\n"); //显示行头}/***【求平均分函数】因为后面在修改数据中要专门重算平均数***/void average(int i){int j,sum;for(sum=0,j=0;j<M;j++)sum+=stu[i].score[j];stu[i].ave=sum*1.0/M;}/*******【学号长度处理函数】********/void no_deal(int i){int j,l,a;l=strlen(stu[i].num);if(l<LEN){for(j=LEN-l,a=0;j<LEN;j++){stu[i].num[j]=stu[i].num[a++];}stu[i].num[i]='\0';for(a=0;a<LEN-l;a++)stu[i].num[a]='0';}if(l>LEN)stu[i].num[l]='\0';}/*******【学号输入函数】*******/int no_input(int i,int n) //i表示第i个学生信息,n表示比较到第n个学生{int j,k,w1;do{w1=0;printf("学号:\t\t 【%d位,低于%d位前面补0,长的截尾处理!】\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",LEN,LEN);scanf("%s",stu[i].num);no_deal(i);for(j=0;stu[i].num[j]!='\0';j++) //学号输入函数,作了严格的规定if(stu[i].num[j]<'0' || stu[i].num[j]>'9') //判断学号是否为数字{puts("别开玩笑!只能输入0——9.好吧,再给你一次机会,别让我失望!\n");w1=1; //这个w1=1,表示学号中输入了不是数字的字符break;}if(w1!=1) //w1!=1,确保验证时学号已经是由0-9的数组成的for(k=0;k<n;k++) //比较到第n个学生if(k!=i && strcmp(stu[k].num,stu[i].num)==0)//判断学号是否有雷同{puts("已经存在啦!重来一次!\n");w1=1; //w1=1,表示学号存在雷同break;}}while(w1==1); //总之,w1=1代表学号输入又问题,要重新输入return 0;}/***【分数输入函数】***/int score_input(int i){int j;for(j=0;j<M;j++){printf("分数%d:",j+1);scanf("%d",&stu[i].score[j]);}return 0;}/***【输入一整条记录的函数】***/void input(int i){no_input(i,i); //调用输入学号的函数printf("姓名:");scanf("%s",stu[i].name); //输入姓名score_input(i); //输入分数average(i); //计算平均分}/***【显示一整条记录的函数】***/void printf_one(int i){int j;printf("%11s %-14s",stu[i].num,stu[i].name); //输出学号和姓名for(j=0;j<M;j++)printf("%9d",stu[i].score[j]); //输出分数printf(" %9.2f\n",stu[i].ave); //输出平均分}/*【显示----函数顶部】*/void topput___(){printf("\n 记录浏览");printf("\n--------------------------------------------------------------------------------\n");}/*【显示----函数底部】*/void puts___(){printf("\n\n--------------------------------------------------------------------------------\n");}/*【修改记录函数】*/int modify_data(int i,int n) //修改数据函数,修改第i个记录{int c,w1;do{puts("\n你想修改什么: =>\n\n1).学号\t2).姓名\t3).数学\t4).英语\t5).C语言\n6).重输所有分数\t7).重输所有记录\t8).取消并返回");printf("想好就输,快:[ ]\b\b");scanf("%d",&c);if(c>8 || c<1)puts("\n选择失误!严肃点,再来一次!");//判断选择是否错误,若是则重新选择getchar(); //当输入时字符时可以防止死循环,觉得这个很重要,老师也没提过}}while(c>8 || c<1);do{switch(c) //选择要修改的项目{case 1:no_input(i,n);break;case 2:printf("姓名:");scanf("%s",stu[i].name);break;//调用学号输入函数case 3:printf("数学:");scanf("%d",&stu[i].score[0]);break;case 4:printf("英语:");scanf("%d",&stu[i].score[1]);break;case 5:printf("C语言:");scanf("%d",&stu[i].score[2]);break;case 6:score_input(i);break;case 7:input(i);break;case 8:menu(); //break; 在最后,有没有无所谓}if(c>2 && c<7)average(i); //由于3,4,5,6项改变的同时也把平均分动了,必须修正一下puts("\n现在:\n");printf_face();printf_one(i); //显示修改后的数据printf("\n你确定你目前的决定?\n\n\t1).当然啦! \t2).不不不,重修改一下!\n\t3).算了还是走吧,别保存了![ ]\b\b");//是否确定scanf("%d",&w1); //选择2则表示这次修改错误要重新修改}while(w1==2);return w1; //返回控制值}/* * * * * * * * * * * * 输入模块* * * * * * * * * * * */void enter(){int i,n;system("CLS"); //引用外部清屏,clrscr()在VC++中不好用printf("输入你要记录的学生数吧:(1~%d)?\t['0'返回]:\n",N);scanf("%d",&n); //要输入的计入个数if(n==0)menu(); //输0 的时候返回else{printf("\n\t好的!开始输入...\n");for(i=0;i<n;i++)printf("\n请输入第%d个的记录.\n",i+1);input(i); //调用输入函数}if(i!=0)save(n); //调用保存函数printf_back();} //一个任务结束时让用户选择是浏览还是返回}/*******************************追加模块*************************************/ int add(){int i,n,m,k;FILE *fp;system("CLS");n=load(); //获得总记录的个数,并加载记录printf("你需要加入多少学生:(0 ~ %d)?:",N-n);scanf("%d",&m); //输入要追加记录的个数if(m==0)menu();else{k=m+n;for(i=n;i<k;i++){printf("\n请输入第%d个的记录.\n",i-n+1);input(i); //调用输入函数}if((fp=fopen("zhouhao.txt","ab"))==NULL)//以ab方式打开,追加保存{printf("文件打不开!\n"); //显示不能打开文件的信息getch();return 0;}for(i=n;i<k;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件写入错误!\n");fclose(fp);printf_back(); //一个任务结束时让用户选择是浏览还是返回}return 0;}/***************************** 修改模块*************************/{struct student s;int i,n,k,w0=0,w1,w2=0;n=load(); //获得总记录的个数,并加载记录do{system("CLS");k=-1;/*****给用户看所有的记录以便用户确认要修改的记录*****/topput___();printf_face();for(i=0;i<n;i++)printf_one(i); //调用显示一个记录的函数puts___();/*****给用户看所有的记录以便用户确认要修改的记录*****/do{printf("\n\n输入你要修改记录的学号! 学号. :\t【'Ctrl-z' 退出】");if(scanf("%s",s.num)!=1) //输入要修改数据的学号menu();for(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.num,stu[i].num)==0){k=i; //找到要修改的记录s=stu[i]; //把stu[i](即把当次修改的学生记录)备份给s,以便用户反悔时恢复}if(k==-1)printf("\n\n不存在! 请重新输入~");}while(k==-1); //当K=-1表示没有找到printf_face(); //调用显示数据结构项目函数printf_one(k); //显示查找的记录w1=modify_data(k,n); //修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改[w1只能是1或3(1代表确认修改,3代表不保存返回)] if(w1==1) //w1=1代表确认修改{printf("\n操作成功!\n\n决定修改别的吗?\n\n\t1).是的\t2).不!保存并返回\t[ ]\b\b");scanf("%d",&w0);w2=1; //来控制保存,使w2=1是标记已有过修改}else //此时w1=3,表示不保存返回{w0=0;if(w2==1) //w2=1表示已有过修改stu[k]=s; //反悔了,将修改前的值复原}if(w0!=1 && w2==1) //w0不等于1则表示正常返回,w2=1表示在此之前有修改过,这时就保存用户已确认修改的并返回save(n); //w2不等于1表示在此之前没有修改过,而又反悔这次修改,则不保存,保存时覆盖原先数据}while(w0==1);menu(); //返回主菜单}/*******************************删除模块*************************/void del(){struct student s;int i,k,n,c,w0=1;system("CLS");n=load(); //获得总记录的个数,并加载记录do{system("CLS");k=-1;/*给用户看全部记录以便确认要删除的记录*/topput___();printf_face(); //调用显示数据结构项目的函数for(i=0;i<n;i++)if(stu[i].ave!=0)printf_one(i); //显示所有数据puts___();/*给用户看全部记录以便确认要删除的记录*/do //输入要删除记录的学号,并寻找{printf("\n\n输入你要删除记录的学号! NO.:\t【'Ctrl-z' 退出】");if(scanf("%s",s.num)!=1)menu();for(i=0;i<n;i++)if(strcmp(s.num,stu[i].num)==0){k=i; //重赋k值表示找到寻找的数据s=stu[i];}if(k==-1) //k=-1表示没找到相同的printf("\n\n不存在! 请重新输入!");}while(k==-1);puts("\n");printf_face();printf_one(k); //显示要删除的记录printf("\n你确定?\n\t1).确定2).不,我要删除其他的3).不保存退出[ ]\b\b");//给用户一次反悔的机会scanf("%d",&c);if(c==1){stu[k].ave=0; //这是很重要的,通过stu[k].ave=0,通知保存的时候忽略掉,不进行保存printf("\n\n操作成功!\n\n要继续删数据吗?\n\t1).继续2).返回主菜单\t[ ]\b\b");scanf("%d",&w0);}if(c==3)w0=0; //w0=0不删除直接返回if(w0!=0 && c!=3) //只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的记录save(n);}while(w0==1);menu();}/**************************************浏览(全部)模块*****************************************/void browse(){int i,n;n=load(); //获得总记录的个数,并加载记录system("CLS");topput___();printf_face(); //调用显示数据结构项目的函数for(i=0;i<n;i++) //循环输出所有学生的信息printf_one(i);puts___();printf("\n\t 这里一共有%d 个记录!\n",n);printf("\n\t 输入任意键返回主菜单... ...");getch();menu();}/*******************************查找模块************************************/ void search(){int i,n,k,w1=1,w2,w3,w4;struct student s;system("CLS");n=load(); //获得总记录的个数,并加载记录do{do{k=-1;printf("\n\n输入你要查找记录的主人公! 姓名:");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,stu[i].name)==0){k=i;printf_one(k); //考虑到同名的情况,可能输出不只一个,把所有的记录都查找一下}if(k==-1) //k=-1表示没找到相同的{printf("\n\n不存在! 请重新输入!");printf("\n\n要继续吗?\n\t1).继续\t 2).不,我要返回\t[ ]\b\b");scanf("%d",&w1);}}while(k==-1 && w1!=2); //k=-1表示没找到要查找的对象,w1!=2表示继续查找w4=w3=0; //初始化w4=w3=0if(k!=-1){printf("\n\n接着干什么?\n\t1).再次查找2).修改3).删除4).返回主菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 2:w3=modify_data(k,n);break;case 3:{printf("\n\n你确定了吗?\n\t1).确定2).不,还是返回吧! \t[ ]\b\b");scanf("%d",&w4);if(w4==1) //w4=1,表示确定删除stu[k].ave=0; //表示删除,当stu[k].ave=0,在save()中就不保存该数据,表示删除break;}}if(w3==1 || w4==1){save(n);printf("\n\n操作成功!");printf("\n\n接着干什么?\n\t1).再次查找2).返回[ ]\b\b");scanf("%d",&w2);}}}while(w2==1);menu();}/*******************************排序模块(按平均成绩)*********************************/void order(){int i,j,k,n;struct student s;system("CLS"); //清屏n=load(); //获得总记录的个数,并加载记录for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(stu[j].ave>stu[k].ave) //选择法排序,按平均分降序k=j;s=stu[i];stu[i]=stu[k];stu[k]=s;}save(n);puts("\n\n");printf_back();}/**********************************主界面************************************/ void menu(){int n,w1;do{system("CLS");;puts("\n\t\t\t\t学生信息管理系统\n");puts("\t ------- 周浩\n");puts("\t ************************ 主菜单*********************\n\n");puts("\t\t\t 1.初始数据输入(会覆盖已有数据)");puts("\t\t\t 2.可选择个数的数据添加");puts("\t\t\t 3.数据部分修改");puts("\t\t\t 4.数据部分删除");puts("\t\t\t 5.数据查看与浏览");puts("\t\t\t 6.数据查找(按姓名)");puts("\t\t\t 7.数据排序(按平均分降序)");puts("\t\t\t 8.已有文件文件拷贝");puts("\t\t\t 0.退出系统");puts("\n\n\t ****************************************************\n");printf("\t输入你的选择(0~8):[ ]\b\b");scanf("%d",&n);if(n<0 || n>8){w1=1;printf("\t你的选择不再0 到8 之间,按任意键重新输入!");getch();}elsew1=0;}while(w1==1);switch(n){case 1:enter();break;case 2:add();break;case 3:modify();break;case 4:del();break;case 5:browse();break;case 6:search();break;case 7:order();break;case 8:copy();break;case 0:exit(0);break;}}/************************************主函数***************************************/void main(){menu();}。
c语言用while语句写月历程序大作业
《探究C语言中while语句写月历程序的深度与广度》近年来,随着计算机编程领域的迅速发展,C语言作为一门经典而重要的编程语言,一直备受关注。
而在C语言的学习过程中,编写月历程序作为一个经典的大作业也备受关注。
本文将深入探究C语言中使用while语句来写月历程序的深度与广度,并将共享个人观点和理解。
1. 月历程序的基本概念我们需要明确月历程序的基本概念。
月历程序是指能够输出指定年份指定月份的日历的程序,它需要考虑到每个月的天数以及每周的起始日期等因素。
在C语言中,我们通常使用while循环来实现这一功能,月历程序也成为了C语言中while语句的一个经典应用之一。
2. 深度探究while语句的使用接下来,我们将深度探究while语句在月历程序中的使用。
使用while 语句编写月历程序需要考虑到很多细节,例如如何确定每个月的天数、如何输出日历表格等。
在这个过程中,我们需要使用while循环来处理每个月的天数,同时不断更新日期,直到输出完整的日历。
这种深度的应用不仅考验了编程者对while语句的掌握程度,同时也需要考虑到程序的效率和可读性。
3. 广度展示月历程序的实现除了深入探究while语句的使用外,我们也需要广度展示月历程序的实现。
月历程序需要考虑到用户输入的年份和月份,因此我们需要使用while循环来不断接收用户输入,并根据用户的指定日期来输出对应的月历。
在这个过程中,我们还需要考虑到用户可能的非法输入以及程序的健壮性等方面。
月历程序的实现不仅需要考虑到核心的日历输出功能,同时也需要考虑到程序的用户友好性和稳定性。
4. 个人观点与理解我想共享一下我的个人观点与理解。
在学习C语言过程中,通过编写月历程序来深入理解while语句的使用,不仅能够提升编程能力,同时也能够锻炼我们对细节的处理能力和对程序整体结构的把握能力。
在实际应用中,while语句作为一个重要的循环结构,能够为我们解决很多实际问题,并且在不断实践中提升我们的编程水平。
国家开放大学2023春马克思主义基本原理概论-试题C大作业终考任务参考答案
国家开放大学2023春《马克思主义基本原理概论-试题C》大作业终考任务参考答案一、论述题(本题共1小题,每小题100分,共100分。
)1.经过几十年积累,我们站到了新的起点上,进入了新发展阶段。
但是,新发展阶段仍是社会主义初级阶段中的一个阶段,我们仍处于并将长期处于社会主义初级阶段的基本国情没有变。
理论联系实际,为什么说社会主义建设是一个长期的过程?答:社会主义初级阶段是指从资本主义向共产主义过渡的特定历史阶段。
在中国,由于历史、经济、文化等多种因素的影响,我国长期处于社会主义初级阶段的基本国情。
下面将从理论与实际两个方面阐述这一问题。
一、全面深入理解社会主义初级阶段在社会主义初级阶段,社会主义国家要经历许多复杂的社会经济变革和政治斗争。
在这个阶段,虽然国家掌握了社会主义经济的生产资料,但生产力还比较落后、不发达,生产关系还不能完全满足生产力的发展需要,在经济、文化等各个方面都有比较大的差距和不足。
因此,社会主义初级阶段的基本国情有以下特点:1.发展不平衡。
社会主义初级阶段,中国的经济发展不平衡,区域之间的差距较大,城乡差别也很明显。
国家在发展经济时需要面临城乡、地区之间的差异,需要实行一些不同的政策。
2.技术含量低。
中国在社会主义初级阶段,技术含量较低,一些重要产业如钢铁、石油、化工、航空、航海等都不够发达。
国家在争取发展经济的同时需要加强技术革新。
3.劳动力素质低。
在社会主义初级阶段,劳动力素质还相对较低,教育事业还有很大的发展空间。
因此,社会主义国家需要加大对教育事业的投资,提高劳动力素质。
4.社会主义建设必须以人民为中心。
社会主义初级阶段,社会主义国家必须把人民的利益放在首位,必须依靠人民群众,集中全国力量进行经济建设和国防建设,保证国家长治久安。
但是,需要注意的是,社会主义初级阶段并不是社会主义发展的终点,而是从资本主义过渡到共产主义的重要历史阶段。
在这个阶段,中国社会主义建设的实践经验丰富,包括知识分子的参与问题、城乡发展不平衡问题、生产力和生产关系的矛盾、农业机械化以及工业化等问题。
C语言程序设计课程大型作业答辩
设置鼠标的移动范围
SetMouseArea(int x0,int y0,int x1,int y1) { union REGS regs;
regs.x.ax=7;regs.x.cx=x0;regs.x.dx=x1; int86(0x33,®s;®s); regs.x.ax=8;regs.x.cx=y0;regs.x.dx=y1; int86(0x33,®s,®s); }
鼠标简介
鼠标系统实际上由两个主要元素组成: 鼠标机制和称作鼠标驱动程序的内存驻 留程序。鼠标驱动程序提供与鼠标通信 所需的全部低级支持。此外,它自动维 持鼠标光标位置和发现是否按下了某个 键。一旦装入驱动程序,鼠标就可以被 随后执行的任意程序使用。
鼠标简介续
可以通过PC中断33H访问鼠标和鼠标驱 动程序的各种功能。所选择的特定函数 依赖于中断时AX寄存器的值。三个其它 寄存器(BX、CX和DX)用于把各种参数 传送给鼠标例程。同样,鼠标函数使用 这四个寄存器把鼠标的位置和按钮的状 态返回给调用函数。
取得字节某一位的值
int getbit(unsigned char byte,int bit) { if(bit<0||bit>7)
return 0; return (byte>>bit)&0x1; } 函 数 getbit 用 于 得 出 一 个 字 节 中 每 个 位 (bit)是0还是1。
显示24点阵的汉字
• 提交开发文档,说明程序的主要模块及功能、 主要数据结构及意义、程序采用的核心算法及 实现方式、小组成员的分工及完成情况
C语言高级实验班小组登记表格 小组名称
c大作业书写标准模板
班级名称:___________________ 指导老师:吴艳__________________ 实验名称:石头剪子布游戏实验成绩:______________ 实验日期:5月30日一6月24日学号: ______________ 实验学时:8学时 _________________ 姓名: _______________________ 一、实验目的利用所学习的C++知识,完成功能相应完整的系统的设计开发。
运用面向对象的编程思想开发设计程序。
二、准备内容1. 完成小型系统的设计开发,将主要部分进行注释。
2. 演示系统,演示过程中必须讲解出模块思想。
3. 回答老师的提问。
三、实验内容自已编写类的:写代码,得分点处要用注释标注做实验指导书的:写代码,每个功能模块用注释标注,每个类用注释标注,循环、判断、SWITCH语句用注释标注出来做游戏的:写代码,每个类用注释标注,循环、判断、SWITCH语句用注释标注出来。
将自己修改的地方标注出来。
在此次大作业中, 我学习设计一个石头剪子布游戏的程序分析, 源代码及如下:#include "iostream.h" // 文件包含命令#include<string.h> // 字符处理#include <stdlib.h> #include <ctime> // 时间函数#include<conio.h> // 获取字符int temp,ying,shu,ping; // 定义全局变量int main1(int n1) // 定义函数, 实现产生srand((unsigned)time(0)); // 以时间稳准, 产生随机数n1=rand()%3; // 产生,0,1,2 三个随机数return n1; // 将产生的数返回//主函数入口int main()int now1;资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。
c程序设计大作业
c程序设计大作业C程序设计大作业C程序设计是一门实践性很强的课程,大作业是检验学生对C语言掌握程度的重要方式。
本次大作业的目的在于通过实际编程练习,加深对C 语言基础语法、数据结构、算法设计和程序调试等方面的理解,同时培养学生的编程思维和解决实际问题的能力。
一、大作业要求1. 题目选择:学生可以从以下题目中任选一题完成:- 学生信息管理系统- 图书馆管理系统- 简易计算器- 字符串处理工具- 图形界面的五子棋游戏2. 功能实现:每个题目都应实现基本功能,例如:- 学生信息管理系统:添加、删除、修改、查询学生信息。
- 图书馆管理系统:图书借阅、归还、查询等。
- 简易计算器:实现基本的加减乘除运算。
- 字符串处理工具:实现字符串的复制、连接、查找、替换等操作。
- 图形界面的五子棋游戏:实现基本的下棋逻辑和胜负判断。
3. 代码规范:代码应遵循良好的编程规范,包括但不限于:- 明确的函数分工,每个函数应有简短的注释说明其功能。
- 变量命名应清晰,避免使用无意义的缩写。
- 代码结构清晰,逻辑性强。
4. 文档编写:提交的作业应包括:- 程序设计说明书:介绍程序的功能、设计思路、实现过程等。
- 源代码:按照题目要求编写的C语言代码。
- 用户手册:简要说明如何使用程序。
5. 提交方式:所有材料应以电子文档形式提交,包括设计说明书、源代码和用户手册。
二、大作业流程1. 选题:学生在教师的指导下选择适合自己能力的题目。
2. 需求分析:明确程序需要实现的功能和性能要求。
3. 设计:设计程序的总体结构和各个模块的详细设计。
4. 编码:根据设计文档编写程序代码。
5. 测试:对编写的程序进行测试,确保功能正确无误。
6. 调试:根据测试结果进行必要的调试,修正程序中的错误。
7. 文档编写:编写程序设计说明书和用户手册。
8. 提交:按照要求提交所有材料。
三、评分标准1. 功能实现:程序是否实现了题目要求的所有功能。
2. 代码质量:代码是否规范、清晰、易读。
开放大学2023春马克思主义基本原理概论试卷C大作业终考任务参考答案
国家开放大学2023春《马克思主义基本原理概论-试题C》大作业终考任务参考答案一、论述题(本题共1小题,每小题100分,共100分。
)1.经过几十年积累,我们站到了新的起点上,进入了新发展阶段。
但是,新发展阶段仍是社会主义初级阶段中的一个阶段,我们仍处于并将长期处于社会主义初级阶段的基本国情没有变。
理论联系实际,为什么说社会主义建设是一个长期的过程?答:由于经济文化相对落后,率先进入社会主义社会的俄国、中国以及其他国家不可避免地遇到了一系列困难与问题,使这些国家的社会主义建设不能不具有长期性。
第一,生产力发展状况的制约。
在一个相当长的历史时期内,社会主义国家在经济上落后于发达资本主义国家,有的甚至落后很远。
这就决定了在社会主义制度下必须把大力发展生产力作为根本任务,努力完成别的国家在资本主义条件下实现的工业化和生产社会化、商品化、现代化的艰巨任务。
完成这个任务,赶上和超过发达资本主义国家,无疑需要很长时间的努力,进行艰苦的探索和奋斗。
第二,经济基础和上层建筑发展状况的制约。
由于社会主义首先在经济文化相对落后的国家取得胜利,发展公有经济,改造小农经济,建立、巩固和完善社会主义的经济基础,就成为无产阶级政权的一项十分艰巨的任务。
同时,经济文化的相对落后也必然会影响社会主义民主政治建设的进程。
社会主义消灭了剥削阶级,但这并不是说这种民主一开始就达到了尽善尽美的地步。
社会主义民主政治建设受到这些国家的经济、政治、文化条件的严重制约,面临许多现实问题和困难,将是个长期的过程。
建设社会主义的先进文化,实现真正的社会公正和平等,从而为人类的崇高理想—共产主义社会准备充分的物质条件和精神条件,同样需要经过长期艰苦的努力才能实现。
第三,国际环境的严峻挑战。
一国或几国的社会主义革命取得胜利以后,社会主义国家尚处于强大的资本主义世界的包围之中,受到资本主义列强的遏制和扼杀,面临异常严峻的国际环境。
第四,马克思主义执政党对社会主义发展道路的探索和对社会主义建设规律的认识,需要一个长期的过程。
是男人就下层C编程实例大作业
精心整理C++大作业是男人就下100层编程实例打开VC++6.0,创建一个win32application工程,名字随便取,新建一个C++sourcefile文件复选添加到工程选项在C++sourcefile添加如下代码intTJieTi[DLou+1];//阶梯的个性数据constintVY_JieTi=5;constintRefreshTime=100;//刷新时间constintAY_Num=5;constintVX_Num=20;constintVY_TH=26;intzt=0;//游戏是否开始=0等待开始=1正在进行中=2结束了staticcharText[100];constintFixTime=12;//计算时间片intVX=0;//X方向速度constintManHeight=16;//角色的高度constintDYLou=5;//楼层Y方向均分数constintDJieTi=10;//每层分数constintDXJieTi=3;//阶梯X方向均分数constintVX_TS=3;intvx_ts=0;intLife=10;//角色的生命值intNum=0;intNum_time;staticHBITMAPRoleBmp;{hInst=hInstance;staticTCHARszAppName[]=TEXT("DisplayWithScrollBar"); staticTCHARszClassName[]=TEXT("DisplayWithscrlBarClass"); MSGmsg;WNDCLASSwndclass;wndclass.style=CS_HREDRAW|CS_VREDRAW;wndclass.lpfnWndProc=WndProc;wndclass.cbClsExtra=0;wndclass.cbWndExtra=0;wndclass.hInstance=hInstance;//{}//hwnd=CreateWindow(szClassName,TEXT("是男人就下100层"),//创建窗口时,添加了WS_VSCROLL风格,以增加垂直滚动条WS_OVERLAPPEDWINDOW,50,100,420,571,NULL,NULL,//////{}returnmsg.wParam;}LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam) {RECTrect;staticHDChdc,hdc_Role,hdc_JieTi,hdc_lp,hdc_dz;staticHDCMemDC;PAINTSTRUCTps;inti,j;staticHPENhpen_black,hpen_blue,hpen_red,hpen_gray; staticHBRUSHhbrush_black,hbrush_blue,hbrush_red,hbrush_gray;{/*DChdc_dz=CreateCompatibleDC(hdc);MemDC=CreateCompatibleDC(hdc);/*初始化临时画布必须*/hMemBmp=CreateCompatibleBitmap(hdc,nClientWidth,nClientHeight); SelectObject(hdc_Role,hMemBmp);SelectObject(hdc_JieTi,hMemBmp);SelectObject(hdc_lp,hMemBmp);SelectObject(hdc_dz,hMemBmp);/*载入人物的图片*/RoleBmp=(HBITMAP)LoadImage(hInst,"Res\\man.bmp",DingZiBmp=(HBITMAP)LoadImage(hInst,"Res\\dingzi.bmp", IMAGE_BITMAP,0,0,LR_LOADFROMFILE);Init();return0;caseWM_PAINT:hdc=BeginPaint(hwnd,&ps);SelectObject(hdc,hpen_black);SetTextColor(hdc,RGB(207,49,211));SetBkMode(hdc,TRANSPARENT);sprintf(Text,"LIFE:%2d第%8d层,作者:核桃(QQ:)",Life,Num);/*/*/*ight,NULL);LineTo(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameWindowH eight);MoveToEx(hdc,(GameWindowWidth-GameMainWidth)/2,GameTopHeight,NULL);LineTo(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameTopHeig ht);MoveToEx(hdc,(GameWindowWidth-GameMainWidth)/2,GameWindowHeight-GameMain Height,NULL);LineTo(hdc,GameWindowWidth-(GameWindowWidth-GameMainWidth)/2,GameWindowH*//*/*{}{MoveToEx(hdc,(GameWindowWidth-GameMainWidth)/2+(i+1)*GameMainWidth/DJieT i,GameWindowHeight-GameMainHeight,NULL);LineTo(hdc,(GameWindowWidth-GameMainWidth)/2+(i+1)*GameMainWidth/DJieTi, GameWindowHeight);}*//*开始载入人物*/SelectObject(hdc_Role,RoleBmp);BitBlt(hdc,OManX,OManY,16,16,hdc_Role,0,0,SRCCOPY); /*开始载入左右边带动条*//*/*{if(CJieTi[i]==0){SelectObject(hdc_JieTi,JieTiBmp[0]);//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE);BitBlt(hdc,XJieTi[i],YJieTi[i],WJieTi[i],HJieTi[i],hdc_JieTi,0,0,SRCCOPY );}elseif(CJieTi[i]==1){);}{);}{SelectObject(hdc_JieTi,JieTiBmp[3]);//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE);BitBlt(hdc,XJieTi[i],YJieTi[i],WJieTi[i],HJieTi[i],hdc_JieTi,0,0,SRCCOPY );elseif(CJieTi[i]==4){SelectObject(hdc_JieTi,JieTiBmp[4]);//BitBlt(MemDC,0,0,16,16,hdc_Role,0,0,NOTSRCERASE););}else{OPY);}}//释放ReleaseDC(hwnd,hdc_JieTi);ReleaseDC(hwnd,hdc_lp);ReleaseDC(hwnd,hdc_dz);ReleaseDC(hwnd,MemDC);if(zt==0)SetBkColor(hdc,RGB(0,0,0)); SetBkMode(hdc,OPAQUE);sprintf(Text,"按任意键开始游戏"); TextOut(hdc,125,250,Text,16);}{}//时间函数,重难点for(i=0;i<=DLou-1;i++){YJieTi[i]-=VY_JieTi;if(CJieTi[i]==3||CJieTi[i]==4)TJieTi[i]++;if(TJieTi[i]==3) TJieTi[i]=0;}}elseLife=0;/*最难的人物处理函数*/ IsJiaCeng();FixMan();if(Life==0)KillTimer(hwnd,1);zt=2;}InvalidateRect(hwnd,NULL,true);{zt=1;}{{caseVK_LEFT:VX=-VX_Num;break; caseVK_RIGHT:VX=VX_Num;break; }}return0;caseWM_KEYUP:switch(wParam){caseVK_LEFT:VX=0;break;caseVK_RIGHT:VX=0;break;}}}{inti;/*最难的碰撞部分已经解决*/for(i=0;i<DLou;i++){if(OManY+ManHeight<YJieTi[i]+VY_JieTi&&ManY+ManHeight>YJieTi[i]&&JiaoY== 0)JiaoX=OManX+int(float((YJieTi[i]+VY_JieTi-OManY-ManHeight)*(ManX-OManX)) /float(ManY-OManY+VY_JieTi));if(JiaoX>XJieTi[i]+WJieTi[i]||JiaoX+ManWidth<XJieTi[i]){JiaoX=0;}else{pz=i;}{{VY=10;AY=AY_Num;VX=0;pz=DLou;pztime=0;vx_ts=0;}else{AY=0;pz=i;}}}{}else{OManX=JiaoX; OManY=JiaoY; }if(pz!=DLou) on(pz);sprintf(Text,"%d%d",pz,CJieTi[pz]); return0;}/*步上阶梯的函数*/inton(intk){/*{{VY=0;pztime=0;}else{OManY=YJieTi[i]-ManHeight;VY=-VY_JieTi;AY=0;pz=i;pztime++;}}/*{AY=0;}/*{VY=-VY_JieTi;vx_ts=VX_TS;AY=0;}/*碰上弹簧,已经解决*/elseif(CJieTi[i]==1){OManY=YJieTi[i]-ManHeight; VY=-VY_TH;VX=0;}/*{AY=0;}/*碰上蓝色板部分,已经解决*/ else{OManY=YJieTi[i]-ManHeight; VY=-VY_JieTi;if(pztime==1&&Life>0&&Life<10) Life++;}return0;}/*{{{WJieTi[i]=WJieTi[i+1];CJieTi[i]=CJieTi[i+1];LJieTi[i]=LJieTi[i+1];TJieTi[i]=TJieTi[i+1];if(pz!=DLou&&pz>0)}j=rand()%DJieTi;if(j==0||j==1||j==2||j==3)CJieTi[DLou-1]=0;elseYJieTi[DLou-1]=YJieTi[DLou-2]+GameMainHeight/DLou; HJieTi[DLou-1]=GameMainHeight/(DYLou*DLou);WJieTi[DLou-1]=GameMainWidth*DXJieTi/DJieTi;if(CJieTi[DLou-1]==5)TJieTi[DLou-1]=rand()%10;TJieTi[DLou-1]=0; return1;}else}{{//{CJieTi[i]=0; elseif(j==4) CJieTi[i]=1; elseif(j==5) CJieTi[i]=2;elseif(j==6)CJieTi[i]=3;elseif(j==7)CJieTi[i]=4;else}//}//{///2;YJieTi[i]=GameWindowHeight-GameMainHeight+i*GameMainHeight/DLou+(DYLou-1 )*GameMainHeight/(DYLou*DLou);}/*计算出初始角色状态*/for(i=0;i<=3;i++){if(CJieTi[i+2]==0){OManX=XJieTi[i+2]+(WJieTi[i+2]-ManWidth)/2; OManY=YJieTi[i+2]-ManWidth;}//}/*VX=0;AY=0;/*for(i=0;i<=DLou;i++){if(CJieTi[i]==5)TJieTi[i]=rand()%10;elseTJieTi[i]=0;}Life=10;SetTimer(hwnd,1,RefreshTime,NULL);//设置刷新计时器return0;}。
C语言大作业——管道瞬变流动分析报告
管道瞬变流动分析
2019/9/22
中国石油大学
1
问题的提出
一条Φ219×5mm的水库引水管道, L= 5000m, 水库液位表面相对于末端 阀门的高度为100m,稳定运行时,管 内流速为0.5m/s,水力坡降i=0.002, a=1100m/s。如果末端阀门瞬时关闭, 试求管内流动瞬变状态,即流量和流速
2019/9/22
中国石油大学储建研07-2班
4
简单管路特征结点图
3△t
2△t
△t P1
P2
P3
PN
PN+1
C-
t=0
1
2
3
求解特征线的压头,有下列公式:
N N+1 x
C+:Hpi=CP-BQpi
(1)
C-: Hpi=CM+BQpi CP CM为常数
(2)
CP=Hi-1+BQi-1-RQi-1|Qi-1|
2019/9ቤተ መጻሕፍቲ ባይዱ22
中国石油大学储建研07-2班
6
# include <stdio.h> # include <math.h> # define D 0.209 # define g 9.81 # define pai 3.14 # define n 10 main() { int H0=100;
int m,k,L=5000,a=1100,IPR=8; float dx,dt,Ad,B,R,f,T,Cp,Cm,Tmax=200; float Q0,v=0.5,i=0.002; float H[n+2],Q[n+2],Hp[n+2],Qp[n+2]; FILE *fp;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:面向对象程序设计大作业
学号:
姓名:
顺序表的排序
一、问题描述:
该程序主要功能是利用c++语言实现顺序表的排序。
用户先输入要输入数据的个数,接着再输入需要排序的数据(数字或字符)。
输入数据后,程序对初始数据输出,接着对读入的数据(冒泡法)正序的排序,最后输出排序后的结果。
程序结束。
二、c++语言的具体方法:
该程序中主要利用的c++方法有:
1. 类函数模板;
2. 运算符的重载;
3. 模板函数;
4. 有元函数;
5. 冒泡法。
三、程序代码及注释:
/*该程序主要利用了冒泡法对数据进行排序,定义int和char两种类型的类,定义的queue友元函数可以实现顺序表的冒泡法正向排序;此顺序表模板可以实现的功能有:建立用户需要的顺序表(包括大小和类型)、对输入的顺序表进行正向排序*/
#include<iostream.h>
#include<iomanip.h>
//定义顺序表类模板
template <typename T>
class sq_list
{
protected:
int mm; //顺序表空间容量
int nn; //顺序表长度
public:
T*L; //指向顺序表向量的指针
sq_list(int); //构造函数,建立空顺序表
int length(); //成员函数,计算顺序表当前长度
T get(int); //成员函数,读取顺序表中第i个元素
void insert(T,int); //成员函数,在顺序表的第i个元素插入一个元素
friend ostream&operator<<(ostream&,const sq_list<T>&); //插入符<<重载为友元函数
friend void queue(sq_list<T>&);//友元函数,对顺序表冒泡法排序
};
//定义构造函数
template<typename T>
sq_list<T>::sq_list(int m)
{
mm=m;
L=new T[mm]; //动态分配顺序表存储空间
nn=0; //空表,长度为0
}
//定义成员函数
template<typename T>
int sq_list<T>::length() //成员函数,计算顺序表当前长度
{
return nn;
}
template<typename T>
T sq_list<T>::get(int i) //成员函数,读取顺序表中第i个元素
{
return L[i-1];
}
template<typename T>
void sq_list<T>::insert(T x,int i) //成员函数,在顺序表第i个位置插入一个元素{
if(nn==mm) cout<<"顺序表上溢!"<<endl;
else
{
L[i-1]=x;
nn++;
}
}
//定义友元函数
template <typename T>
ostream&operator<<(ostream&out,const sq_list<T>&x) //插入符<<重载为友元函数{
for(int i=1;i<=x.nn;i++) out<<setw(5)<<x.L[i-1];
out<<endl;
return out;
}
template<typename T>
void queue(sq_list<T>&LA) //友元函数,对顺序表冒泡法排序{
int i, j, flag; //flag为标记本次是否有元素交换T temp;
for (i=0; i<LA.nn-1;i++) //进行n-1趟排序
{ flag=1; // 置未交换标志
for (j=LA.nn-1;j>i; j--) //从下往上扫描
if (LA.L[j-1]>LA.L[j]) //比较临近2个元素前一个是否大于
{ temp=LA.L[j-1]; //后一个元素大于则交换,否则不变LA.L[j-1]=LA.L[j];
LA.L[j]=temp;
flag=0;
}
if (flag) break; //本趟排序中未发生交换,则终止算法}
}
//int型和char型的顺序表升序排序输入数据为10个
void main()
{
int x=0,i,count;
char y=0,j;
sq_list<int>A(20);
sq_list<char>B(20);
//int型排序
cout<<"请输入数字个数:"<<endl; cin>>count;
for(i=1;i<=count;i++)
{ cin>>x;
A.insert(x,i);
}
queue(A);
cout<<"排序结果输出:";
cout<<A<<endl;
//char型排序
cout<<"请输入字符个数:"<<endl; cin>>count;
for(j=1;j<=count;j++)
{ cin>>y;
B.insert(y,j);
}
queue(B);
cout<<"排序结果输出:";
cout<<B<<endl;
}
四、程序运行结果:。