西北工业大学C语言大作业1
西北工业大学C语言大作业实验报告
![西北工业大学C语言大作业实验报告](https://img.taocdn.com/s3/m/0dd5fae9e009581b6bd9eb93.png)
学院*****************目录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("*");}输入模块:引导使用者输入要在其中查找数据的数表的数据个数和数表数据。
2009C语言试题西北工业大学
![2009C语言试题西北工业大学](https://img.taocdn.com/s3/m/59b41b234b35eefdc8d3336e.png)
西北工业大学命题专用纸
班
级
:
学
号
:
姓
名
:
{for ( j = 1; j < = i; j + +)
_________②____________
__________③___________
}
}
2以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出.所谓回文即正向与反向的拼写都一样,例如:adgda.请填空。
1对于下面的表示,请在相应的小题前面的()内填入A,B,C,D,E,F,G。A,B,C,D,E,F,G的含义如下:
A合法的标示符B C语言的关键字C合法的字符串D合法的字符常数
E合法的整常数F合法的浮点常数G非法表示
(B)(1) register
(A)(2) RETURN
(C)(3) "a"
(D)(4) ‘\"’
void main(void)
{
static int a[] = {1, 3, 5, 7};
int *p[3] = {a+2, a+1, a};
int **q = p;
printf(“%d\n”, *(p[0]+1) + **(q+2));
}
运行结果是:
4. include <stdio.h>
fut(int **s, int p[2][3])
}
4.有语句:char A[ ]={“I am a student”};该字符串的长度是______,A[3]= ______.
西工大C语言大作业习题答案
![西工大C语言大作业习题答案](https://img.taocdn.com/s3/m/ae2423c70508763231121299.png)
童鞋们,快来呀!答案!答案!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](https://img.taocdn.com/s3/m/93a44a27d1f34693daef3edd.png)
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语言程序设计》答案 -](https://img.taocdn.com/s3/m/cf46c928f524ccbff12184e8.png)
西北工业大学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语言试题](https://img.taocdn.com/s3/m/e6658660bf1e650e52ea551810a6f524ccbfcbd9.png)
西工大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的值是。
西北大学C语言课后习题第一章
![西北大学C语言课后习题第一章](https://img.taocdn.com/s3/m/a28fea618e9951e79a892711.png)
3、点击文件—新建—Win32 Console Application——输入名称——点击确定
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
新建立一个C语言文件的步骤:
4、在弹出来的这个页面中一般选择第一个“一个空工程”,点击完成
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
新建立一个C语言文件的步骤:
5、在弹出来的这个页面中点击确定
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
新建立一个C语言文件的步骤:
6、再次点击 文件—新建—C++ Source File—输入——点击确定
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
新建立一个C语言文件的步骤:
4. 然后输入printf("我很聪明\n");,其中,printf函数有一对圆括号,还有一对双引号,最后还跟着一个分号
5. 依次点击图中标注的三个按钮,即可得到结果
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
开始你的C语言生涯吧!
谢谢大家
若有问题,欢迎微博提问 @Wch噢耶
C 语言辅导第一章 我们毕业啦
其实是答辩的标题地方
吴慈航 讲解人 化工学院2013级能源化学工程 西北大学学生校长助理,特等奖学金获得者
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
配套教材见右图
本章不讲解习题,仅介绍VC使用
VC 的使用
由于第一章均为概念性题目,在此不讲解 等大家学完这本书后再回过头来看效果会更好 不讲解本章习题不影响后续章节的学习
7、恭喜你,你的第一个C语言程序界面已经设置完成
西工大18秋《C语言程序设计》平时作业
![西工大18秋《C语言程序设计》平时作业](https://img.taocdn.com/s3/m/091e8a91960590c69ec3765a.png)
9.
1
A.A
B.B
C.C
D.D
10.下面对typedef的叙述中不正确的是( )。
A.用typedef可以定义各种类型名,但不能用来定义变量
B.用typedef可以增加新类型
C.用typedef只是将已存在的类型用一个新的标识符来代表
D.使用typedef有利于程序的通用和移植
D.a[3][4]
22.
1
A.666
B.668966
C.66778777
D.6688766
23.
1
A.A
B.B
C.C
D.D
24.
1
A.1
B.2
C.3
D.4
25.在C语言中,定义数组元素时,下面关于数组下标数据类型的说法错误的是( )。
A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
B.文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作
C.文件打开时,原有文件内容被删除,只可作写操作
D.以上说法都不正确
19.
1
A.double fun(int x,double y)
11.
1
A.10
B.15
C.100
D.150
12.
1
A.A
B.B
C.C
D.D
13.
1
A.A
B.B
C.C
D.D
14.一个C程序总是从( )函数开始运行的。
A.main
西北工业大学2020春机考《C语言程序设计》作业1答案42310
![西北工业大学2020春机考《C语言程序设计》作业1答案42310](https://img.taocdn.com/s3/m/93a44a27d1f34693daef3edd.png)
18.以下选项中,不能作为合法常量的是( )。 A.1.234e04 B.1.234e0.4 C.1.234e+4 D.1.234e0 答案:B
7.当 c 的值不为 0 时,在下列选项中能够将 c 的值赋给变量 a、b 的是( )。 A.c=b=a; B.(a=c)||(b=c); C.(a=c)&&(b=c);
D.a=c=b; 答案:C
8.以下描述中正确的是( )。 A.由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B.do-while 循环由 do 开始,用 while 结束,在 while(表达式)后面不能写分号 C.在 do-while 循环体中,是先执行一次循环,再进行判断 D.do-while 循环中,根据情况可以省略 while 答案:C
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
21.以下不正确的叙述是( )。
A.在 C 程序中,逗号运算符的优先级最低 B.在 C 程序中,APH 和 aph 是两个不同的变量 C.若 a 和 b 类型相同,在计算了赋值表达式 a=b 后 b 中的值将放入 a 中,而 b 中的值不变 D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 答案:D
c语言试题1有答案
![c语言试题1有答案](https://img.taocdn.com/s3/m/52197faa2cc58bd63186bde5.png)
一、单项选择题(每题2分,15小题,共30分)1.C语言源程序是由组成的。
A) 过程B) 函数C) 子程序D) 主程序和子程序2.一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是。
A) 有零个或多个输入B) 有零个或多个输出C) 有穷性D) 可行性3.以下选项中合法的C语言标识符是。
A) long B) _2Test C) 3Dmax D) A.dat4.下列转义字符中错误的是。
A) '\000' B) '\14' C) '\x111' D) '\2'5.对于语句:f=(3.0,4.0,5.0),(2.0,1.0,0.0);的判断中,是正确的。
A) 语法错误B) f为5.0 C) f为0.0 D) f为2.06.若变量a,b已经正确定义并赋值,符合C语言语法的表达式是。
A) a2+b B) a*a+b C) a×a+b D) a·a+b7.有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,则正确的数据输入方式是。
A) 132↙B) 1,3,2↙C) a=1b=3c=2↙D) a=1,b=3,c=2↙8.若 w=1,x=2,y=3,z=4,则条件表达式w<x ?w : y<z ?y : z的值是。
A) 4 B) 3 C) 2 D) 19.设int a=0,b=0,m=0,n=0;则执行(m = a==b)||(n = b==a)后m和n的值分别是。
A) 0,0 B) 0,1 C) 1,0 D) 1,110.以下for循环的执行次数是。
for (x=0,y=0; (y=123)&&(x<4);x++) ;A) 无限循环B) 循环次数不定C) 4次D) 3次11.下面程序段的输出结果是。
西北工业大学C大作业第题
![西北工业大学C大作业第题](https://img.taocdn.com/s3/m/89a4e907c1c708a1294a4497.png)
作业名称:学生通讯录管理系统学院:自动化学院班级:学号:姓名:团队组成:西北工业大学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;}。
c语言试题含答案
![c语言试题含答案](https://img.taocdn.com/s3/m/e199abc38bd63186bcebbc66.png)
西北工业大学印制
共 9 页
第 3 页
3.写出下面程序的运行结果。 #include <stdio.h> void main() { int k=1,n=263 ; do { k*= n%10 ; n/=10 ; } while (n) ; printf("%d\n",k); } 4.下面程序的功能是:将 n 个无序整数从小到大排序;判断下面程序的正误,如果错误请改正过来。 #include <stdio.h> void main() { int a[100], i, j, p, t, n=20 ; for ( j = 0; j<n ; j++ ) scanf(”%d”, &a[j]), for ( j = 0; j<n-1 ; j++ ) { p = j; for ( i=j+1; i<n-1 ; i++ ) if ( a[p]>a[i] ) t=i; if ( p!=j ) { t = a[j]; a[j] = a[p]; a[p] = t; } } for ( j = 0; j<n ; j++ ) printf(”%d” &a[j]); , }
。 的值是 b
。
17.将文件指针移到文件当前位置前 40 个字节的 C 语言语句是 指针移到文件当前位置后 10 个字节的 C 语言语句是 三、综合题(每题 6 分,5 小题,共 30 分) 1.写出下面程序执行后的运行结果。 #include <stdio.h> void main() { int y=3,x=3,z=1; printf("%d %d\n",(++x,y++),z+2); } 。
C语言大作业西工大
![C语言大作业西工大](https://img.taocdn.com/s3/m/7ed6d18883d049649b6658d1.png)
五、程序源代码及注释
#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{
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)
DFS(ag,choose);
i = 0; while(Visited[i]!='\0') {
int i;
if(!Queue || !pQueue)
return;
Queue->next = NULL;
printf("\n 输出广度优先遍历次序:");
printf(" %c ",ag.vertices[start].cData);
p = ag.vertices[start].firstarc;
last->next = pQueue;
last = last->next;
}
p = p->nextarc;
}
temp = Queue->next;
NWPU的C语言大作业答案
![NWPU的C语言大作业答案](https://img.taocdn.com/s3/m/edd27245852458fb770b5617.png)
学院目录1 摘要 (4)1.1设计题目 (4)1.2设计内容 (4)1.3开发工具 (4)1.4应用平台 (4)2 系统设计 (5)2.1系统结构 (5)2.2主要功能 (5)3 详细设计 (6)3.1主要数据结构的设计 (6)3.2头文件的设计 (8)3.3系统中的函数原型 (8)4. 系统的实现 (6)4.1MAIN()的设计与实现 (8)4.2重要输入/出函数的实现 (8)4.3重要的数据处理函数的算法设计与实现 (8)5 程序调试及运行 (6)5.1程序运行结果 (6)5.2程序使用说明 (8)5.3程序开发总结 (8)5.4开发日志 (8)6 附件(源程序) (9)/*在后面的文档编写中,请你不要修改各个标题的内容,从而确保报告内容和风格一致。
完成全部内容后,你只需要在上面的目录上右键“更新域”,选择“只更新页码”就可以更新正确的目录页码。
注意:目录的左边距为6.5厘米。
*/1 摘要1.1 设计题目1.数学型12捕鱼和分鱼2.数学型184位反序数1.2 设计内容/*请在这里详细描述你将要设计的程序内容*/1.数学型12ABCDE五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方去睡觉。
日上三竿,A第一个醒来,他将鱼分成五份,把多余的一条鱼扔掉,拿走自己的一份。
B第二个醒来,也将鱼分成五份,把多余的一条鱼扔掉,也拿走自己的那一份。
CDE依次醒来,也按同样的方法拿鱼,问他们合伙至少捕了多少鱼?2.数学型184位反序数设有一四位数,它的9倍恰好是其反序数。
求这数字。
反序数就是将整数的数字倒过形成的整数。
1.3 开发工具Visual C++ 6.01.4 应用平台软件环境:Windows 98/2000/XP/ME。
硬件环境:CPU 主频1.0GHz以上;内存128MB以上。
2系统的设计及主要功能2.1系统结构/*请在这里详细描述你的程序的整体结构,* /(1)由主函数开始对问题进行分析,并调用其他函数对其进行处理,最后输出想要的数值。
西工大20春《C语言程序设计》在线作业参考答案
![西工大20春《C语言程序设计》在线作业参考答案](https://img.taocdn.com/s3/m/94df8a85a5e9856a57126086.png)
B.4,2
C.2,4
D.2,2
答案:C
29.{图}
1
A.62,75
B.56,70
C.40,0
D.0,0
答案:C
30.以下函数定义首部形式正确的是()。
A.double fun(int x;int y)
B.double fun(int x.int y);
C.double fun(int x,y)
A.=
B./
C.*
D.%
答案:D
4.{图}1
A.stutype是用户定义的结构体类型名
B.struct是结构体类型的关键字
C.struct stu是用户定义的结构体类型
D.a和b都是结构体成员名
答案:A
5.{图}
1
A.D
B.C
C.B
D.A
答案:C
6.{图}
1
A.语句void prt_char();有错,它是函数调用语句,不能用void说明
C.数值运算算法
D.形式运算
答案:AC
39.C程序注释是由( )所界定的文字信息组成的。
A./*
B.*/
C.&
D.#
答案:AB
40.函数体一般包括( )两部分。
A.操作
B.执行
C.形式
D.声明
答案:BD
以下内容不需要的请自行删除
德国企业是欧洲企业的代表
1.企业培训。德国企业培训的突出特点是注重能力的培养,解决实际存在的问题。通过探讨和实验寻求解决问题的最佳途径和方法,给每个员工充分的自由发挥的空间,极大地调动了他们的积极性,也大大地提高了参训学员的素质和解决问题的能力。德国企业培训工作还有一个十分重要的任务,就是让员工认同企业的价值观。
西工大C语言上机考试题库
![西工大C语言上机考试题库](https://img.taocdn.com/s3/m/8ab2d09a551810a6f4248628.png)
1:2:3#include<stdio.h>#include<math.h>int main(){int i=0,j=0,k=0,a=0,b=0,c=0,l=0,m=0,n=0,d=0,p=0,q=0;for(i=1;i<=3;i++){for(j=1;j<=9;j++){if(i!=j){for(k=1;k<=9;k++){if(k!=j&&i!=k){a=i*100+j*10+k;b=a*2;c=a*3;l=b%10,d=c%10;m=(b%100)/10,p=(c%100)/10;n=b/100,q=c/100;if(l!=0&&m!=0&&n!=0&&d!=0&&p!=0&&q!=0)if(i!=l&&i!=m&&i!=n&&j!=l&&j!=m&&j!=n&&k!=l&&k!=m&&k!=n) if(i!=d&&i!=p&&i!=q&&j!=d&&j!=p&&j!=q&&k!=d&&k!=p&&k!=q)if(l!=d&&l!=p&&l!=q&&m!=d&&m!=p&&m!=q&&n!=d&&n!=p&&n!=q)printf("%d %d %d\n",a,b,c);}}}}}return 0;}8#include"stdio.h"int main(){int a,b[10],m=0,n=0,p;int i,j,k;scanf("%d",&a);for(i=1;i<=a;i++){m=0;n=0;p=i;for(j=0;p!=0;j++){b[j]=p%10;p=p/10;}for(k=0;k<j;k++){m=m+b[k];if(b[k]==8){n=1;}}if(m%8==0){printf("%d ",i);continue;}if(i%8==0){printf("%d ",i);continue;}if(n==1){printf("%d ",i);continue;}}return 0;}8的次数A*B#include <stdio.h>#include <string.h>#include <stdlib.h>void cheng(char a[],char b[]){int i,j,ca,cb,*s;ca=strlen(a);cb=strlen(b);s=(int *)malloc(sizeof(int)*(ca+cb));for (i=0;i<ca+cb;i++) s[i]=0;for (i=0;i<ca;i++)for (j=0;j<cb;j++)s[i+j+1]+=(a[i]-'0')*(b[j]-'0');for (i=ca+cb-1;i>=0;i--)if (s[i]>=10){s[i-1]+=s[i]/10;s[i]%=10;}i=0;while(s[i]==0) i++;for (;i<ca+cb;i++) printf("%d",s[i]);printf("\n");free(s);}int main(){char a[100],b[100];gets(a),gets(b);if(a[0]=='-'&&b[0]!='-'){printf("-");cheng(&a[1],b);}else if(a[0]=='-'&&b[0]=='-'){cheng(&a[1],&b[1]);}else if(a[0]!='-'&&b[0]=='-'){printf("-");cheng(a,&b[1]);}elsecheng(a,b);return 0;}N边形面积#include<stdio.h>#include<math.h>#define PI 3.1415926int main(){double s,a;int n;scanf("%d %lf",&n,&a); s=a*a*n/(2*2*tan(PI/n)); printf("%.2lf\n",s); return 0;}参加竞赛#include<stdio.h>int main(){int a,b,c,d,e;for(a=0;a<2;a++)for(b=0;b<2;b++)for(c=0;c<2;c++)for(d=0;d<2;d++)for(e=0;e<2;e++)if(((a==1&&b==1)||(a==0&&b==0))&&((b==0&&c==1)||(b==1&&c==0))&&((c==1&&d==1)||(c==0&&d==0))&&(!(d==0&&e==0))&&((e==1&&a==1&&d==1)||(e==0))) { if(a==1){printf("A ");}if(b==1){printf("B ");}if(c==1){printf("C ");}if(d==1){printf("D ");}if(e==1){printf("E ");} }return 0;}草坪喷水插入排序#include<stdio.h>void sort(int a[],int n){int i;int k;int t;for(i=1;i<n;i++){t=a[i];k=i-1;while(t<a[k]){a[k+1]=a[k];k--;if(k==-1)break;}a[k+1]=t;}}int main(){int n;int a[100];int i;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,n);printf("\n");for(i=0;i<n;i++)if(i==n-1)printf("%d\n",a[i]);else printf("%d ",a[i]);return 0;}查找车牌号#include<stdio.h> #include<math.h>int main(){int i,j,n;for(i=1;i<=9;i++){for(j=0;j<=9;j++){for(n=33;n<=100;n++){if((n*n)==(i*1100+j*11))printf("%d",i*1100+j*11);}}}return 0;}成绩转化乘完倒序尺子刻度大数除法大数减法#include <stdio.h>#include <string.h>#define max(a,b) a>b?a:b#define min(a,b) a>b?b:aint sum[101];void jia(char a[],char b[]){int flag=0,i,len1,len2,lenmax,lenmin;len1=strlen(a),len2=strlen(b);lenmax=max(len1,len2),lenmin=min(len1,len2); for(i=1;i<=lenmax;i++){if(i<=lenmin){sum[lenmax-i]=a[len1-i]+b[len2-i]-'0'-'0'+flag;if(sum[lenmax-i]>=10){sum[lenmax-i]=sum[lenmax-i]-10;flag=1;}else flag=0;}else{if(len1>len2){sum[lenmax-i]=a[len1-i]-'0'+flag;if(sum[lenmax-i]>=10){sum[lenmax-i]=sum[lenmax-i]-10;flag=1;}else flag=0;}else{sum[lenmax-i]=b[len2-i]-'0'+flag;if(sum[lenmax-i]>=10){sum[lenmax-i]=sum[lenmax-i]-10;flag=1;}else flag=0;}}}if(flag==1)printf("1");for(i=0;i<lenmax;i++)printf("%d",sum[i]);printf("\n");}void jian(char a[],char b[]){int flag=0,i;int len1,len2;len1=strlen(a),len2=strlen(b);for(i=1;i<=len1;i++){if(i<=len2){if(a[len1-i]-b[len2-i]-flag>=0){sum[len1-i]=a[len1-i]-b[len2-i]-flag;flag=0;}else{sum[len1-i]=a[len1-i]-b[len2-i]-flag+10;flag=1;}}else{if(a[len1-i]-flag-'0'>=0){sum[len1-i]=a[len1-i]-flag-'0';flag=0;}else{sum[len1-i]=a[len1-i]-flag+10-'0';flag=1;}}}for(i=0;i<len1&&sum[i]==0;i++);for(;i<len1;i++)printf("%d",sum[i]);printf("\n");}void compare(char a[],char b[]){int len1,len2;len1=strlen(a),len2=strlen(b);if(len1>len2||(len1==len2&&strcmp(a,b)>0)) jian(a,b);else if(strcmp(a,b)!=0){printf("-");jian(b,a);}elseprintf("0\n");}int main(){char a[100],b[100];gets(a);gets(b);if(a[0]=='-'&&b[0]!='-'){printf("-");jia(&a[1],b);}else if(a[0]=='-'&&b[0]=='-')compare(&b[1],&a[1]);else if(a[0]!='-'&&b[0]=='-')jia(a,&b[1]);elsecompare(a,b);return 0;}大写变小写#include<stdio.h>#include<string.h>int main(){char s[80];int len,i;gets(s);len=strlen(s);for(i=0;i<len;i++){if(s[i]>='a'&&s[i]<='z')s[i]=s[i]-32; }puts(s);return 0;}到底星期几等比数列#include <stdio.h>#include <stdlib.h>int main(){int m,n,sum;scanf ("%d",&m);for (n=1; ;n++) {sum=(3*n-1)*n/2; if (sum>m) break;}printf ("%d",n);return 0;}分数#include<stdio.h> int main(){int k,x=1,y=1;float a,b;scanf("%d",&k);for(;y<=5000;y++){for(x=y;x<=5000;x++){a=1.0/k;b=1.0/x+1.0/y;if(a==b)printf("1/%d=1/%d+1/%d\n",k,x,y);}}return 0;}韩信点兵#include<stdio.h>int main(){int n,i;for (i=0;;i++) {if (i%5==2&&i%6==3&&i%7==4&&i%11==5) {printf("%d",i);break;} }return 0;}回文字符串#include<stdio.h>#include<string.h>#include<ctype.h>#define MAXN 5000+10 char buf[MAXN],s[MAXN]; int p[MAXN];int main(){int n,m=0,max=0,x,y;int i,j;fgets(buf,sizeof(s),stdin);n=strlen(buf);for(i=0;i<n;i++){if(isalpha(buf[i])){p[m]=i;s[m++]=toupper(buf[i]);}}for(i=0;i<m;i++){for(j=0;i-j>=0&&i+j<m;j++){if(s[i-j]!=s[i+j])break;if(j*2+1>max){max=j*2+1;x=p[i-j];y=p[i+j];} }for(j=0;i-j>=0&&i+j+1<m;j++){if(s[i-j]!=s[i+j+1])break;if(j*2+2>max){max=j*2+2;x=p[i-j];y=p[i+j+1];} }}for(i=x;i<=y;i++)printf("%c",buf[i]);printf("\n");return 0;}#include<iostream>using namespace std;int main(){char A[5000],B[5000];int a=0,b,c,d,e,f,n=0,m,p,q,C[5000];while((A[a]=cin.get())!='\n') a++;for(b=0,c=0;b<=a-1;b++){if((A[b]>=65&&A[b]<=90)||(A[b]>=97&&A[b]<=122)){B[c]=A[b],C[c]=b;if(B[c]>=97&&B[c]<=122) B[c]=B[c]-32;c++;}}B[c]=32;for(d=0;d<=c-2;d++){if(B[d]==B[d+1]) e=d,f=d+1,a=1;else if(B[d]==B[d+2]) e=d,f=d+2,a=1;else continue;while(e-1>=0&&f+1<=c&&B[e-1]==B[f+1]) e--,f++;m=f-e;if(m>n) n=m,p=e,q=f;}for(a=C[p];a<=C[q];a++)cout<<A[a];cout<<endl;}鸡的体重计算数据整数部分加密#include<stdio.h>#include<string.h>int main(){FILE*pi;pi=fopen("in.dat","w");char A[1000],B[1000];int i,n;gets(A);n=strlen(A);for(i=0;i<n;i++){fprintf(pi,"%c",A[i]);if('A'<=A[i]<'Z'||'a'<=A[i]<'z')B[i]=A[i]+1;if(A[i]=='Z'||A[i]=='z')B[i]=A[i]-25;}for(i=0;i<n;i++)printf("%c",B[i]);fclose(pi);return 0;}阶乘#include<stdio.h>int main(){int n;int i=2;int j=1;scanf("%d",&n); while(1){j=j*i;if(j>n) break;i++;}printf("%d\n",i-1); return 0;}卡片恐怖水母#include<stdio.h>void paixu(int A[],int m){int i=1,n=0,j=0;for(;j<m;j++){for(i=j+1;i<m;i++){if(A[i]<A[j]){n=A[j];A[j]=A[i];A[i]=n;}}}}int main(){int n=0,m=0,A[100]={0},B[100]={0},i=0,j=0,k=0;scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%d",&A[i]); }for(i=0;i<m;i++){scanf("%d",&B[i]); }if(m<n){printf("NULL\n");}else{paixu(A,n);paixu(B,m);for(i=0;i<m;i++) {if(A[0]<=B[i]){if(m-i>=n){for(k=0;k<n;k++) {j+=B[i+k];}printf("%d\n",j);}else{printf("NULL\n");}break;}}}return 0;}快速排序#include<stdio.h>void QuickSort(int A[],int n,int L,int R) {int i,j,t;if(L<R){i=L;j=R+1;while(1){while(i+1<n&&A[++i]<A[L]);while(j-1>-1&&A[--j]>A[L]);if(i>=j)break;t=A[i];A[i]=A[j];A[j]=t;}t=A[L],A[L]=A[j],A[j]=t;QuickSort(A,n,L,j-1);QuickSort(A,n,j+1,R);}}int main(){int A[1000],n,i,j,p;scanf("%d",&n);if(n>=1000) {printf("Overflow!!!") ;return 0; }//输入要排序的元素的数目,若大于1000则结束程序输出“Overflow!!!”for(i=0;i<n;i++)scanf("%d",&A[i]); //输入元素QuickSort(A,n,0,n-1);for(i=n-1;i>=0;i--)printf("%d ",A[i]); //输出排序好的结果return 0;}两人三足#include<stdio.h>int main(){int n,a[50],i,j,t,sum=0;scanf("%d\n",&n);for (i=0;i<n;i++) scanf("%d",&a[i]);for (i=0;i<n;i++) {for (j=0;j<n-i-1;j++) {if (a[j]<a[j+1]) t=a[j],a[j]=a[j+1],a[j+1]=t;}}for (i=0;i<n;i+=2) sum+=a[i];printf("%d",sum);return 0;}逆序输出偶数和#include <stdio.h>#include <stdlib.h>int main(){int n,i,sum=0;scanf("%d",&n);int a[n];for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++){if(i%2==0)sum=sum+a[i];} printf("%d",sum);return 0;}三角形面积士兵移动输出位数#include<stdio.h>int main(){int i,n;scanf("%d",&n);for(i=1;;i++){if(n/10==0)break;else n=n/10;}printf("%d",i);}数列#include<stdio.h>int main(){int A[10],B[5],i;double C[5];for(i=0;i<5;i++)scanf("%d",&A[i]);for(i=0;i<4;i++){B[i]=A[i+1]-A[i];C[i]=(double)A[i+1]/A[i];}if(B[0]==B[1]&&B[1]==B[2]&&B[2]==B[3]){for(i=5;i<10;i++)A[i]=A[i-1]+B[0],printf("%d ",A[i]);return 0;}if(C[0]==C[1]&&C[1]==C[2]&&C[2]==C[3]){for(i=5;i<10;i++)A[i]=A[i-1]*C[0],printf("%d ",A[i]);return 0;}if((A[0]+A[1]==A[2])&&(A[1]+A[2]==A[3])&&(A[2]+A[3]==A[4])){ for(i=5;i<10;i++)A[i]=A[i-1]+A[i-2],printf("%d ",A[i]);return 0;}printf("NULL");return 0;}数字加密数组元素和水仙花数提取字符串#include <stdio.h>#include<string.h>int main(){char A[100];char l[100];gets(A);int m,n,i,j;scanf("%d",&m);n=strlen(A);for (i=m;i<n;i++){l[i]=A[i];}for (j=m;j<n;j++){printf("%c",l[j]);}printf("\n");return 0;}添加行号#include<stdio.h>#include<string.h>int main(){char A[3][100],B[3][100];int i;FILE*fp;fp=fopen("b.c","w");for(i=0;i<3;i++)gets(A[i]);fprintf(fp,"0001 ");fputs(A[0],fp);fprintf(fp,"\n""0002 ");fputs(A[1],fp);fprintf(fp,"\n""0003 ");fputs(A[2],fp);fprintf(fp,"\n");fclose(fp);printf("0001 ");puts(A[0]);printf("0002 ");puts(A[1]);printf("0003 ");puts(A[2]);return 0;}舞伴配对相乘后位数相加#include <stdio.h>int main(){int k;long a,b;scanf("%ld%ld",&a,&b);if(a==0||b==0)printf("0\n");else{k=(a%9)*(b%9)%9;if(k==0)printf("9\n");elseprintf("%d\n",k);}return 0;}#include <iostream>using namespace std;int main(){char A[13],B[13];int a=0,b=0,c,d,e,f,m=0,X[13],Y[13]; for(c=0;c<=12;c++)X[c]=0,Y[c]=0;while((A[a]=cin.get())!=32) a++; while((B[b]=cin.get())!='\n') b++; for(c=0,a--;a>=0;a--,c++)X[c]=A[a]-48;for(d=0,b--;b>=0;b--,d++)Y[d]=B[b]-48;for(e=0;e<=c-1;e++)for(f=0;f<=d-1;f++)m=m+X[e]*Y[f];while(m>10){a=m%10,m=(m-a)/10+a; }cout<<m<<endl;return 0;}销售记录#include<stdio.h>#include<string.h>typedef struct tagME{char a0[5];char a1[11];char a2[20];int a3;int a4;}tag;int main(){ tag a[100],b[100];int n,i,j=1,k=0;FILE *fp;scanf("%d",&n);for(i=0;i<=n-1;i++){scanf("%s %s %s %d %d",a[i].a0,a[i].a1,a[i].a2,&a[i].a3,&a[i].a4);} fp=fopen("out.dat","w");if(fp!=NULL){for(j=0;j<=n-1;j++){fscanf(fp,"%s%s%s%d%d",a[j].a0,a[j].a1,a[j].a2,&a[j].a3,&a[j].a4);}for(i=0;i<=n-2;i++){if(a[i].a4>=a[i+1].a4)b[0]=a[i],a[i]=a[i+1],a[i+1]=b[0];}printf("%s %s %s %d %d",a[i].a0,a[i].a1,a[i].a2,a[i].a3,a[i].a4);fclose(fp);}return 0;}星期几星座#include <stdio.h>int main(){int a,b;scanf("%d%d",&a,&b);switch (a){case 1:if(b<=19)printf("Capricorn");else printf("Aquarius");break;case 2:if(b<=18)printf("Aquarius");else printf("Pisces");break;case 3:if(b<=20)printf("Pisces");else printf("Aries");break;case 4:if(b<=20)printf("Aries");else printf("Taurus");break;case 5:if(b<=20)printf("Taurus");else printf("Gemini");break;case 6:if(b<=21)printf("Gemini");else printf("Cancer");break;case 7:if(b<=22)printf("Cancer");else printf("Leo");break;case 8:if(b<=22)printf("Leo");else printf("Virgo");break;case 9:if(b<=22)printf("Virgo");else printf("Libra");break;case 10:if(b<=22)printf("Libra");else printf("Scorpio");break;case 11:if(b<=21)printf("Scorpio");else printf("Sagittarius");break;case 12:if(b<=21)printf("Sagittarius");else printf("Capricorn");break;}return 0;}幸运数学号循环移位#include <stdio.h>int move(int value,int n){if(n<0){n=-n;value=(value<<n|value>>(32-n));}elsevalue=(value>>n|value<<(32-n));return(value);}int main(){int x,y;scanf("%d %d",&x,&y);printf("%d\n",move(x,y));return 0;}月份天数#include <stdio.h>int main(){int y,m,d;int A[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};int B[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};scanf("%d%d",&y,&m);if((y%4==0&&y%100!=0)||(y%400==0))d=A[m];elsed=B[m];printf("%d",d);return 0; }月份转换英语运费职工信息字符串替换#include<stdio.h> #include<string.h> int main(){char A[100],B[100];int i;gets(A);for(i=0;i<100;i++){if(A[i]=='y'&&A[i+1]=='o'&&A[i+2]=='u') {A[i]='w';A[i+1]='e';A[i+2]=' ';}}for(i=0;A[i]!='\0';i++){if(A[i-2]=='w'&&A[i-1]=='e'&&A[i]==' ') continue;elseprintf("%c",A[i]);}printf("\n");return 0;}字符串长度字符输出#include<stdio.h>#include<string.h>int main(){char A[200],B[200];int p,n,i,j=0;gets(A);scanf("%d%d",&p,&n);for(i=p;i<=p+n-1;i++,j++){B[j]=A[i];}puts(B);}。
西工大C语言POJ习题答案
![西工大C语言POJ习题答案](https://img.taocdn.com/s3/m/927da38e03d8ce2f01662385.png)
一.1.第一季10题全(注:第五题问题已经解决,确认AC!)#include <>int main(){int a,b,sum;scanf("%d%d",&a,&b);sum=a+b;printf("%d\n",sum);return 0;}2.#include <>#define PIint main(){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%.2l f\n%.2lf\n",l,s,sq,vq,vz);return 0;}3.#include <>int 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 <>int main(){int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a<b)a=b;if(a<c)a=c;printf("%d\n",a);return 0;}5.#include<>int main(){int i=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");elseprintf("no\n");}6.#include<>int main(){double a,c;scanf("%lf",&a);switch((int)a/10){case 0:c=a*;break;case 1:c=(a-10)*+10*;bre ak;case 2:case 3:c=(a-20)*+10*+10* ;break;case 4:case 5:c=(a-40)*+20*+10* +10*;break;case 6:case 7:case 8:case 9:c=(a-60)*+20*+20* +10*+10*;break;default:c=(a-100)*+40*+20*+20*+10*+10*;}printf("%lf\n",c);return 0;}7.#include<>int main(){double a,b,c;scanf("%lf",&a);c=(int)a;if(a>c)a=c+1;if(a>15)b=(a-15)*+7+13*;else {if(a>2)b=(a-2)*+7;else b=7;}printf("%lf\n",b);return 0;}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;switch (b){case 1:n=c;break;case 2:n=g+c;break;case 3: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;case 7:n=g+e+g+f+g+f+c;break;case 8: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;br eak;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 <>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.#include<>int main(){double x,y,s;scanf("%lf,%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") ;return 1;}}}}printf("10\n");return 0;}二。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院目录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 程序调试及运行 (5)3.1程序运行结果 (5)3.2程序使用说明 (6)3.3程序开发总结 (7)4 附件(源程序) (7)1 摘要1.1 设计题目OpenGL——舞动的文字,旋转的校徽1.2 设计内容基于Windows界面编程下的SDK编程框架,调用OpenGL的相关API,设计一个图形输出、渲染的Windows窗口的程序,动态显示文字和图形:1、运用四边形纹理贴图把文字和图像显示在屏幕上,把256个不同的文字从一个256x256的纹理图像中分别提取出来,并为每一个文字创建一个显示列表,接着创建一个输出函数来创建任意你希望的文字,以李萨如曲线轨迹动态显示“KANGYAO”、“2013OpenGL”、“NORTHWESTERN POL YTECHNICAL UNIVERSITY CPP BIGWORK”。
2、运用四边形纹理贴图将西北工业大学校徽显示在两个旋转相互垂直正方形;3、使用三角形创建两个静止的3D物体——金字塔形,动静显示,两个垂直的正方形绕两个3D物体形成的轴转动。
运行程序,动态显示,按F1键退出全屏模式,按ESC键退出程序。
1.3 开发工具Visual C++ 6.0和Win32SDKApp1.4 应用平台Windows 2000/XP/7 32位2 详细设计2.1 程序结构一、程序的整体结构1.在SDK编程框架基础上使用OpenGL,需要包含以下头文件:#include <windows.h> // Windows头文件#include <gl\gl.h> // OpenGL核心库文件#include <gl\glu.h> // OpenGL实用头文件#include <gl\glaux.h> //Visaul C++ OpenGL辅助库头文件2.SDK编程框架:a)头文件和全局变量b)Windows主函数c)根据用户设置配置OpenGL的窗口d)创建OpenGL运行的窗口,并返回窗口的句柄e)设置绘制字体的参数f)程序循环g)退出程序3.在SDK框架下,在DrawGLScene函数中绘制自己想要的图形,例如2D图形文字,3D图形等。
二、程序的流程1、根据用户设置配置OpenGL的窗口2、创建OpenGL运行的窗口,并返回窗口的句柄3、程序循环运行DrawGLScene绘图函数,动态显示,屏幕时常刷新。
4、退出程序2.2 主要功能一、以李萨如曲线轨迹动态显示“KANGY AO”、“2013OpenGL”、“NORTHWESTERNPOL YTECHNICAL UNIVERSITY CPP BIGWORK”。
二、将西北工业大学校徽显示在两个旋转相互垂直正方形;三、动静显示两个垂直的正方形绕两个静止的3D物体形成的轴转动。
2.3 函数实现一、主要的SDK框架函数1、InitGL //初始化窗口2、CALLBACK WndProc //窗口过程3、CreateGLWindow //创建窗口4、KillGLWindow //关闭窗口5、WINAPI WinMain //SDK主函数二、在DrawGLScene函数中调用绘图函数:1、glBegin //图形绘制开始2、glVertex2f //2D坐标确定点绘制多边形3、glVertex3f //3D坐标确定点绘制多边形或3D图形4、glTexCoord2d //纹理点坐标确定5、glEnd //图形绘制结束6、glRotatef //确定动态旋转轴和旋转速度7、glColor3f //配置图形颜色8、glTranslatef //调整图形在窗口显示位置2.4 开发日志刚开始的时候,先对已有的OpenGL例子进行输入,发现运行有错,头文件缺失,添加头文件。
继续排错,发现有好多输入错误,大小写,没有分号等问题,面对错误不要惊慌,毕竟头一次编Windows窗口程序,但我把所有错排完以后,出现了一个问题,输出结果不是我想要的。
这时就纠结。
不知是哪个数据泄露了,或者不是自己控制。
所以只得一边一边地看程序,看是哪出问题了。
在一次一次的反复尝试中总结了,那些函数是干什么的,怎样值传递。
在一次一次的摸索当中,不断的积累,对Windows窗口程序有了新的了解,对OpenGL的API函数有了认识,感觉OpenGL函数使用很方便。
最后,运行成功了,得到我想要的结果。
在这基础上,就要涉及开始自己的程序了。
首先,绘制3D图形时,最重要的是算准3D图形空间坐标。
在改参数的时候,很容易出错,需要更改好几次,看是哪出问题了,重新计算3D图形空间坐标。
但参数改好的时候,运行结果预想的一样,感觉非常好。
继续对它进行创作,在2D图形文字上加纹理图,使图形更加有标志性。
将这些代码编好以后对他进行调试,编译通过,整个程序趋向完善。
最终,呈现现在的界面。
3 程序调试及运行3.1 程序运行结果程序运行弹出窗口按F1退出全屏3.2 程序使用说明1.运行程序,动态显示;2.按F1键退出全屏模式;3.按ESC键退出程序。
3.3 程序开发总结一、编写界面编程的收获很多:1、了解了一些Windows界面编程语言,能够读懂一些程序2、能够在SDK框架下,运用OpenGL的API函数编写窗口程序3、能够运用OpenGL建简单的模型4、当然还有,编写成功带来的快乐二、对编写程序的思考:1、其实任何语言都有相同之处,了解其本质;就能很快地掌握另一门语言。
Windows编程语言主要都是大写英文字母,大多数是首字母大写。
在要用的时候可以直接查找这方面的书籍,很快就知道什么意义怎么用。
调用函数也是同样的道理,可以根据要实现的功能来查找相应的函数。
可已不用背许多代码。
2、Windows界面编程有着巨大的现实作用,是C++语言的延伸和拓展,一个C++语言具体应用的实例可通过Windows界面编程提高C++语言的编程能力,同时解决实际问题,来方便生活和学习,将计算机的作用发挥出来了。
发展编程能力,最终达到:灵活自如应用,丰富多彩呈现。
3、OpenGL的API函数,是一个强大的绘图函数库,积累了前人的智慧,为后人方便编程。
4 附件(源程序)#include <windows.h>#include <math.h>#include <stdio.h>#include <gl\gl.h>#include <gl\glu.h>#include <gl\glaux.h>HDC hDC=NULL;HGLRC hRC=NULL;HWND hWnd=NULL;HINSTANCE hInstance;bool keys[256];bool active=TRUE;bool fullscreen=TRUE;GLuint base;GLuint texture[2]; //纹理数组变量GLuint loop;GLfloat cnt1;GLfloat cnt2;LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // 声明CALLBACK WndProc函数AUX_RGBImageRec *LoadBMP(char *Filename) //加载图片函数{FILE *File=NULL;if (!Filename){return NULL;}File=fopen(Filename,"r");if (File){fclose(File);return auxDIBImageLoad(Filename);}return NULL;}int LoadGLTextures() // 加载图片到纹理里{int Status=FALSE;AUX_RGBImageRec *TextureImage[2];memset(TextureImage,0,sizeof(void *)*2);if ((TextureImage[0]=LoadBMP("Data/Font.bmp")) &&(TextureImage[1]=LoadBMP("Data/Bumps.bmp"))){Status=TRUE;glGenTextures(2, &texture[0]);for (loop=0; loop<2; loop++){glBindTexture(GL_TEXTURE_2D, texture[loop]);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[loop]->sizeX, TextureImage[loop]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[loop]->data);}}for (loop=0; loop<2; loop++){if (TextureImage[loop]){if (TextureImage[loop]->data){free(TextureImage[loop]->data);}free(TextureImage[loop]);}}return Status;}GLvoid BuildFont(GLvoid) //用图片纹理创建字体{float cx;float cy;base=glGenLists(256);glBindTexture(GL_TEXTURE_2D, texture[0]);for (loop=0; loop<256; loop++){cx=float(loop%16)/16.0f;cy=float(loop/16)/16.0f;glNewList(base+loop,GL_COMPILE);glBegin(GL_QUADS);glTexCoord2f(cx,1-cy-0.0625f);glVertex2i(0,0);glTexCoord2f(cx+0.0625f,1-cy-0.0625f);glVertex2i(16,0);glTexCoord2f(cx+0.0625f,1-cy);glVertex2i(16,16);glTexCoord2f(cx,1-cy);glVertex2i(0,16);glEnd();glTranslated(10,0,0);glEndList();}}GLvoid KillFont(GLvoid) //删除字体{glDeleteLists(base,256);}GLvoid glPrint(GLint x, GLint y, char *string, int set) // 具体位置显示文字{if (set>1){set=1;}glBindTexture(GL_TEXTURE_2D, texture[0]);glDisable(GL_DEPTH_TEST);glMatrixMode(GL_PROJECTION);glPushMatrix();glLoadIdentity();glOrtho(0,640,0,480,-1,1);glMatrixMode(GL_MODELVIEW);glPushMatrix();glLoadIdentity();glTranslated(x,y,0);glListBase(base-32+(128*set));glCallLists(strlen(string),GL_UNSIGNED_BYTE,string);glMatrixMode(GL_PROJECTION);glPopMatrix();glMatrixMode(GL_MODELVIEW);glPopMatrix();glEnable(GL_DEPTH_TEST);}GLvoid ReSizeGLScene(GLsizei width, GLsizei height) //调整和初始化窗口{if (height==0){height=1;}glViewport(0,0,width,height);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}int InitGL(GLvoid) // 初始化函数{if (!LoadGLTextures()){return FALSE;}BuildFont();glClearColor(0.0f, 0.0f, 0.0f, 0.0f);glClearDepth(1.0);glDepthFunc(GL_LEQUAL);glBlendFunc(GL_SRC_ALPHA,GL_ONE);glShadeModel(GL_SMOOTH);glEnable(GL_TEXTURE_2D);return TRUE;}glTexCoord2d(0.0f,0.0f);glVertex2f(-1.0f, 1.0f);glTexCoord2d(1.0f,0.0f);glVertex2f( 1.0f, 1.0f);glTexCoord2d(1.0f,1.0f);glVertex2f( 1.0f,-1.0f);glTexCoord2d(0.0f,1.0f);glVertex2f(-1.0f,-1.0f);glEnd();glRotatef(-cnt1*30.0f,1.0f,1.0f,0.0f); //沿(1,1,0)轴旋转30度(反方向),使四面体静止glBegin(GL_TRIANGLES); // 绘制第一个四面体glColor3f(1.0f,0.0f,0.0f);glVertex3f( 1.0f, 1.0f, 0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(1.035355f,1.10605f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f( 1.07071f,1.07071f, 0.05f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( 1.0f, 1.0f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f( 1.07071f,1.07071f, 0.05f);glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.10605f,1.035355f, 0.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( 1.0f, 1.0f, 0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.10605f,1.035355f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(1.07071f,1.07071f, -0.05f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( 1.0f, 1.0f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(1.07071f,1.07071f, -0.05f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(1.035355f,1.10605f, 0.0f);glEnd();glBegin(GL_TRIANGLES); // 绘制第二个四面体glColor3f(1.0f,0.0f,0.0f);glVertex3f( -1.0f, -1.0f, 0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.035355f,-1.10605f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f( -1.07071f,-1.07071f, 0.05f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( -1.0f, -1.0f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f( -1.07071f,-1.07071f, 0.05f);glColor3f(0.0f,1.0f,0.0f);glVertex3f( -1.10605f,-1.035355f, 0.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( -1.0f, -1.0f, 0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f( -1.10605f,-1.035355f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(-1.07071f,-1.07071f, -0.05f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( -1.0f, -1.0f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(-1.07071f,-1.07071f, -0.05f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.035355f,-1.10605f, 0.0f);glEnd();glEnable(GL_BLEND); //打开混合glLoadIdentity(); // 重置当前观察矩阵glColor3f(1.0f*float(cos(cnt1)),1.0f*float(sin(cnt2)),1.0f-0.5f*float(cos(cnt1+cnt2)));glPrint(int((280+250*cos(cnt1))),int(235+200*sin(cnt2)),"KANGYAO",0); // 以李萨如曲线轨迹显示"KANGY AO"glColor3f(1.0f*float(sin(cnt2)),1.0f-0.5f*float(cos(cnt1+cnt2)),1.0f*float(cos(cnt1)));glPrint(int((280+230*cos(cnt2))),int(235+200*sin(cnt1)),"2013OpenGL",1); // 以李萨如曲线轨迹显示斜体"2013OpenGL"glColor3f(0.0f,0.0f,1.0f); // 设置颜色为蓝色glPrint(int(70+80*cos((cnt2+cnt1))),2,"NORTHWESTERN POL YTECHNICAL UNIVERSITY CPP BIGWORK",0);// 以水平简谐运动轨迹显示斜体"NORTHWESTERN POL YTECHNICAL UNIVERSITY CPP BIGWORK"glColor3f(1.0f,1.0f,1.0f); // 设置颜色为白色glPrint(int(72+80*cos((cnt2+cnt1))),2,"NORTHWESTERN POL YTECHNICAL UNIVERSITY CPP BIGWORK",0);// 以水平简谐运动轨迹显示斜体"NORTHWESTERN POL YTECHNICAL UNIVERSITY CPP BIGWORK"cnt1+=0.01f; // 运动速度1cnt2+=0.0081f; // 运动速度2return TRUE; // 一切运行正确GLvoid KillGLWindow(GLvoid) //退出窗口函数{if (fullscreen){ChangeDisplaySettings(NULL,0);ShowCursor(TRUE);}if (hRC){if (!wglMakeCurrent(NULL,NULL)){MessageBox(NULL,"Release Of DC And RC Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMA TION);}if (!wglDeleteContext(hRC)){MessageBox(NULL,"Release Rendering Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMA TION);}hRC=NULL;}if (hDC && !ReleaseDC(hWnd,hDC)){MessageBox(NULL,"Release Device Context Failed.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMA TION);hDC=NULL;}if (hWnd && !DestroyWindow(hWnd)){MessageBox(NULL,"Could Not Release hWnd.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMA TION);hWnd=NULL;}if (!UnregisterClass("OpenGL",hInstance)){MessageBox(NULL,"Could Not Unregister Class.","SHUTDOWN ERROR",MB_OK | MB_ICONINFORMA TION);hInstance=NULL;}KillFont();}BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag)//创建窗口函数{GLuint PixelFormat;WNDCLASS wc;DWORD dwExStyle;DWORD dwStyle;RECT WindowRect;WindowRect.left=(long)0;WindowRect.right=(long)width;WindowRect.top=(long)0;WindowRect.bottom=(long)height;fullscreen=fullscreenflag;hInstance = GetModuleHandle(NULL);wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;wc.lpfnWndProc = (WNDPROC) WndProc;wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance = hInstance;wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);wc.hCursor = LoadCursor(NULL, IDC_ARROW);wc.hbrBackground = NULL;wc.lpszMenuName = NULL;wc.lpszClassName = "OpenGL";if (!RegisterClass(&wc)){MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE;}if (fullscreen){DEVMODE dmScreenSettings;memset(&dmScreenSettings,0,sizeof(dmScreenSettings));dmScreenSettings.dmSize=sizeof(dmScreenSettings);dmScreenSettings.dmPelsWidth = width;dmScreenSettings.dmPelsHeight = height;dmScreenSettings.dmBitsPerPel = bits;dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;if(ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL) {if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMA TION)==IDYES){fullscreen=FALSE;}else{MessageBox(NULL,"Program Will Now Close.","ERROR",MB_OK|MB_ICONSTOP);return FALSE;}}}if (fullscreen){dwExStyle=WS_EX_APPWINDOW;dwStyle=WS_POPUP;ShowCursor(FALSE);}else{dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;dwStyle=WS_OVERLAPPEDWINDOW;}AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle);if (!(hWnd=CreateWindowEx( dwExStyle,"OpenGL",title,dwStyle |WS_CLIPSIBLINGS |WS_CLIPCHILDREN,0, 0,WindowRect.right-WindowRect.left,WindowRect.bottom-WindowRect.top,NULL,NULL,hInstance,NULL))){KillGLWindow();MessageBox(NULL,"Window Creation Error.","ERROR",MB_OK|MB_ICONEXCLAMATION);return FALSE;}static PIXELFORMATDESCRIPTOR pfd={sizeof(PIXELFORMA TDESCRIPTOR),1,PFD_DRAW_TO_WINDOW |PFD_SUPPORT_OPENGL |PFD_DOUBLEBUFFER,PFD_TYPE_RGBA,bits,0, 0, 0, 0, 0, 0,0,0,0,0, 0, 0, 0,16,0,0,PFD_MAIN_PLANE,0,0, 0, 0};if (!(hDC=GetDC(hWnd))){KillGLWindow();MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE;}if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd))){KillGLWindow();MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);return FALSE;}if(!SetPixelFormat(hDC,PixelFormat,&pfd)){KillGLWindow();MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);return FALSE;}if (!(hRC=wglCreateContext(hDC))){KillGLWindow();MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE;}if(!wglMakeCurrent(hDC,hRC)){KillGLWindow();MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMA TION);return FALSE;}ShowWindow(hWnd,SW_SHOW);SetForegroundWindow(hWnd);SetFocus(hWnd);ReSizeGLScene(width, height);if (!InitGL()){KillGLWindow();MessageBox(NULL,"Initialization Failed.","ERROR",MB_OK|MB_ICONEXCLAMATION);return FALSE;}return TRUE;}LRESULT CALLBACK WndProc( HWND hWnd, // 窗口过程函数UINT uMsg,WPARAM wParam,LPARAM lParam){switch (uMsg){case WM_ACTIV A TE:{if (!HIWORD(wParam)){active=TRUE;}else{active=FALSE;}return 0;}case WM_SYSCOMMAND:{switch (wParam){case SC_SCREENSA VE:case SC_MONITORPOWER:return 0;}break;}case WM_CLOSE:{PostQuitMessage(0);return 0;}case WM_KEYDOWN:{keys[wParam] = TRUE;return 0;}case WM_KEYUP:{keys[wParam] = FALSE;return 0;}case WM_SIZE:{ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));return 0;}}return DefWindowProc(hWnd,uMsg,wParam,lParam);}int WINAPI WinMain( HINSTANCE hInstance, // Windows主函数HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){MSG msg;BOOL done=FALSE;if (MessageBox(NULL,"Would You Like To Run In Fullscreen Mode?", "Start FullScreen?",MB_YESNO|MB_ICONQUESTION)==IDNO){fullscreen=FALSE;}if (!CreateGLWindow("NeHe & Giuseppe D'Agata's 2D Font Tutorial",640,480,16,fullscreen)){return 0;}while(!done) // 程序循环{if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)){if (msg.message==WM_QUIT){done=TRUE;}else{TranslateMessage(&msg);DispatchMessage(&msg);}}else{if ((active && !DrawGLScene()) || keys[VK_ESCAPE]){done=TRUE;}else{SwapBuffers(hDC);}if (keys[VK_F1]){keys[VK_F1]=FALSE;KillGLWindow();fullscreen=!fullscreen;if (!CreateGLWindow("NORTHWESTERN POL YTECHNICAL UNIVERSITY",640,480,16,fullscreen)){return 0;}}}}KillGLWindow();return (msg.wParam); // 退出程序}。