软件基础第一次上机作业
大工17春《软件开发基础》在线作业1
大工17春《软件开发基础》在线作业1一、作业题目本次作业题目为《软件开发基础》在线作业1。
二、作业内容作业要求如下:1. 使用任意编程语言,编写一个程序,实现以下功能:- 输入一个整数n,程序能够计算并输出从1到n的所有偶数;- 输入一个整数n,程序能够计算并输出从1到n的所有奇数;- 输入两个整数m和n,程序能够计算并输出从m到n的所有数字之和。
2. 提交代码和运行结果截图。
三、作业要点解析本次作业要求实现一个简单的程序,根据用户的输入,输出对应的数字序列或数字之和。
具体解析如下:1. 第一部分要求输出从1到n的所有偶数,可以采用循环结构进行判断,当循环变量为偶数时输出。
2. 第二部分要求输出从1到n的所有奇数,同样可以使用循环结构进行判断,当循环变量为奇数时输出。
3. 第三部分要求计算从m到n的所有数字之和,可以使用循环结构进行累加计算。
四、代码示例以下是使用Python语言编写的程序示例,满足题目要求,并能输出正确的结果。
def print_even_numbers(n):for i in range(1, n + 1):if i % 2 == 0:print(i, end=' ')def print_odd_numbers(n):for i in range(1, n + 1):if i % 2 != 0:print(i, end=' ')def calculate_sum(m, n):total_sum = 0for i in range(m, n + 1):total_sum += ireturn total_sum示例调用n = 10print("从1到{}的偶数为:".format(n))print_even_numbers(n)print("\n从1到{}的奇数为:".format(n))print_odd_numbers(n)print("\n从2到{}的数字之和为:".format(n))print(calculate_sum(2, n))五、运行结果截图请在提交作业时附上运行结果的截图,以证明程序运行正确。
计算机应用基础第一次在线作业
计算机应用基础第一次在线作业全文共四篇示例,供读者参考第一篇示例:计算机应用基础第一次在线作业随着计算机技术的普及和发展,计算机应用基础成为各个专业学生必修的一门课程。
本文将针对计算机应用基础课程的第一次在线作业进行详细介绍和解析。
一、作业内容第一次在线作业通常包括以下几个方面:计算机的基本概念、计算机硬件和软件的基本原理、操作系统的基本功能等内容。
同学们需要通过自学和实践,深入理解和掌握这些知识,以便为后续的学习打下坚实的基础。
二、作业要求1.熟练掌握计算机的基本概念,包括计算机的定义、组成部分、工作原理等内容。
2.了解计算机硬件和软件的基本原理,包括CPU、内存、硬盘等硬件设备的作用和功能,以及操作系统、应用软件等软件的概念和分类。
3.掌握操作系统的基本功能,包括文件管理、进程管理、用户界面等内容。
4.能够对计算机系统进行简单的故障排除和维护,解决常见的硬件和软件问题。
5.具备良好的自学能力和团队合作精神,能够独立完成作业并与同学们一起探讨和分享学习成果。
三、作业形式第一次在线作业通常以在线问答形式展开,同学们需要登录教学平台,对老师发布的问题进行回答。
还需要在指定的时间内提交书面作业或实验报告,以展示自己的学习成果和实践能力。
四、作业考核在线作业的考核主要包括两个方面:问答成绩和书面作业成绩。
同学们需要通过认真思考和回答老师提出的问题,展示自己的理解和思考能力。
书面作业的内容和质量也将成为考核的重要指标。
五、总结计算机应用基础课程是每个专业学生必修的重要课程之一。
通过第一次在线作业,同学们可以在实践中深入理解和掌握计算机的基本原理和操作技巧,为将来的学习和发展奠定坚实的基础。
希望同学们能够认真对待每一次作业,不断提升自己的学习能力和实践能力,取得优异的成绩。
【编辑:Robot20】第二篇示例:计算机应用基础第一次在线作业一、填空题1. 计算机由__硬件__ 和__软件__ 两部分组成。
2. 在计算机中,__CPU__ 负责执行程序指令和数据处理。
《互联网软件基础》上机作业2012
三角形3边长(对应的要有“计算三角形周长”和“计算三角形面积”两个提交按钮)
圆形的半径(对应的要有“计算圆形周长”和“计算圆形面积”两个提交按钮)
长方形的长和宽(对应的要有“计算长方形周长”和“计算长方形面积”两个提交按钮)
2.建立一个JSP文件,命名为ex3.jsp。
要求: 1.在此文件中定义3个类,分别对应于三角形、圆形和长方形。
2.此文件用于接收来自ex3.htm的参数,并显示相应的面积或周长。
3.将上述两个文件放到tomcat的网页发布目录中,用浏览器访问ex3.htm,依次按下6个用来计算周长或面积的按钮,
如果能够正确显示相应的周长或面积,则表示参数传递和程序设计正确。
----------------------------------
作业1:制作不少于5个页面的网站
---------------------------------
(1)要有鲜明的主题,如:个人网站、体育网站、文学网站,等;
(2)网页彼此之间要通过超链接衔接,用户应能够在各个网页之间方便地跳转;
(3)注意不要使用中文作为网页文件的名字;
(4)首页文件应命名为index.htm或index.html;
用浏览访问它。
---------------------------------
作业3:用Request对象实现面积计算
---------------------------------
1.建立一个HTML页面,命名为ex3.htm。
要求:其中包含3个表单,分别用于输入下列信息:
在Path变量值中添加:JDK安装目录\bin
2.安装Tomcat
《计算机应用基础》上机操作试题一
《计算机应用基础》上机操作试题一《计算机应用基础》上机操作试题一一、软件基础知识1、计算机硬件与软件的关系1.1 定义1.2 软件分类及特点1.3 软件开发过程2、操作系统2.1 操作系统的定义及作用2.2 常见操作系统介绍及特点2.3 操作系统的安装与卸载步骤2.4 操作系统的更新与升级3、常用办公软件3.1 文字处理软件3.1.1 软件介绍及功能3.1.2 基本操作及快捷键3.2 电子表格软件3.2.1 软件介绍及功能3.2.2 基本操作及公式使用3.3 演示文稿软件3.3.1 软件介绍及功能3.3.2 基本操作及动画效果设置 3.4 图像处理软件3.4.1 软件介绍及功能3.4.2 基本操作及图像处理技巧4、数据库管理系统4.1 数据库管理系统的定义及作用 4.2 数据库的基本概念4.3 数据库的创建与管理4.4 数据库查询与报表二、网络基础知识1、网络的基本概念1.1 网络的定义及作用1.2 互联网与局域网的区别1.3 网络的拓扑结构2、网络协议2.1 常见网络协议介绍及功能2.2 TCP/IP协议族2.3 常用网络协议的配置与管理3、网络安全3.1 网络安全的概念及重要性3.2 常见网络安全威胁3.3 网络安全的防护措施3.4 防火墙的配置与管理三、计算机硬件基础知识1、常见的计算机硬件设备1.1 中央处理器(CPU)1.1.1 CPU的功能及特点1.1.2 主频、核心数、缓存的概念及影响因素 1.2 内存(RAM)1.2.1 内存的作用及分类1.2.2 内存的容量及扩展1.3 硬盘(Hard Disk)1.3.1 硬盘的作用及分类1.3.2 硬盘的存储原理及容量2、显卡与显示器2.1 显卡的作用及分类2.2 显示器的作用及选择注意事项2.3 分辨率与刷新率的概念及影响因素3、输入设备与输出设备3.1 键盘与鼠标3.1.1 键盘的布局及常用功能键3.1.2 鼠标的分类及使用技巧3.2 打印机与扫描仪3.2.1 打印机的分类及常见问题解决3.2.2 扫描仪的分类及常用功能4、常见硬件故障及解决方法4.1 硬件故障的分类及常见故障现象4.2 硬件故障的排除流程4.3 常见硬件故障的解决方法四、附件请参考附件相关资料。
软件上机作业
实验二:链表(续)
ex2_2:
1)创建一个单链表,其数据元素为整数,从键盘输 入,输入0结束(注意0不放到链表内); 2)从键盘任意输入一个整数,在单链表中查询该数, 如果单链表中已经存在这个数,就调用删除函数,删 除该元素所在结点,并将单链表在删除前后的数据元 素依次输出到屏幕上; 如果单链表中不存在这个数,就调用插入函数,将这 个数插入到单链表尾,并将单链表在插入前后的数据 元素依次输出到屏幕上。
提示:创建顺序表函数 /*create a list:input data from keyboard,end by -1*/ void createlist(list_type *lp) { int i, elem; lp->length=0; printf("\nplease input datas of the list\n"); for(i=0; i< MAXNUM; i++) { scanf(" %d", &elem); if(elem== -1) break; lp->data[i]=elem; lp->length++; } }
提示:插入函数,成功返回true,反之返回false。
int insertlist(list_type *lp, int new_elem, int i) { int j; if(lp->length>=MAXNUM) { printf("the list is full,can not insert."); return(false); } if(i<1 || i>lp->length+1) { printf("\n%d is invalid value",i); return(false); } for(j=lp->length-1; j>=i-1; j--) lp->data[j+1]=lp->data[j]; lp->data[i-1]=new_elem; lp->length++; return(true); }
软件基础第一次上机作业
软件基础第一次上机作业1、设有一个线性表E={e1, e2, …, en-1, en},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ en , en-1 , …, e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。
(文件夹:顺序表逆置、单链表逆置)线性表:#include#includetypedef char datatype;const int maxsize=1024;typedef struct{ datatype data[maxsize];int last;}sequenlist;void create(sequenlist*&);void print(sequenlist*);void invert(sequenlist*);void main(){sequenlist*L;create(L);printf("建立的顺序表是:");print(L);invert(L);printf("逆置后的顺序表是:");print(L);}void create(sequenlist*&L){L=(sequenlist*)malloc(sizeof(sequenlist)); L->last=0;printf("请输入数据:");char ch;while((ch=getchar())!='\n'){L->last++;L->data[L->last]=ch;}}void print(sequenlist*L){for(int i=1;i<=L->last;i++)printf("%2c",L->data[i]);printf("\n");}void invert(sequenlist*L){int n=L->last/2;for(int i=1;i<=n;i++){char temp=L->data[i];L->data[i]=L->data[L->last-i+1];L->data[L->last-i+1]=temp;}}链表:#include#include#includetypedef struct node{int data;struct node *next;}LinkNode, *LinkList;LinkList Creat(LinkList head);void Inverse(LinkList head);void Output(LinkList head);LinkList Creat(LinkList head)//头插法建表{char ch;LinkList p = NULL;LinkList q = NULL;head = (LinkList) malloc (sizeof(LinkNode)); head->next = NULL;q = head;while ((ch=getchar())!='\n'){p = (LinkList) malloc (sizeof(LinkNode));p->data=ch;p->next=q->next;q->next = p;}return head;}void Inverse(LinkList head)//逆置{ LinkList p = head->next;LinkList tmp = NULL;head->next = NULL;while (p!=NULL ){tmp = p->next;p->next = head->next;head->next = p;p = tmp;}}void Output(LinkList head)//输出{LinkList p = head->next;while (p!= NULL){printf("%d ", p->data);p = p->next;}printf("\n");}int main(void){LinkList head = NULL;head = Creat(head);printf("建立的单链表是:");Output(head);Inverse(head);printf("逆置后的单链表是:");Output(head);system("pause");return 0;}2、将两个非递减的有序链表合并为一个非递减的有序链表。
(完整版)第一次上机实验参考答案
hing at a time and All things in their being are good for somethin
OpenFileDialog imageDialog = new OpenFileDialog();
imageDialog.Filter =
"BMP(*.BMP)|*.BMP|JPEG(*.JPEG)|*.JPEG|JPG(*.JPG)|*.JPG|GIF(*.GIF)|*.GIF|PNG(*.png)|*.p
hing at a time and All things in their being are good for somethin
第一次上机实验参考答案
一、编程范例:创建 Windows 窗体个人简历应用程序。
编写一个简单的个人简历程序,要求可以通过文本框输入学号和姓名,通过文件对话框选择照片 并显示。系统运行界面如图1-1 所示。
namespace SY1_4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
第6 页 共 8页
hing at a time and All things in their being are good for somethin
第3 页 共 8页
hing at a time and All things in their being are good for somethin
(1)Button1:Text 内容为“隶书 25 磅”,事件过程代码为: textBox1.Font = new Font("隶书", 25); (2)Button2:Text 内容为“幼圆 15 磅”,代码类似。 (3)Button3:Text 内容为“复制 =>”,要求复制在textBox1 选中的内容以及其字 体格式。选中的内容通过textBox1 的SelectedText 属性;字体通过Font 直接赋值。
(完整版)学校管理软件上机操作练习题
(完整版)学校管理软件上机操作练习题学校管理软件上机操作练题本文档旨在提供学校管理软件的上机操作练题,帮助用户熟悉软件的使用。
下面是一些练题,供用户完成。
1. 登录操作- 打开学校管理软件,并找到登录界面。
- 使用正确的用户名和密码登录系统。
2. 添加学生信息- 在软件界面上找到学生管理模块。
- 点击添加学生按钮。
- 输入学生信息,包括姓名、学号、年级等。
- 点击确认保存学生信息。
3. 查询学生信息- 在学生管理模块中找到查询功能。
- 输入要查询的学生姓名或学号。
- 点击查询按钮,查看学生的详细信息。
4. 修改学生信息- 先执行查询学生信息的操作,找到要修改的学生。
- 选择需要修改的信息字段,如姓名、年级等。
- 修改对应的信息内容。
- 点击确认保存修改后的学生信息。
5. 删除学生信息- 先执行查询学生信息的操作,找到要删除的学生。
- 点击删除按钮,确认删除该学生的信息。
6. 添加课程信息- 在软件界面上找到课程管理模块。
- 点击添加课程按钮。
- 输入课程信息,包括课程名称、课程编号等。
- 点击确认保存课程信息。
7. 查询课程信息- 在课程管理模块中找到查询功能。
- 输入要查询的课程名称或课程编号。
- 点击查询按钮,查看课程的详细信息。
8. 修改课程信息- 先执行查询课程信息的操作,找到要修改的课程。
- 选择需要修改的信息字段,如课程名称、课程编号等。
- 修改对应的信息内容。
- 点击确认保存修改后的课程信息。
9. 删除课程信息- 先执行查询课程信息的操作,找到要删除的课程。
- 点击删除按钮,确认删除该课程的信息。
以上是学校管理软件上机操作的练习题。
通过完成这些操作,用户将对软件的使用有更深入的了解。
请根据实际情况进行操作,并及时保存修改的数据。
祝您顺利完成练习!。
计算机应用基础第一次在线作业
计算机应用基础第一次在线作业在当今数字化的时代,计算机已经成为我们生活和工作中不可或缺的工具。
掌握计算机应用基础对于我们更好地适应社会发展、提高工作效率和丰富生活方式具有重要意义。
本次计算机应用基础的第一次在线作业,旨在检验我们对计算机基础知识的初步理解和掌握程度。
计算机应用基础涵盖了多个方面的内容,包括计算机系统的组成、操作系统的使用、办公软件的操作、网络基础知识等等。
首先,让我们来了解一下计算机系统的组成。
计算机系统由硬件系统和软件系统两大部分构成。
硬件系统包括中央处理器(CPU)、内存、硬盘、显示器、键盘、鼠标等设备。
CPU 是计算机的核心部件,它负责处理各种计算任务。
内存则用于暂时存储正在运行的程序和数据。
硬盘用于长期存储文件和数据。
显示器、键盘和鼠标则是人机交互的重要设备。
软件系统则分为系统软件和应用软件。
系统软件如操作系统,负责管理计算机的资源和提供基本的服务。
应用软件则是为了满足各种特定的需求而开发的,比如办公软件、图像处理软件、游戏软件等。
操作系统是计算机系统的重要组成部分,它是管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石。
常见的操作系统有 Windows、Mac OS 和 Linux 等。
以 Windows 操作系统为例,我们需要掌握如何进行文件管理,包括创建、复制、移动、删除文件和文件夹;如何设置桌面背景、屏幕保护程序和分辨率;如何安装和卸载软件等等。
熟练掌握操作系统的使用,可以让我们更加高效地利用计算机资源。
办公软件在日常工作和学习中有着广泛的应用。
其中,Word 用于文字处理,我们可以用它来撰写文档、编辑排版;Excel 用于数据处理和分析,能够制作表格、进行数据计算和图表绘制;PowerPoint 用于演示文稿的制作,帮助我们展示观点和汇报工作。
在使用这些办公软件时,我们需要了解各种功能的操作方法,比如 Word 中的字体格式设置、段落排版;Excel 中的函数运用、数据筛选;PowerPoint 中的幻灯片布局、动画效果设置等。
软件技术基础课程上机作业
实习一、编写程序解决下列问题:1、楼梯有n级台阶,上楼时可以一步上1阶,也可以一步上2阶,编写程序计算共有多少种不同的上楼梯的方法。
2、任给十进制的正整数,请从高位到低位逐位输出各位数字。
3、求a+a2+a3+…+a n之值,其中a是一个数字,n表示a的位数,如:2+22+23+24+25(此时n=5),a、n由键盘输入。
实习二、线性表(顺序存储)及其应用(分四个实验)实习目的:掌握顺序表的建立及基本操作。
问题:建立一个顺序表,表中元素为学生,每个学生信息包含姓名、学号和成绩三部分,对该表实现:①输出、②插入、③删除、④查找功能,并计算出平均成绩和总成绩。
实习三、栈的应用(选做)实习目的:掌握栈的特点及其基本运算,用栈解决一个应用问题。
问题:判断一个数是否是回文(如:123456654321和123404321是回文数)基本要求:利用栈结构实现判断,任输入一个数,判断它是否是回文数,并输出判断结果。
实习四、线性表(链式存储)及其应用(分四个实验)实习目的:掌握链式存储结构下线性表的建立及基本操作。
问题:建立一个采用链式存储的线性表,表中元素为学生,每个学生信息包含姓名、学号和成绩三部分,对该表实现:①输出、②查找、③插入、④删除功能,并计算出平均成绩和总成绩。
实习五、线性链表的应用(选做)实习目的:在实习三的基础上,用线性链表解决一个应用问题。
问题:约瑟夫问题(Joseph)的求解。
问题描述:n只猴子要选大王,选举方法是:所有猴子按1、2、3、……、n编号顺时针方向围坐一圈,从第1号开始按1、2、3、……、m报数,凡报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。
试设计一个C程序,输出猴子出列顺序。
基本要求:利用单循环链表存储结构模拟此过程,n和m值由键盘输入,按照出列的顺序打印各个猴子的编号。
实验报告要求:上机前必须先写出实验预习报告(程序),上机过程中记录程序调试过程,程序调试正确后打印出正确的程序清单并附上程序运行结果,并进行本次实验的分析总结。
新手初学者计算机基础第一次上机必备
主要任务
① 指法练习---中英文练习
② 中英文符号的输入 ③ 特殊中文的输入
④ 压缩文件的使用
⑤ 屏幕抓图
键盘示意图
手指名称
键盘指法分布---基准键
中英文的输入
计算机启动起来后,在窗口中会有一个语言
栏
,或者是
点击 ,可以选择输入法,从而实现中英文 的切换。 注意:还可以使用快捷键来实现。实现的具体 方法是 :ctrl+空格键可以实现中/英文之间的 切换,ctrl+shift可以在多个输入法中切换。
屏幕抓图
整个屏幕的抓图:PrtScn键的使用
活动窗口的工具的使用
计算器的使用
中英文输入
全角/半角的区别
中文标点与英文标点的区别 特殊符号的输入
“、”的输入
特殊中文的输入
皮袄,西安的输入
压缩软件WINRAR的使用
如果一个文件或者目录过大,我们需要把它
变小,这个时候我们就需要使用WINRAR软 件将该文件或者目录压缩。 压缩:在文件或者目录上点击鼠标的右键 解压:压缩后的文件将变为 双击该文件,选择解压, 就会恢复到原来的状态。
第一次上机作业参考答案
{printf("%c did it!\n", thisman);
found=1;
break;
}
}
if(found==0)
printf("Not found!\n");
}
5.数字加密
输入1个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
例:输入1257
输出The encrypted number is 4601
#include <stdio.h>
#include <stdio.h>
void main( )
{ int time1, time2, hours, mins;
scanf("%d%d", &time1, &time2);
mins=time2%100>time1%100?time2%100-time1%100:60+time2%100-time1%100;hours=time2%100>time1%100?time2/100-time1/100:time2/100-1-time1/100;printf("The train journey time is %d hrs %d mins.\n", hours, mins);}
第一次上机作业参考答案
:
1.大写字母转换成小写字母
从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G
输出g
#include <stdio.h>
计算机软件专业技术基础上机编程
计算机软件技术基础上机编程————————————————————————————————作者:————————————————————————————————日期:计算机软件技术基础上机编程上机题一:线性表1.建立单向链表;表长任意;2.可交互输出单链表中的内容;3.编写算法计算出自己所建单链表的长度并输出;4.输出自己所建立单链表中的第K个结点,并将剩余结点输出;5.将单链表倒排并输出结果#include<stdio.h>#include<malloc.h>typedef int datatype;typedef struct node{ datatype data;struct node *next;}linklist;linklist*Creatlist() //建立链表//{ int x;linklist *h, *s;h=NULL;printf("\n please input the date end with 0:\n");printf("\n Input data:");scanf("%d",&x);while(x!=0){ s=malloc(sizeof(linklist));s->data=x;s->next=h;h=s;printf("\n Input data:");scanf("%d",&x);}return h;}void Putlist(linklist *h) //输出单链表中的内容// { linklist *s;s=h;while(s!=NULL){ printf("%4d",s->data);s=s->next;}}int Long(linklist *h) //计算链表的长度// { int i=0;linklist *s;s=h;while(s!=NULL){ i++;s=s->next;}return(i);}void Delete(linklist *h,int k) //删除链表中第k个结点// { int i=0;linklist *p1,*p2;p1=h;if(k==1) { h=h->next;free(p1);}else{while(i<k-1&&p1!=NULL){i++;p2=p1;p1=p1->next;}p2->next=p1->next;free(p1);}}linklist *Nixu(linklist *h) //逆序输出链表// { linklist *r,*q,*p;r=h;p=r->next;q=p->next;if(h==NULL)printf("the linklist is empty\n"); / /空表//while(q!=NULL&&h!=NULL){p->next=r;r=p;p=q;q=q->next;}h->next=NULL;p->next=r;return(p); //返回根结点// }main(){ int k,x;linklist *h;do //输出菜单// { printf("\nqing shu ru ming ling:\n");printf("1.jian li lian biao;\n");printf("2.shu chu lian biao zhong de nei rong;\n");printf("3.shu chu lian biao de chang du;\n");printf("4.shan chu di K ge jie dian;\n");printf("5.jiang lian biao dao xu bing shu chu;\n");printf("6.tui chu cheng xu;\n");printf("qing shu ru 1--6 de shu zi:\n");scanf("%d",&x);if(x<1||x>6) printf("error!\n");elseswitch(x){ case 1:h=Creatlist();break;case 2:Putlist(h);break;case 3:printf("lian biao de chang du shi %d",Long(h));break;case 4:printf("Input the node you want to delete:\n");scanf("%d",&k);Delete(h,k);Putlist(h);break;case 5:h=Nixu(h);Putlist(h);break;case 6:exit(0);break; //退出程序// }}while(1);}退出程序;上机题二:二叉树1.动态交互建立二叉树,结点个数任意;2.分别用DLR,LDR,LRD三种方式对二叉树进行遍历并输出结果;3.计算二叉树中结点个数并输出;4.计算二叉树深度并输出源程序:#include "stdio.h"#include "malloc.h"struct TreeNode{ int data;struct TreeNode *Lchild ;struct TreeNode *Rchild;};struct TreeNode *create( ) // 用于建立二叉树的子函数//{ struct TreeNode *T;int a;scanf("%d",&a);if (a==0) return NULL;else // 动态建立二叉树// { T=(struct TreeNode *)malloc(sizeof(struct TreeNode));T->data=a; // 建立根结点//T->Lchild=create( ); // 递归建立左子树//T->Rchild=create( ); // 递归建立右子树//}return (T);}void Pre (struct TreeNode *T) // 用于进行先序遍历的子函数//{ if (T!= NULL){ printf ("%5d",T->data); // 访问根结点//Pre (T->Lchild); // 递归访问左子树//Pre (T->Rchild); // 递归访问右子树//}}void Mid(struct TreeNode *T) // 用于进行中序遍历的子函数//{if ( T != NULL){ Mid (T->Lchild); // 递归访问左子树//printf("%5d",T->data); // 访问根结点Mid (T->Rchild); // 递归访问右子树// }}void Post (struct TreeNode *T) // 用于进行后序遍历的子函数//{ if ( T != NULL){ Post (T->Lchild); // 递归访问左子树//Post (T->Rchild); // 递归访问右子树//printf("%5d",T->data);}}void visit(struct TreeNode *T) // 用于访问二叉树的子函数//{ printf("the result of DLR:"); Pre(T);printf("\n");printf("the result of LDR:"); Mid(T);printf("\n");printf("the result of LRD:"); Post(T);printf("\n");}int leaf(struct TreeNode *T) // 用于计算叶子结点的子函数//{ int a,b;if(T==NULL) return (0);else if(T->Lchild==NULL&&T->Rchild==NULL) // 判断该结点是叶子结点//return (1);else{ a=leaf(T->Lchild); // 递归计算左子树上叶子数// b=leaf(T->Rchild); // 递归计算右子树上叶子数//return (a+b+1);}}int max(int x,int y) // 用于取两数的较大值的子函数// { if(x>y) return (x);else return (y);int deep(struct TreeNode *T) // 用于计算二叉树深度的子函数//{ int k=0;if(T==NULL) return (0);else if(T->Lchild==NULL&&T->Rchild==NULL)// 该结点有孩子,深度增加1 //return (1);else return (1+max(deep(T->Lchild),deep(T->Rchild)));// 递归求取树的深度//}main(){ int m,n,p;struct TreeNode *T;printf("create a tree\n");T=create(); // 建立二叉树// printf("1.visit the tree\n"); // 打印菜单//printf("2.putout the total number of node\n");printf("3.putout the depth of the tree\n");printf("4.exit\n");while(1){ printf("\nplease input 1-4: "); // 完成菜单的相应功能//scanf("%d",&m);if(m==1) visit(T);if(m==2) {n=leaf(T); printf("the total number of leaves in the tree is %d\n",n);}if(m==3) if(m==3) {p=deep(T); printf("the depth of the tree is %d\n",p);}if(m==4) break;}}调试结果:create a tree1 02 5 0 4 0 6 8 96 0 0 0 56 85 0 0 69 0 0 0 2 5 0 0 01.visit the tree2.putout the total number of node3.putout the depth of the tree4.exitplease input 1-4: the total number of leaves in the tree is 10please input 1-4:please input 1-4:please input 1-4:please input 1-4:please input 1-4: 1the result of DLR: 1 2 5 4 6 8 96 56 85 69the result of LDR: 1 5 4 96 8 6 85 56 69 2the result of LRD: 96 8 85 69 56 6 4 5 2 1please input 1-4: 2the total number of leaves in the tree is 10please input 1-4: 3the depth of the tree is 7please input 1-4: 4Press any key to continue上机题三图在交互方式下完成下列任务:1、根据教材上算法,完成图的深度和广度优先遍历,要求任意给定起始点,输出结果;2、根据教材上算法,完成图的单源最短路径的算法,要求任意给定源点,输出结果程序:#include <stdio.h>#include <malloc.h>#define M 1000#define VNum 6struct GLink{ int No;int Right;struct GLink *Relat;};int G[VNum][VNum] = 1 // 对图进行初始化//{ 1 , 31, 11, M, 41, M,M, 0, 15, 50, 10, M,13, M, 0, 15, M, M,M, 13, M, 0, 17, M,M, M, M, 26, 0, M,M, M, M, 3, M, 0 };struct GLink *GL[VNum];int Visited[VNum];void CreateGLink(int G[VNum][VNum]) // 建立邻接表//{ int i,j;struct GLink *p,*q;for (i=0; i<VNum; i++){ GL[i] = q = NULL;for (j=0; j<VNum; j++){ if (i != j)if ((G[i][j] > 0) && (G[i][j] < M)) // 该两点存在有向路径//{ p = (struct GLink *)malloc(sizeof(struct GLink));p->No = j; // 将该点加入邻接表//p->Right = G[i][j];if (GL[i] == NULL)GL[i] = p;elseq->Relat = p;q = p;}}}}void DFS(int A[VNum][VNum], int V) // 用于进行深度优先遍历的子函数,V是起点//{ int i;printf(" [%d] ", V);Visited[V] = 1; // 将其标记为已访问//for (i = 0; i < VNum; i++)if ((A[V][i] > 0) && (A[V][i] < M) && (Visited[i] != 1)) // 该结点未被访问过//DFS(A,i); // 访问该点//for (i = 0; i < VNum; i++)if (Visited[i] != 1) DFS(A,i); // 仍有未必访问过的点,访问该点//}void BFS(int A[VNum][VNum], int V) // 用于广度优先遍历的子函数//{ int CQ[VNum];int a=0,b,c;int i,k=1;for (i=0;i<VNum;i++)CQ[i]=M;Visited[V] = 1; // 标志为访问过// CQ[0]=V;printf("[%d] ",V); // 将该结点放入队列//while(k<6&&a<k) //仍有结点未被访问并且队列中仍有结点的后继结点未被访问//{ b=CQ[a];for(c=0;c<VNum;c++) // 依次将队列中以结点为首的邻接表中的结点插入队列//if(Visited[c]==0&&A[b][c]<M&&A[b][c]!=0){ printf("[%d] ", c);CQ[++k]=c; // 未被访问过,将其插入到队列中//Visited[c]=1; // 标志为访问过//}a++;}for(i=0;i<VNum;i++)if(Visited[i]==0)BFS(A,i);}void Short(int A[VNum][VNum],int V) // 用于计算最短路径的子函数,V是起点//{ int Dist[VNum], Path[VNum];int S = 0;int i, k;int wm, u;for (i=0; i<VNum; i++){ Dist[i] = A[V][i]; // 默认这两点之间即为最短路径//if (Dist[i] < M) Path[i] = V; // 存储该路径//}S = S | (1 << V);for (k=0; k<VNum; k++){ wm = M;u = V;for (i=0; i<VNum; i++)if (((S & (1 << i))==0) && (Dist[i] < wm)) // 该两点间存在路径//{ u = i;wm = Dist[i];}S = S | (1 << u);for (i=0; i<VNum; i++)if (((S & (1 << i))==0) && ((Dist[u] + A[u][i]) < Dist[i])){ Dist[i] = Dist[u] + A[u][i]; // 找到新的最短路径//Path[i] = u; // 更新路径长度//}}for (i=0; i<VNum; i++) // 输出该源结点到其他各点的最短路径//if ((S & (1 << i)) != 0){ k = i;while ( k != V){ printf(" %d <- ", k);k = Path[k];}printf(" %d ", V);printf(" = %d \n", Dist[i]);}else printf(" No Path : %d",i);}main(){ int i,j,a,b;CreateGLink(G);printf("1.search the graph deep first\n"); //打印菜单//printf("2.search the graph broad first\n");printf("3.find the shortest path\n");printf("4.exit\n");while(1) // 完成菜单功能//{ printf("\n please input a num from 1 to 4 : ");scanf("%d",&a);if(a==1){ for (i=0; i<VNum; i++)Visited[i] = 0;printf("please input the first node: ");scanf("%d",&j);printf("\n The Result of DFS is:");DFS(G,j);printf("\n");}if(a==2){ for (i=0; i<VNum; i++)Visited[i] = 0;printf("please input the first node: ");scanf("%d",&j);printf("\n The Result of BFS is:");BFS(G,j);printf("\n");}if(a==3){ printf("please input the source node : ");scanf("%d",&b);printf("\n The Result of Shortest path is:\n");Short(G,b);}if(a==4) break;}}结果调试截图:上机题四检索和排序在交互方式下完成下列任务:1、任意给定无序序列,用对半检索法,交互检索任意给定的关键字KEY;2、任意给定无序序列,用快速排序法对进行排序,并统计交换次数;3、任意给定无序序列,用冒泡排序法对进行排序,并统计交换次数和排序的趟数;程序:#include <stdio.h>#define M 100struct RedType{ int key;int other;};int a;int Search ( struct RedType ST[], int n, int key) // 用于进行对半查找的子函数//{ int low, high, mid;low=0; high=n-1;while( low <= high ) // 未检索完毕//{ mid=(low+high)/2; // 指向中间值//if ( ST[mid].key == key) return(mid+1); // 检索成功//else if( key < ST[mid].key) high=mid-1; // 待查找值小于中间值,到前一半查找//else low = mid+1; // 待查找值大于中间值,到后一半查找//}return (0);}int QuickSort(struct RedType L[], int low, int high) // 用于快速排序的子函数//{ int i, j, t=0;struct RedType temp;if(low >= high) // 待排序队列空,结束//return (0);i = low;j = high;temp = L[i];while(i < j){ while((L[j].key >= temp.key) && (j > i)) //从后向前找出第一个小于关键值的数据//j --;if (i < j) {L[i] = L[j]; t++;} // 交换,同时交换次数加1 //while((L[i].key <= temp.key) && (j > i)) //从前向后找出第一个大于关键值的数据//i ++;if (i < j) {L[j] = L[i]; t++;} // 交换,同时交换次数加1 //}L[i] = temp;printf("\n\nThe QukSort Loop[%d] is : ",i);for (j = 0; j < a; j++)printf("%d ", L[j].key);return(t+QuickSort(L, low, i-1)+QuickSort(L, i+1, high)); //对前后块分别进行快速排序//}void bubsort(struct RedType L[ ], int n) // 用于冒泡排序的子函数//{ int i,j=0,m, fag=1,t=0;struct RedType x;while ( (j < n) && (fag>0) ){ fag=0; // 标志有无交换//for ( i=0; i <n-1; i++)if ( L[i+1].key < L[i].key ) // 满足交换条件//{ fag++; // 标记发生交换//x=L[i]; // 将相邻数据交换//L[i]=L[i+1];L[i+1]=x;t++;// 交换次数加1 //}if(fag)// 输出交换过程//{ j++; // 排序次数加1 //for(m=0;m<n;m++)printf("%5d",L[m].key);printf("\n\n");}}printf("the sorted array is: "); // 输出排序完之后的数据//for(m=0;m<n;m++)printf("%5d",L[m].key);printf("\n");printf("\nthe times of sort is: %d",j); // 给出排序次数//printf("\nthe total times of exchange is : %d\n",t); // 给出交换次数//main(){ int b,m,n,i,j;struct RedType S[M],T[M];printf("input the length of the data:"); // 预先给定数据的个数//scanf("%d",&a);printf("please input the data \n");for(i=0;i<a;i++)scanf("%d",&S[i].key);printf("\n1.quick sort\n"); // 打印菜单//printf("2.bub sort\n");printf("3.search the data you want to see\n");printf("4.exit\n");while(1)// 完成菜单功能//{ printf("\nplease input a number from 1 to 4: ");scanf("%d",&b);if(b==1) { for(i=0;i<a;i++)T[i].key=S[i].key;j=QuickSort( T, 0, a-1);printf("\nthe total times of exchange is :%d\n",j);}if(b==2) { for(i=0;i<a;i++)T[i].key=S[i].key;bubsort(T,a);}if(b==3) { printf("please input the the key value: "); // 输入欲查找的关键值//scanf("%d",&m);n=Search(T,a,m);if(n==0) printf("can't find the key value\n");else printf("the location of the key value is: %d\n", n);}if(b==4) break;}}结果调试截图:心得体会:在这学期的计算机软件技术的实验中,我学会了很多。
第一次计算机作业
1、简答:在Visual FoxPro中编写程序,需要进行哪三步操作?
答:1、建立程序文件;
2、在程序窗口中编写程序并保存;
3、在命令窗口中运行程序。
2、编写程序:利用海伦公式根据三角形的三条边长求出其面积,假设输入的数据能构成三
角形。
input"请输入第一边长" to a
input"请输入第二边长" to b
input"请输入第三边长" to c
p=(a+b+c)/2
s=sqrt(p*(p-a)*(p-b)*(p-c))
?"该三角形的面积是",s
3、编写程序:求一元二次方程ax2+bx+c=0的实根。
其中a,b,c由用户输入,若b2-4ac≥0,则求其实根,否则说明无实数根。
input"请输入第一个整数"to a
input"请输入第二个整数"to b
input"请输入第三个整数"to c
if b^2-4*a*c>=0
x1=(-b+sqrt(b^2-4*a*c))/2*a
x2=(-b-sqrt(b^2-4*a*c))/2*a
?"该一元二次方程的根是",x1,x2
else
?"无实根"
endif。
软件技术基础第一次作业题及答案.doc
第1次作业一、单项选择题(本大题共100分,共40小题,每小题2.5分)1. 若执行以下程序段,其运行结果是()char c [[二{'a', ' b', ' \0', ' c', ' \0'} ; printf (,,%s\n ,/, c ); A. ab cB. 'a''b'C. abcD. ab2. 一个C 语言程序是由()组成A.主程序B.子程序C.函数D.过程3. 已知各变量定义如下:int i 二& a, b; double x=l. 42, y=5. 2;则以下符合C 语言语法的表达式是 ()A. a+二a -二(b 二4) * (a 二3)B. ei 二a*3二2C. x%(-3)D.(y+i )++ 4. 下列程序的输岀结果为()void main () { int &□二{1, 2, 3, 4, 5}, *p;P=a; * (p+4)+=5;printf %d\n\ *p, * (p+4)); } A. 4,10 B. 10,4 C. 1,4 D. 1, 105. 下列数据屮,属于“字符串常量”的是()A. Abcddd B. 〃3bcddd 〃 C. ,abcddd , D. <a ,6. 以下语句或语句组中,能正确进行字符串赋值的是()A. char*sp;*sp 二〃right!" B. char s[10];s 二〃right!〃 C. char s[10];*s 二〃right!〃 D. char *sp 二〃right!"7. 已知 long a=-2L ; printf (z ,%d\ n ,z , a );则有()A.赋值不合法 B. 输出值为-2 C.输出为不确定值D.输出值为2&在C 语言屮,类型名char 表示的数据类型是()A.实型B.字符型C. 整型D.双精度实型9. 判断char 型变量cl 是否小写字母的正确表达式为()A.,a<=cl<=z ,B. (cl>二'a')&&(cl 〈二'z') C. (cl>=a )&&(cl<=z ) D.(务‘〈二cl ) | | ('z'>二cl )10. 下列有关共同体说法正确的是()A.任一时刻,只有一个分量有效,其他 分量无意义B.共同体变量可以用作函数参数C.结构变量可以出现在共同体 类型中,而共同体变量不能出现在结构类型中D.在定义共同体变量时不能为 其初始化11・以下程序的输岀结果是()void main () {int x=020^ y=0x20^ z=20; 32, 16, 20 C. 16, 32, 20 D. 20, 32, 20printf 冷 * z) ; } A. 20, 20, 20 B.12.若有运算符:>、*二、==、%、sizeof,则它们按优先级(由低至高)的正确排列次序为()A. *二-> ==->>->% -> sizeof B. == -> *二->>->% -> sizeof C. *二-〉 > -〉二二-〉sizeof -> % D. *二-〉 > -〉二二 -〉% -> sizeof13.char s[]二” student”,*(s+2)的值是()A.,u,B. <d,C. “s' D. 't'14.用C语言编写的源程序,必须经过编译、连接和运行才能得到结果。
软件技术基础上机作业
1)实验项目简介:《软件技术基础实验》是与理论课程《软件技术基础》配套开出的,主要包含一个C程序部分的综合测试上机实验,和四个数据结构部分的基本上机实验,着重培养同学进行软件设计的基本能力。
2)实验内容:实验一:C程序设计综合上机实验 4学时实验目的:回顾C程序部分的相关知识,加强同学对指针、函数和结构体等的软件技术基础课程中需要大量使用的C语言知识的巩固和掌握。
实验内容:1、从键盘上输入5个同学的基本信息,包含同学的姓名(用拼音字母表示),班级,年龄,性别,身高。
把年龄最小的一个同学的信息同排在第一个位置的同学的信息交换,把年龄最大的一个同学的信息和最后一个元素交换,并将交换前后的结果打印出来。
2、已知一个班中5名同学的英语成绩为{88,76,83,89,86,80,62,85,74,87},平时成绩为{8,9,7,8,6,9,10,8,9,10},主函数中用C的指针分配函数:malloc()分配两块连续的存储单元存放以上的考试成绩和平时成绩,用一个函数计算该班同学的考试平均成绩和各同学的最终成绩(考试成绩+平均成绩),在主函数中将以上计算结果打印出来。
3、要求在主函数输入一串文字,并编写一个函数计算该文字串中的大写字母,小写字母,数字以及其它字符的个数,并在主函数中将文字串和以上计算结果打印出来。
本题选作。
实验要求:本实验是软件技术基础课程的第一次上机实验,要求同学从本次实验开始遵守以下基本实验要求:1)上机之前必须在书面编好以上程序;2)上机是在老师的指导下完成程序的编译、调试和测试;3)实验完成后完成实验报告。
实验二:顺序表基本操作上机实验 4学时实验目的:掌握顺序表的基本概念,基本操作和其C语言实现,同时进一步强化C程序设计的基本方法和能力。
实验内容:1、有序的一组整数{1,2,3,4,6},设计顺序表并实现以下操作:A.初始化线性表;B.添加上述一组数;C.删除第四个数据元素;D.显示B,C操作后的结果。
软件工程第一次上机
软件工程上机实验(一)专业:班级:姓名:学号:1.第3章习题 1 ——银行计算机积蓄系统的工作过程大概以下:储户填写的存款单或取款单由业务员键入系统,假如是存款则系统记录存款人姓名、地址(或电话号码)、身份证号码、存款种类、存款日期、到期日期、利率、密码(可选)等信息,并印出存款单给储户;假如是取款并且存款时留有密码,则系统第一查对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
请用实体 -关系图 (ERD)描述系统中的数据对象(数据模型)。
2. 第 3 章习题2——为方便游客,某航空企业拟开发一个机票预约系统。
旅游社把预约机票的游客信息(姓名、性别、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为游客安排航班,印出取票通知和账单,游客在飞机腾飞的前一天凭取票通知和账单交款取票,系统校正无误即印出机票给游客。
请用实体 -关系图 (ERD)描述本系统中的数据对象(数据模型)。
3.第 3 章习题 3——当前住院病人主要由护士护理,这样做不单需要大批护士,并且因为不可以随时察看危重病人的病情变化,还会延迟急救机遇。
某医院打算开发一个以计算机为中心的患者监护系统,请画出本系统的实体关系图(ERD)。
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等 ) ,准时记录病人状况,以形成患者日记。
当某个病人的生理信号高出医生规定的安全范围时,向值班护士发出警示信息。
别的,护士在需要时还可以够要求系统印出某个指定病人的病情报告。
4、图书室系统有借书者、管理员、系统管理员和一般阅读者四种角色。
借书者是图书室的会员,拥有自己的帐户,能够借阅图书;一般阅读者是非图书室会员,只好经过网络阅读图书室的基本信息,如阅读者经过查问能够获得图书室供给的各样服务信息;借书者能够从图书室系统中借、还、续借和预约图书,还可查问自己的借书信息和系统状况等;一般管理员辅助借书者达成借书、还书、续借服务;系统管理员负责图书管理如图书编目和图书登记、借书者管理和一般管理员管理等任务。
软件工程第一次上机
软件工程第一次上机对于学习软件工程的学生来说,第一次上机是一次令人期待又充满挑战的经历。
那是我们从理论走向实践的第一步,也是我们真正接触代码世界的开端。
记得那一天,怀着紧张与兴奋的心情,我早早来到了机房。
机房里弥漫着一种特殊的氛围,电脑整齐排列,屏幕的微光映照着同学们略带期待的脸庞。
找到自己的座位坐下后,我迫不及待地打开电脑,准备迎接即将到来的挑战。
老师走进机房,开始为我们讲解本次上机的任务和要求。
这次的任务主要是熟悉编程环境,掌握基本的代码编写和调试技巧。
对于从未真正动手写过代码的我来说,这无疑是一个巨大的挑战。
老师演示完之后,就轮到我们自己动手操作了。
我打开编程软件,按照老师的指导,开始创建我的第一个项目。
然而,一开始就遇到了问题,我不知道如何正确地设置项目的参数,手忙脚乱地在菜单中寻找着相关选项。
旁边的同学似乎也遇到了同样的困惑,我们互相看了一眼,无奈地笑了笑,然后继续埋头研究。
经过一番摸索,终于成功创建了项目。
接下来就是编写代码了。
看着屏幕上空白的代码编辑区,我感到有些无从下手。
这时,我想起了课堂上学过的基础知识,开始慢慢地敲下一行行代码。
每敲下一个字符,心中都充满了期待,希望这段代码能够顺利运行。
但是,事情往往没有那么顺利。
当我满怀信心地点击运行按钮时,却弹出了一堆错误提示。
看着那些密密麻麻的错误信息,我瞬间感到一阵沮丧。
不过,我告诉自己不能轻易放弃,于是开始认真地分析错误原因。
有的错误是因为语法错误,少了一个分号或者括号不匹配;有的是逻辑错误,算法的实现没有达到预期的效果。
我对照着错误提示,一行一行地检查代码,修改错误。
这个过程就像是在解谜,每解决一个错误,都有一种小小的成就感。
在解决错误的过程中,我也向周围的同学请教。
大家互相交流,分享自己的经验和方法。
有的同学已经顺利地完成了任务,他们热心地帮助还在困惑中的同学。
在这种互帮互助的氛围中,我感受到了团队合作的力量。
经过不断地尝试和修改,我的代码终于成功运行了。
Auto CAD上机作业题(1)
《Auto.CAD》软件操作上机作业1.按要求打开Auto CAD软件后,先熟悉操作界面,将需要的工具栏准备妥当;2.作绘图窗口图形界限设置,并用Zoom命令作全部显现;3.作图层设置,根据图形特点,设置好所需的各类线型和线宽,如粗实线(连续,宽0.4或0.5mm),细实线(连续,宽0.2或0.25mm),点画线(若干段两长画带一点,宽0.2或0.25mm),虚线(短画间断,宽0.2或0.25mm)等,并先试画和调整线型比例,如需再设置图层或增加其他设置,待以后画图时再补;4.上述操作完成后,可将此设置保存,即以某一文件名(如:图面设置)存储文件。
作完一次作业后,将所作作业重新命名存盘。
重新打开已设置过的图面(如:重新打开“图面设置”),再作下次作业。
作业前,可参考下面一个作图示例,再分次作业。
作业举例:1.确定各图线层:点画线层,两种连续线层(粗和细),虚线层等。
2.建立用户坐标系。
3.假定以图形的左下角点为(0,0)点,先置点画线层为当前层,作图命令为:(参考)命令:Line↓指定第一点:50,60↓指定下一点或【放弃(U)】:↓命令:↓指定第一点:80,30↓指定下一点或【放弃(U)】:@0,60↓指定下一点或【放弃(U)】:↓(画好点画线)将粗实线层置为当前层,作图命令为:(参考)命令:Line↓指定第一点:0,0↓指定下一点或【放弃(U)】:120,0↓指定下一点或【放弃(U)】:@70<45↓指定下一点或【闭合(C)/ 放弃(U)】:@0, 50↓指定下一点或【闭合(C)/ 放弃(U)】:↓命令:Line↓指定第一点:0,0↓指定下一点或【放弃(U)】:0, 75↓指定下一点或【放弃(U)】:@25, 0↓指定下一点或【闭合(C)/ 放弃(U)】:@0,48↓指定下一点或【闭合(C)/ 放弃(U)】:@100, 0↓指定下一点或【闭合(C)/ 放弃(U)】:(用鼠标移动到长度为50的垂直线端点处单击)] 指定下一点或【闭合(C)/ 放弃(U)】:↓(画完外轮廓粗实线)命令:Circle↓指定圆的圆心或【三点(3P) /两点(2P)/相切、相切、半径(T)】:80,60↓指定圆的半径或【直径(D)】:25↓(画好圆)将虚线层置为当前层,作图命令为:(参考)命令:POLygon↓输入边的数目< 当前值>:6↓指定多边形的中心或【边(E)】:80,60↓输入选项【内接于圆(I)/外切于圆(C)】<I>:↓指定圆的半径:25↓(完成全图)第一次作业:熟悉图层、线型、线宽的设定,熟练进行坐标系的变换,点的坐标输入(绝对坐标和相对坐标,直角坐标和极坐标),LINE等画图命令的使用。
第一次上机练习内容
– 在该文件中输入一源程序(源程序可从书上找,也可从课件 上找)并保存; – 对源程序进行“编译”、“链接”和“运行”; – 重复以上过程(多建几个工程),以熟悉该编程环境。
•
二、输入以下源程Biblioteka (右面),并调试:– – – – 注意源程序中void,int(源程序中的关键字)的颜色; 看看并尝试分析程序的输出结果; 将printf(“Hello C!\n”);再复制一行,并看一下运行结果; 尝试在程序的最后再输出一行“Program terminated and returned to OS!”; – 将a=a*a;在相同位置再复制一行,运行并尝试分析运行结果; – 将int改成Int,看看它的颜色变化,并编译一次看一下错误提 示; – 将int a;这一行去掉,再编译并看一下错误提示。
#include <stdio.h>
void main(){ int a=2; printf(“Hello C!\n”); a=a*a; printf(“a=%d\n”,a); }
•
三、根据第二题的分析过程尝试对各源程序进行修改并分 析。
•
一、学习使用visual c++6.0编程环境练习C程序设计:
– 在D盘上建立一文件夹,如“C_PRAC”; – 打开visual C++ 6.0集成开发环境; – 新建一工程,如“prac1”;
• 注意工程类型为“win32 console application”
– 在工程中新建一源文件,如“cfile.c”;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、设有一个线性表E={e1, e2, … , en-1, en},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ en , en-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。
(文件夹:顺序表逆置、单链表逆置)
线性表:#include<>
#include<>
typedef char datatype;
const int maxsize=1024;
typedef struct
{ datatype data[maxsize];
int last;
}sequenlist;
void create(sequenlist*&);
void print(sequenlist*);
void invert(sequenlist*);
void main()
{
sequenlist*L;
create(L);
printf("建立的顺序表是:");
print(L);
invert(L);
printf("逆置后的顺序表是:");
print(L);
}
void create(sequenlist*&L)
{
L=(sequenlist*)malloc(sizeof(sequenlist));
L->last=0;
printf("请输入数据:");
char ch;
while((ch=getchar())!='\n')
{
L->last++;
L->data[L->last]=ch;
}
}
void print(sequenlist*L)
{
for(int i=1;i<=L->last;i++)
printf("%2c",L->data[i]);
printf("\n");
}
void invert(sequenlist*L)
{
int n=L->last/2;
for(int i=1;i<=n;i++)
{
char temp=L->data[i];
L->data[i]=L->data[L->last-i+1];
L->data[L->last-i+1]=temp;
}
}
链表:#include <>
#include <>
#include <>
typedef struct node
{
int data;
struct node *next;
}LinkNode, *LinkList;
LinkList Creat(LinkList head);
void Inverse(LinkList head);
void Output(LinkList head);
LinkList Creat(LinkList head)//头插法建表
{
char ch;
LinkList p = NULL;
LinkList q = NULL;
head = (LinkList) malloc (sizeof(LinkNode));
head->next = NULL;
q = head;
while ((ch=getchar())!='\n')
{
p = (LinkList) malloc (sizeof(LinkNode));
p->data=ch;
p->next=q->next;
q->next = p;
}
return head;
}
void Inverse(LinkList head)//逆置{
LinkList p = head->next;
LinkList tmp = NULL;
head->next = NULL;
while (p!=NULL )
{
tmp = p->next;
p->next = head->next;
head->next = p;
p = tmp;
}
}
void Output(LinkList head)//输出{
LinkList p = head->next;
while (p!= NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main(void)
{
LinkList head = NULL;
head = Creat(head);
printf("建立的单链表是:");
Output(head);
Inverse(head);
printf("逆置后的单链表是:");
Output(head);
system("pause");
return 0;
}
2、将两个非递减的有序链表合并为一个非递减的有序链表。
要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。
表中允许有重复的数据。
#include<iostream>
using namespace std;
typedef int ElemType;
//两个递增的链表合并成递增的链表。
typedef struct LNode
{
ElemType data;
struct LNode *next;
}
LNode;
typedef LNode *LinkList;
void CreatList(LinkList &L,int n)
{
LinkList p,q;
L=new LNode;
L->next=NULL;
q=L;
cout<<"请从小到大输入链表的元素:";
for (int i=1;i<=n;i++)
{
p=new LNode;
cin>>p->data;
p->next=q->next;
q->next=p;
q=q->next;
}
cout<<"所创建得的递增有序链表为:";
p=L->next;
for (int j=1;j<=n;j++)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
void CreatC(LinkList &A,LinkList &B,LinkList &C,int n)
{
LinkList pa,pb,pc,pre=NULL/*C结点的上一个结点*/,q/*t*/;
pa=A->next;
pb=B->next;
// C=t=A;// A
while (pa||pb)
{
if (!pb||((pa&&pb)&&(pa->data<pb->data))) {
////将A的元素插入新表
pc=pa;
q=pa->next;
pa->next=pre;
pa=q;
}
else
{
pc=pb;
q=pb->next;
pb->next=pre;
pb=q; //将B的元素插入新表
}
pre=pc;
}
cout<<"合并后的递增有序链表为:";
C=A;
A->next=pc;
pa=pc;
for (int j=1;j<=n;j++)
{
cout<<pa->data<<" ";
pa=pa->next;
}
cout<<endl;
getchar();
}
void main()
{
LinkList A,B,C;
int n,m,k;
cout<<"请输入链表A的长度:";
cin>>n;
CreatList(A,n);
cout<<"请输入链表B的长度:";
cin>>m;
CreatList(B,m);
k=m+n;
CreatC(A,B,C,k);
system(0);
getchar(); }。