C语言大作业西工大

合集下载

西北工业大学C语言大作业实验报告

西北工业大学C语言大作业实验报告

学院*****************目录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("*");}输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。

西北工业大学C语言大作业2

西北工业大学C语言大作业2

学院目录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习题答案

西工大C语言POJ习题答案

西工大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语言程序设计》作业机考参考答案

西工大2020年4月《C语言程序设计》作业机考参考答案

西工大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。

西工大C语言大作业习题答案

西工大C语言大作业习题答案

童鞋们,快来呀!答案!答案!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答案42310

西北工业大学2020春机考《C语言程序设计》作业1答案42310
19.设有定义:char p[]={′1′,′2′,′3′,*q=p;,以下不能计算出一个 char 型数据所占字节数 的表达式是( )。 A.sizeof(p) B.sizeof(char) C.sizeof(*q) D.sizeof(p[0]) 答案:A
20.假定 x 和 y 为 double 型,则表达式 x=2,y=x+3/2 的值是( )。 A.3.500000 B.3 C.2.000000 D.3.000000 答案:D
5.若有语句 scanf("%d%d",&a,&b);要使变量 a,b 分别得到 10 和 20,正确的输入形式为( )。 A.10 20 B.10,20 C.1020 D.10:20 答案:A
6.有以下定义 #include char a[10],*b=a; 不能给 a 数组输入字符串的语句是( )。 A.gets(a) B.gets(a[0]); C.gets(&a[0]); D.gets(b) 答案:B
11.C 语言规定,在一个源程序中,main 函数的位置( )。 A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 答案:C
12.下面各选项中,均是 C 语言合法标识符的选项组是( )。 A.33 we auto B._23 me _3ew C._43 3e_ else D.ER -DF 32 答案:B
22.请选出可用作 C 语言用户标识符的是( )。 A.void,define,WORD B.a3_b3,_123,IF C.FOR,--abc,Case D.2a,Do,Sizeof 答案:B
23.说明语句 int *(*p)(); 的含义是( )。 A.p 是一个指向 int 型数组的指针 B.p 是指针变量,它构成了指针数组 C.p 是一个指向函数的指针,该函数的返回值是一个整型 D.p 是一个指向函数的指针,该函数的返回值是一个指向整型的指针 答案:D

西北工业大学2020春机考《C语言程序设计》答案 -

西北工业大学2020春机考《C语言程序设计》答案 -

西北工业大学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语言试题

西工大c语言试题

西工大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的值是。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int Visited[MAX_VERTEX_NUM]; int PrintCheck(ALGraph* pag) {
int i; ArcNode* p; printf("\nCheck the Graph!\n"); printf("No\tdata\tnext\tnext\t.....\n"); for(i=0; i<pag->vexnum; i++) {
ag.arcnum = i;
printf("\n 初始化图的边,结点从 0 开始计,最大为%d\n",n-1); for(i=1; i<=ag.arcnum; i++) {
while(1) {
printf("第<%d>条边的起点: ",i); fflush(stdin); scanf("%d",&start);
m = (n-2)*(n+1)/2+1;
while(1) {
printf("请输入边的数量: "); fflush(stdin); scanf("%d",&i);
if(i<=m && i>=0) break; else printf("\n 请注意边的数量不能大于%d,并且不能小于 1!\n",m); }
所有节点都搜索到了之后才向下一层搜索。
四、实验步骤 1.建立图的存储结构; 2.输入图的基本接点与信息,初始化图; 3.编写图的深度优先搜索(DFS)和广度优先搜索算法(BFS)程序; 4.采用菜单形式进行显示与选择。 5.测试数据和结果显示 (1)从键盘输入顶点数和边数; (2)输入顶点信息; (3)输入边的信息,以(a,b)的形式输入边的信息,构建一个无向图; (4)对此无向图进行深度优先搜索和广度优先搜索,并输出正确的序列。
char cData; ArcNode* firstarc; }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum; int arcnum; }ALGraph; typedef struct LinkNode{ ArcNode* parc; struct LinkNode* next; }LinkNode;
return 1; } void DFS(ALGraph ag,int start) {
LinkNode* Stack = (LinkNode*)malloc(sizeof(LinkNode)); LinkNode* pStack = (LinkNode*)malloc(sizeof(LinkNode)); LinkNode* temp; ArcNode* p; int i; if(!pStack||!Stack)
课程名称 实验项目
实验报告 数据结构 实现深度优先搜索与广度优先搜索算法
一、实验目的 1、通过本实验,掌握图,无向图的基本概念,掌握图的遍历; 2、掌握图的深度优先搜索(DFS)与广度优先搜索(BFS)算法。
二、实验内容 1、建立图的存储方式; 2、图的深度优先搜索算法; 3、图的广度优先搜索算法。
{
if(!Visited[i])
printf(" %c ",ag.vertices[i].cData);
p = ag.vertices[i].firstarc;
}
if(i = ag.vexnum)
break;
}
printf("\n\n");
}
void main()
{
ALGraph ag;
int i,n,m;
return; Stack->next=NULL; p=ag.vertices[start].firstarc; Visited[start]=1; printf("\n 输出深度优先遍历顺序:"); printf(" %c ",ag.vertices[start].cData); while(1) {
五、程序源代码及注释
#include<stdio.h> #include<malloc.h> #include<windows.h> #define MAX_VERTEX_NUM 20 typedef struct ArcNode{
int adjvex;
struct ArcNode* nextarc; }ArcNode; typedef struct VNode{
last->next = pQueue;
last = last->next;
}
p = p->nextarc;
}
temp = Queue->next;
p = ag.vertices[temp->parc->adjvex].firstarc;
Queue ->next = temp->next;
}
for(i=0; i<ag.vexnum; i++)
Visited[start] = 1;
while(1)
{
pQueue->parc = p;
Queue->next = pQueue;
pQueue->next = NULL;
last = pQueue;
while(p && Queue->next)
{
while(p)
{
if(!Visited[p->adjvex])
DFS(ag,choose);
i = 0; while(Visited[i]!='\0') {
arcNodes->nextarc = pag->vertices[start].firstarc; pag->vertices[start].firstarc = arcNodes; } else{ while(p->nextarc) p = p->nextarc; p->nextarc = arcNodes; arcNodes->nextarc = NULL; } arcNodee->adjvex = start; p = pag->vertices[end].firstarc; if(!p) { arcNodee->nextarc = pag->vertices[end].firstarc; pag->vertices[end].firstarc = arcNodee; } else{ while(p->nextarc) p = p->nextarc; p->nextarc = arcNodee; arcNodee->nextarc = NULL; }
printf("%d\t%c\t",i,pag->vertices[i].cData); p = pag->vertices[i].firstarc; while(p) {
printf("%d\t",p->adjvex); p = p->nextarc; } printf("\n"); } return 1; } int CreateGraph(ALGraph* pag,int start,int end) { ArcNode* arcNodes = (ArcNode*)malloc(sizeof(ArcNode)); ArcNode* arcNodee = (ArcNode*)malloc(sizeof(ArcNode)); ArcNode* p; if(!arcNodes || !arcNodee) return 0; arcNodes->adjvex = end; p = pag->vertices[start].firstarc; if(!p) {
{
LinkNode* Queue = (LinkNode*)malloc(sizeof(LinkNode));
LinkNode* pQueue = (LinkNode*)malloc(sizeof(LinkNode));
LinkNode* temp;
LinkNode* last;
ArcNode* p;
pStack->parc = p; pStack->next = Stack->next; Stack->next = pStack; while(p && (Stack->next)) {
while(p) {
if(Visited[p->adjvex]) p=p->nextarc;
else
{
Visited[p->adjvex]=1;
int choose;
int start,end;
while(1)
{
printf("请输入图的结点个数,并回车: ");
scanf("%d",&n);
if(n<MAX_VERTEX_NUM && n>0)
break; else printf("\n 请注意结点个数不能大于 20,并且不能为 0!\n"); }
ag.vexnum = n;
printf("\n 初始化图的结点,输入字符并回车:\n"); for(i=0; i<ag.vexnum; i++) {
printf("No.%d = ",i); fflush(stdin); scanf("%c",&ag.vertices[i].cData); ag.vertices[i].firstarc = NULL; }
相关文档
最新文档