经典程序设计实例
C语言程序设计经典10例
C语言程序设计经典10例程序1题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:代码如下:#include <stdio.h>int main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;} /*交换x,z的值*/if(y>z){t=y;y=z;z=t;} /*交换z,y的值*/printf("small to big: %d %d %d\n",x,y,z);return 0;}程序2题目:用号输出字母C的图案。
1.程序分析:可先用’'号在纸上写出字母C,再分行输出。
2.程序源代码:代码如下:#include <stdio.h>int main(){printf("Hello C-world!\n");printf(" ****\n");printf(" *\n");printf(" * \n");printf(" ****\n");return 0;}程序3题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!1.程序分析:字符共有256个。
不同字符,图形不一样。
2.程序源代码:代码如下:#include <stdio.h>int main(){char a=176,b=219;printf("%c%c%c%c%c\n",b,a,a,a,b);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",a,a,b,a,a);printf("%c%c%c%c%c\n",a,b,a,b,a);printf("%c%c%c%c%c\n",b,a,a,a,b);return 0;}程序4题目:输出9*9口诀。
C语言程序设计100个简单的经典例子
经典C语言程序设计100例1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa...a的值19.求解"完数"20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20!的和26.利用递归方法求5!27.将输入字符以相反顺序打印28.岁数问题29.求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色33.学习gotoxy()与clrscr()函数34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external的用法45.使用register定义变量方法46.宏#define命令练习(1)47.宏#define命令练习(2)48.宏#define命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与 &52.学习使用按位或 |53.学习使用按位异或 ^54.取一个整数从右端开始的4~7位。
55.学习使用按位取反~56.用circle画圆形57.学用line画直线58.用rectangle画方形59.画图综合例子160.画图综合例子261.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse64.利用ellipse and rectangle画图65.画个最优美的图案66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n77.填空练习(指向指针的指针)78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数85.判断一个素数能被几个9整除86.两个字符串连接程序87.结构体变量传递88.读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例192.时间函数举例293.时间函数举例394.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1100.文件操作应用2--------------------------------------------------------------------------------c语言经典100题【实用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
汇编语言程序经典案例100例
当然可以帮你制作PPT!以下是关于《汇编语言程序经典案例 100例》的一份PPT大纲,以Markdown代码框的形式展示。你 可以根据这个大纲,进一步丰富内容,使其达到最少2500字 。
```markdown 汇编语言程序经典案例100例
01 汇编语言程序经典案例100例
案例六:汇编游戏
实现一个简单的汇编游戏,如猜数字或打砖块 结合图形和用户输入,展示汇编语言的实际应用
案例七:汇编与硬件交互
编写控制硬件设备的汇编程序,如LED显示控制 探讨汇编语言与底层硬件交互的原理和方法
案例八:内存管理
展示如何在汇编中进行内存分配和释放 解释堆栈、堆区和数据段的概念及其在汇编中的应用
汇编语言程序经典案例100例
案例一:Hello, World! 案例二:计算器 案例三:字符逆序 案例四:素数判断 案例五:文件操作 案例六:汇编游戏 案例七:汇编与硬件交互 案例八:内存管理 案例九:中断处理 案例十:多任务处理
案例一:Hello, World!
使用汇编语言编写经典的Hello, World!程序 解释程序的结构和汇编指令
案例二:计算器实现一个Fra bibliotek单的计算器程序,支持加减乘除运算 展示汇编中的数值处理和条件分支
案例三:字符逆序
编写程序将输入的字符串逆序输出 探讨字符串处理和循环结构在汇编中的应用
案例四:素数判断
判断输入的数字是否为素数 展示如何进行数值计算和判断,并介绍汇编中的位操作
案例五:文件操作
创建、读取、写入文件的汇编程序 分享文件操作所涉及的系统调用和汇编指令
案例九:中断处理
编写处理外部中断的汇编程序 探讨中断的概念、处理流程以及在汇编中的实现
经典C语言程序设计100例C-90-100
main()
{ time_t start,end;
int i;
start=time(NULL);
for(i=0;i<3000;i++)
{ printf("\1\1\1\1\1\1\1\1\1\1\n");}
end=time(NULL);
printf("\1: The different is %6.3f\n",difftime(end,start));
pp: clrscr();
sum=0.0;
gotoxy(1,1);printf("|---------------------------------------------------------------------------|");
gotoxy(1,2);printf("| money management system(C1.0) 2000.03 |");
gotoxy(1,23);printf("|---------------------------------------------------------------------------|");
gotoxy(1,24);printf("| |");
gotoxy(1,25);printf("|---------------------------------------------------------------------------|");
gotoxy(1,12);printf("| cost: ---------- | |");
c语言程序设计应用实例
c语言程序设计应用实例C语言程序设计应用实例在计算机科学领域中,C语言是一种广泛应用的编程语言。
它简洁高效,可移植性强,适用于各种应用开发。
本文将介绍几个C语言程序设计的实际应用实例,展示C语言的强大功能和灵活性。
一、学生成绩管理系统学生成绩管理系统是学校教学管理的重要组成部分。
通过C语言程序设计,可以实现一个简单而实用的学生成绩管理系统。
该系统可以实现学生信息的录入、查询、修改和删除等功能。
通过定义结构体来存储学生信息,并利用文件操作实现数据的读取和存储。
通过编写相应的函数,可以实现对学生信息的增删改查操作。
这样的学生成绩管理系统可以大大提高学校教学工作的效率和准确性。
二、图书管理系统图书管理系统是图书馆管理的基础工具。
使用C语言程序设计,可以开发出一个功能完善的图书管理系统。
该系统可以实现图书信息的录入、查询、借阅和归还等功能。
通过定义结构体来存储图书信息,并利用链表来实现数据的组织和管理。
通过编写相应的函数,可以实现对图书信息的操作。
这样的图书管理系统可以提高图书馆的管理效率和服务质量。
三、简单计算器计算器是人们日常生活中常用的工具之一。
通过C语言程序设计,可以实现一个简单而实用的计算器。
该计算器可以进行基本的加减乘除运算,并支持括号的使用。
通过编写相应的函数,可以实现对输入表达式的解析和计算。
这样的计算器可以满足人们日常生活中的简单计算需求。
四、文件加密解密工具文件加密解密工具是保护个人隐私的重要手段。
通过C语言程序设计,可以实现一个简单而安全的文件加密解密工具。
该工具可以对文件进行加密和解密操作,并通过用户提供的密钥来保证数据的安全性。
通过编写相应的函数和算法,可以实现对文件内容的加密和解密。
这样的文件加密解密工具可以保护个人隐私和重要数据的安全。
五、网络聊天室网络聊天室是人们交流和社交的重要平台。
通过C语言程序设计,可以实现一个简单而实用的网络聊天室。
该聊天室可以实现用户的注册、登录、发送消息和接收消息等功能。
C程序设计经典程序举例
C程序设计经典程序举例1、判断素数(循环、利用算法减少运算次数)例:1159:质因数分解正整数n是两个不同质数的乘积,试求出其中较大的。
#include<stdio.h>#include<math.h>int main(){long long n,big;int small;int root,i,j;scanf("%lld",&n);for(small=2;small<=(int)sqrt(n);){//素数判断过程,从最小素数开始root=(int)sqrt(small);for(i=2;i<=root+1;i++){if(small%i==0)break;}if(i<=root){if(small==2)small++;else small+=2;//只判断2和奇数,减少运算次数continue;}if(n%small==0){big=n/small;root=(int)sqrt(big);for(i=2;i<=root+1;i++){if(big%i==0)break;}if(i<=root){if(small==2)small++;else small+=2;continue;}else{break;//得到最大质因数,跳出循环}}}printf("%d %lld",small,big);return 0;}2、递归与回溯算法(解决尝试性问题,每一级都对下一级有影响)例:1085:0/1迷宫问题给定一个由0(表示墙壁)和1(表示道路)的迷宫,请你判断进入迷宫后,仅通过横向和纵向的行走是否能从迷宫中走出来,即能否从坐标(1,1)走到(n,m)。
#include<stdio.h>#include<stdlib.h>int starti,startj;int endi,endj;//定义迷宫起止点int success=0;//用于判断是否成功通路int main(){int visit(int i,int j,int maze[][10]);int i,j;int n,m;int maze[10][10];scanf("%d %d",&n,&m);for(i=1;i<=n;i++)for(j=1;j<=m;j++){scanf("%d",&maze[i][j]);}starti=1,startj=1,endi=n,endj=m;if(visit(starti,startj,maze)==0){printf("NO");}else{printf("YES");}return 0;}int visit(int i,int j,int maze[][10]){maze[i][j]=-1;//安全性判断已经经过的路if(i==endi&&j==endj){success=1;//成功到达终点}//进行四个方向的尝试if(success!=1&&maze[i][j+1]==1){visit(i,j+1,maze);}if(success!=1&&maze[i+1][j]==1){visit(i+1,j,maze);}if(success!=1&&maze[i-1][j]==1){visit(i-1,j,maze);}if(success!=1&&maze[i][j-1]==1){visit(i,j-1,maze);}maze[i][j]=0;//尝试失败返回0,尝试成功返回1return success;}例:全排列问题输入一个正整数n,按字典序打印其全排列#include<stdio.h>int used[16]={0};//是否使用判断int result[16]={0};//打印结果void proc(int step,int n){//按步进行数组赋值int i;if(step>n){for(i=1;i<=n;i++){printf("%d ",result[i]);}printf("\n");}else{for(i=1;i<=n;i++){if(used[i]==0){result[step]=i;used[i]=1;proc(step+1,n);used[i]=0;//回溯}}}}int main(){int n;scanf("%d",&n);proc(1,n);return 0;}例:二分查找#include <stdio.h>int bisearch( int ary[], int left, int right, int num ){printf("search %d from %d to %d\n", num, left, right );int mid;//设置二分点进行比较if(left>right)return -1;//未找到需查找的点mid=(left+right)/2;if(ary[mid]==num)return mid;else//与二分点进行大小比较后进入递归if(ary[mid]>num)bisearch(ary, left, mid-1, num);elseif(ary[mid]<num)bisearch(ary, mid+1,right,num);}int main(){int n, array[10000], i, num;scanf("%d", &n);scanf("%d", &num);for (i=0;i<n; i ++ ){scanf("%d",&array[i]);}//数组需有序,若无序数组先进行排序printf( "%d",bisearch(array,0,n-1,num));return 0;}3、排序问题冒泡排序快排函数4、字符串处理例:判断回文#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){char *s=(char*)malloc(sizeof(char)*256);char change[256]="\0";gets(s);int len=strlen(s);int i;for(i=0;i<len;i++){change[len-1-i]=*(s+i);}if(strcmp(change,s)==0){printf("是");}else{printf("否");}return 0;}例:将原字符串中的字符串1替换为字符串2,替换后新出现的字符串不包括在内,仅保留子函数。
C语言程序设计100个简单地经典例子
经典C语言程序设计100例1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa...a的值19.求解"完数"20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20!的和26.利用递归方法求5!27.将输入字符以相反顺序打印28.岁数问题29.求解正整数位数30.判断回文数31.星期几猜测游戏32.改变文本颜色33.学习gotoxy()与clrscr()函数34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external的用法45.使用register定义变量方法46.宏#define命令练习(1)47.宏#define命令练习(2)48.宏#define命令练习(3)49.#if #ifdef和#ifndef的综合应用50.#include 的应用练习51.学习使用按位与 &52.学习使用按位或 |53.学习使用按位异或 ^54.取一个整数从右端开始的4~7位。
55.学习使用按位取反~56.用circle画圆形57.学用line画直线58.用rectangle画方形59.画图综合例子160.画图综合例子261.打印杨辉三角形62.学习putpixel画点63.画椭圆ellipse64.利用ellipse and rectangle画图65.画个最优美的图案66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目76.调用函数求1/2+1/4+...+1/n77.填空练习(指向指针的指针)78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字82.八进制转换为十进制83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数85.判断一个素数能被几个9整除86.两个字符串连接程序87.结构体变量传递88.读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例192.时间函数举例293.时间函数举例394.一个猜数游戏95.家庭财务管理小程序96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1100.文件操作应用2--------------------------------------------------------------------------------c语言经典100题【实用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
C语言十大经典实例编程
案例一贪吃蛇游戏#define N 200#include <graphics.h>#include <stdlib.h>#include <dos.h>#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/ struct Food{int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{int x[N];int y[N];int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏具体过程*/ void PrScore(void);/*输出成绩*//*主函数*/void main(void){Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i<=600;i+=10)/*画围墙*/{rectangle(i,40,i+10,49); /*上边*/rectangle(i,451,i+10,460);/*下边*/}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}}/*玩游戏具体过程*/void GamePlay(void){randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=100;snake.y[0]=100;/*蛇头*/snake.x[1]=110;snake.y[1]=100;snake.node=2;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/}if(food.yes==0)/*画面上有食物了就要显示*/{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/switch(snake.direction){case 1:snake.x[0]+=10;break;case 2: snake.x[0]-=10;break;case 3: snake.y[0]-=10;break;case 4: snake.y[0]+=10;break;}for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/{if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){GameOver();/*显示失败*/snake.life=1;break;}}if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)/*蛇是否撞到墙壁*/{GameOver();/*本次游戏结束*/snake.life=1; /*蛇死*/}if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/{setcolor(0);/*把画面上的食物东西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/snake.node++;/*蛇的身体长一节*/food.yes=1;/*画面上需要出现新的食物*/score+=10;PrScore();/*输出新得分*/}setcolor(4);/*画出蛇*/for(i=0;i<snake.node;i++)rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);delay(gamespeed);setcolor(0);/*用黑色去除蛇的的最后一节*/rectangle(snake.x[snake.node-1],snake.y[snake.node-1], snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);} /*endwhile(!kbhit)*/if(snake.life==1)/*如果蛇死就跳出循环*/break;key=bioskey(0);/*接收按键*/if(key==ESC)/*按ESC键退出*/break;elseif(key==UP&&snake.direction!=4)/*判断是否往相反的方向移动*/snake.direction=3;elseif(key==RIGHT&&snake.direction!=2)snake.direction=1;elseif(key==LEFT&&snake.direction!=1)snake.direction=2;elseif(key==DOWN&&snake.direction!=3)snake.direction=4;}/*endwhile(1)*/}/*游戏结束*/void GameOver(void){cleardevice();PrScore();setcolor(RED);settextstyle(0,0,4);outtextxy(200,200,"GAME OVER");getch();}/*输出成绩*/void PrScore(void){char str[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,"score:%d",score);outtextxy(55,20,str);}/*图形结束*/void Close(void){getch();closegraph();}案例二计算器#include <dos.h> /*DOS接口函数*/#include <math.h> /*数学函数的定义*/#include <conio.h> /*屏幕操作函数*/#include <stdio.h> /*I/O函数*/#include <stdlib.h> /*库函数*/#include <stdarg.h> /*变量长度参数表*/#include <graphics.h> /*图形函数*/#include <string.h> /*字符串函数*/#include <ctype.h> /*字符操作函数*/#define UP 0x48 /*光标上移键*/#define DOWN 0x50 /*光标下移键*/#define LEFT 0x4b /*光标左移键*/#define RIGHT 0x4d /*光标右移键*/#define ENTER 0x0d /*回车键*/void *rar; /*全局变量,保存光标图象*/ struct palettetype palette; /*使用调色板信息*/ int GraphDriver; /* 图形设备驱动*/int GraphMode; /* 图形模式值*/int ErrorCode; /* 错误代码*/int MaxColors; /* 可用颜色的最大数值*/ int MaxX, MaxY; /* 屏幕的最大分辨率*/double AspectRatio; /* 屏幕的像素比*/void drawboder(void); /*画边框函数*/void initialize(void); /*初始化函数*/void computer(void); /*计算器计算函数*/void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/void mwindow(char *header); /*窗口函数*/int specialkey(void) ; /*获取特殊键函数*/int arrow(); /*设置箭头光标函数*//*主函数*/int main(){initialize();/* 设置系统进入图形模式*/computer(); /*运行计算器*/closegraph();/*系统关闭图形模式返回文本模式*/return(0); /*结束程序*/}/* 设置系统进入图形模式*/void initialize(void){int xasp, yasp; /* 用于读x和y方向纵横比*/GraphDriver = DETECT; /* 自动检测显示器*/initgraph( &GraphDriver, &GraphMode, "" );/*初始化图形系统*/ErrorCode = graphresult(); /*读初始化结果*/if( ErrorCode != grOk ) /*如果初始化时出现错误*/{printf("Graphics System Error: %s\n",grapherrormsg( ErrorCode ) ); /*显示错误代码*/exit( 1 ); /*退出*/}getpalette( &palette ); /* 读面板信息*/MaxColors = getmaxcolor() + 1; /* 读取颜色的最大值*/MaxX = getmaxx(); /* 读屏幕尺寸*/MaxY = getmaxy(); /* 读屏幕尺寸*/getaspectratio( &xasp, &yasp ); /* 拷贝纵横比到变量中*/ AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/ }/*计算器函数*/void computer(void){struct viewporttype vp; /*定义视口类型变量*/int color, height, width;int x, y,x0,y0, i, j,v,m,n,act,flag=1;float num1=0,num2=0,result; /*操作数和计算结果变量*/char cnum[5],str2[20]={""},c,temp[20]={""};char str1[]="1230.456+-789*/Qc=^%";/* 定义字符串在按钮图形上显示的符号*/mwindow( "Calculator" ); /* 显示主窗口*/color = 7; /*设置灰颜色值*/getviewsettings( &vp ); /* 读取当前窗口的大小*/width=(vp.right+1)/10; /* 设置按钮宽度*/height=(vp.bottom-10)/10 ; /*设置按钮高度*/x = width /2; /*设置x的坐标值*/y = height/2; /*设置y的坐标值*/setfillstyle(SOLID_FILL, color+3);bar( x+width*2, y, x+7*width, y+height );/*画一个二维矩形条显示运算数和结果*/setcolor( color+3 ); /*设置淡绿颜色边框线*/rectangle( x+width*2, y, x+7*width, y+height );/*画一个矩形边框线*/setcolor(RED); /*设置颜色为红色*/outtextxy(x+3*width,y+height/2,"0."); /*输出字符串"0."*/x =2*width-width/2; /*设置x的坐标值*/y =2*height+height/2; /*设置y的坐标值*/for( j=0 ; j<4 ; ++j ) /*画按钮*/{for( i=0 ; i<5 ; ++i ){setfillstyle(SOLID_FILL, color);setcolor(RED);bar( x, y, x+width, y+height ); /*画一个矩形条*/rectangle( x, y, x+width, y+height );sprintf(str2,"%c",str1[j*5+i]);/*将字符保存到str2中*/outtextxy( x+(width/2), y+height/2, str2);x =x+width+ (width / 2) ; /*移动列坐标*/ }y +=(height/2)*3; /* 移动行坐标*/x =2*width-width/2; /*复位列坐标*/}x0=2*width;y0=3*height;x=x0;y=y0;gotoxy(x,y); /*移动光标到x,y位置*/arrow(); /*显示光标*/putimage(x,y,rar,XOR_PUT);m=0;n=0;strcpy(str2,""); /*设置str2为空串*/while((v=specialkey())!=45) /*当压下Alt+x键结束程序,否则执行下面的循环*/{while((v=specialkey())!=ENTER) /*当压下键不是回车时*/{putimage(x,y,rar,XOR_PUT); /*显示光标图象*/if(v==RIGHT) /*右移箭头时新位置计算*/if(x>=x0+6*width)/*如果右移,移到尾,则移动到最左边字符位置*/{x=x0;m=0;}else{x=x+width+width/2;m++;} /*否则,右移到下一个字符位置*/if(v==LEFT) /*左移箭头时新位置计算*/if(x<=x0){x=x0+6*width;m=4;} /*如果移到头,再左移,则移动到最右边字符位置*/ else{x=x-width-width/2;m--;} /*否则,左移到前一个字符位置*/if(v==UP) /*上移箭头时新位置计算*/if(y<=y0){y=y0+4*height+height/2;n=3;} /*如果移到头,再上移,则移动到最下边字符位置*/ else{y=y-height-height/2;n--;} /*否则,移到上边一个字符位置*/if(v==DOWN) /*下移箭头时新位置计算*/if(y>=7*height){y=y0;n=0;} /*如果移到尾,再下移,则移动到最上边字符位置*/else{y=y+height+height/2;n++;} /*否则,移到下边一个字符位置*/putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/ }c=str1[n*5+m]; /*将字符保存到变量c中*/if(isdigit(c)||c=='.') /*判断是否是数字或小数点*/{if(flag==-1) /*如果标志为-1,表明为负数*/{strcpy(str2,"-"); /*将负号连接到字符串中*/flag=1;} /*将标志值恢复为1*/sprintf(temp,"%c",c); /*将字符保存到字符串变量temp中*/ strcat(str2,temp); /*将temp中的字符串连接到str2中*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,str2); /*显示字符串*/}if(c=='+'){num1=atof(str2); /*将第一个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=1; /*做计算加法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='-'){if(strcmp(str2,"")==0) /*如果str2为空,说明是负号,而不是减号*/ flag=-1; /*设置负数标志*/else{num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=2; /*做计算减法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/outtextxy(5*width,height,"0."); /*显示字符串*/}}if(c=='*'){num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=3; /*做计算乘法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='/'){num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=4; /*做计算除法标志值*/setfillstyle(SOLID_FILL,color+3);bar(2*width+width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='^'){num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=5; /*做计算乘方标志值*/setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='%'){num1=atof(str2); /*将第二个操作数转换为浮点数*/strcpy(str2,""); /*将str2清空*/act=6; /*做计算模运算乘方标志值*/setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='='){num2=atof(str2); /*将第二个操作数转换为浮点数*/switch(act) /*根据运算符号计算*/{case 1:result=num1+num2;break; /*做加法*/case 2:result=num1-num2;break; /*做减法*/case 3:result=num1*num2;break; /*做乘法*/case 4:result=num1/num2;break; /*做除法*/case 5:result=pow(num1,num2);break; /*做x的y次方*/case 6:result=fmod(num1,num2);break; /*做模运算*/ }setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/sprintf(temp,"%f",result); /*将结果保存到temp中*/outtextxy(5*width,height,temp); /*显示结果*/}if(c=='c'){num1=0; /*将两个操作数复位0,符号标志为1*/num2=0;flag=1;strcpy(str2,""); /*将str2清空*/setfillstyle(SOLID_FILL,color+3); /*设置用淡绿色实体填充*/bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆盖结果区*/outtextxy(5*width,height,"0."); /*显示字符串*/}if(c=='Q')exit(0); /*如果选择了q回车,结束计算程序*/}putimage(x,y,rar,XOR_PUT); /*在退出之前消去光标箭头*/return; /*返回*/}/*窗口函数*/void mwindow( char *header ){int height;cleardevice(); /* 清除图形屏幕 */setcolor( MaxColors - 1 ); /* 设置当前颜色为白色*/setviewport( 20, 20, MaxX/2, MaxY/2, 1 ); /* 设置视口大小 */height = textheight( "H" ); /* 读取基本文本大小*/settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );/*设置文本样式*/settextjustify( CENTER_TEXT, TOP_TEXT );/*设置字符排列方式*/outtextxy( MaxX/4, 2, header ); /*输出标题*/setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); /*设置视口大小*/drawboder(); /*画边框*/}void drawboder(void) /*画边框*/{struct viewporttype vp; /*定义视口类型变量*/setcolor( MaxColors - 1 ); /*设置当前颜色为白色*/setlinestyle( SOLID_LINE, 0, NORM_WIDTH );/*设置画线方式*/getviewsettings( &vp );/*将当前视口信息装入vp所指的结构中*/rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); /*画矩形边框*/ }/*设计鼠标图形函数*/int arrow(){int size;int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*定义多边形坐标*/setfillstyle(SOLID_FILL,2); /*设置填充模式*/fillpoly(8,raw); /*画出一光标箭头*/size=imagesize(4,4,16,16); /*测试图象大小*/rar=malloc(size); /*分配内存区域*/getimage(4,4,16,16,rar); /*存放光标箭头图象*/putimage(4,4,rar,XOR_PUT); /*消去光标箭头图象*/return 0;}/*按键函数*/int specialkey(void){int key;while(bioskey(1)==0); /*等待键盘输入*/key=bioskey(0); /*键盘输入*/key=key&0xff? key&0xff:key>>8; /*只取特殊键的扫描值,其余为0*/ return(key); /*返回键值*/}案例三黑白棋游戏/*3.3.4 源程序*/#include "graphics.h" /*图形系统头文件*/#define LEFT 0x4b00 /*光标左键值*/#define RIGHT 0x4d00 /*光标右键值*/#define DOWN 0x5000 /*光标下键值*/#define UP 0x4800 /*光标上键值*/#define ESC 0x011b /* ESC键值*/#define ENTER 0x1c0d /* 回车键值*/int a[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/ char playone[3],playtwo[3];/*两个人的得分转换成字符串输出*/void playtoplay(void);/*人人对战函数*/void DrawQp(void);/*画棋盘函数*/void SetPlayColor(int x);/*设置棋子第一次的颜色*/void MoveColor(int x,int y);/*恢复原来棋盘状态*/int QpChange(int x,int y,int z);/*判断棋盘的变化*/void DoScore(void);/*处理分数*/void PrintScore(int n);/*输出成绩*/void playWin(void);/*输出胜利者信息*//******主函数*********/void main(void){int gd=DETECT,gr;initgraph(&gd,&gr,"c:\\tc"); /*初始化图形系统*/DrawQp();/*画棋盘*/playtoplay();/*人人对战*/getch();closegraph();/*关闭图形系统*/}void DrawQp()/*画棋盘*/{int i,j;score1=score2=0;/*棋手一开始得分都为0*/ setbkcolor(BLUE);for(i=100;i<=420;i+=40){line(100,i,420,i);/*画水平线*/line(i,100,i,420); /*画垂直线*/}setcolor(0);/*取消圆周围的一圈东西*/ setfillstyle(SOLID_FILL,15);/*白色实体填充模式*/ fillellipse(500,200,15,15); /*在显示得分的位置画棋*/ setfillstyle(SOLID_FILL,8); /*黑色实体填充模式*/ fillellipse(500,300,15,15);a[3][3]=a[4][4]=1;/*初始两个黑棋*/a[3][4]=a[4][3]=2;/*初始两个白棋*/setfillstyle(SOLID_FILL,WHITE);fillellipse(120+3*40,120+3*40,15,15);fillellipse(120+4*40,120+4*40,15,15);setfillstyle(SOLID_FILL,8);fillellipse(120+3*40,120+4*40,15,15);fillellipse(120+4*40,120+3*40,15,15);score1=score2=2; /*有棋后改变分数*/DoScore();/*输出开始分数*/}void playtoplay()/*人人对战*/{int x,y,t=1,i,j,cc=0;while(1)/*换棋手走棋*/{x=120,y=80;/*每次棋子一开始出来的坐标,x为行坐标,y为列坐标*/ while(1) /*具体一个棋手走棋的过程*/{PrintScore(1);/*输出棋手1的成绩*/PrintScore(2);/*输出棋手2的成绩*/SetPlayColor(t);/*t变量是用来判断棋手所执棋子的颜色*/fillellipse(x,y,15,15);key=bioskey(0);/*接收按键*/if(key==ESC)/*跳出游戏*/break;elseif(key==ENTER)/*如果按键确定就可以跳出循环*/{if(y!=80&&a[(x-120)/40][(y-120)/40]!=1&&a[(x-120)/40][(y-120)/40]!=2)/*如果落子位置没有棋子*/{if(t%2==1)/*如果是棋手1移动*/a[(x-120)/40][(y-120)/40]=1;else/*否则棋手2移动*/a[(x-120)/40][(y-120)/40]=2;if(!QpChange(x,y,t))/*落子后判断棋盘的变化*/{a[(x-120)/40][(y-120)/40]=0;/*恢复空格状态*/cc++;/*开始统计尝试次数*/if(cc>=64-score1-score2) /*如果尝试超过空格数则停步*/{MoveColor(x,y);fillellipse(x,y,15,15);break;}elsecontinue;/*如果按键无效*/}DoScore();/*分数的改变*/break;/*棋盘变化了,则轮对方走棋*/}else/*已经有棋子就继续按键*/continue;}else /*四个方向按键的判断*/if(key==LEFT&&x>120)/*左方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x-=40;fillellipse(x,y,15,15);}elseif(key==RIGHT&&x<400&&y>80)/*右方向键*/ {MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x+=40;fillellipse(x,y,15,15);}elseif(key==UP&&y>120)/*上方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);y-=40;fillellipse(x,y,15,15);}elseif(key==DOWN&&y<400)/*下方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);y+=40;fillellipse(x,y,15,15);}}if(key==ESC)/*结束游戏*/break;if((score1+score2)==64||score1==0||score2==0)/*格子已经占满或一方棋子为0判断胜负*/{playWin();/*输出最后结果*/break;}t=t%2+1; /*一方走后,改变棋子颜色即轮对方走*/cc=0; /*计数值恢复为0*/} /*endwhile*/}void SetPlayColor(int t)/*设置棋子颜色*/{if(t%2==1)setfillstyle(SOLID_FILL,15);/*白色*/elsesetfillstyle(SOLID_FILL,8);/*灰色*/}void MoveColor(int x,int y)/*走了一步后恢复原来格子的状态*/{if(y<100)/*如果是从起点出发就恢复蓝色*/setfillstyle(SOLID_FILL,BLUE);else/*其他情况如果是1就恢复白色棋子,2恢复黑色棋子,或恢复蓝色棋盘*/ switch(a[(x-120)/40][(y-120)/40]){case 1:setfillstyle(SOLID_FILL,15);break; /*白色*/case 2:setfillstyle(SOLID_FILL,8);break; /*黑色*/default:setfillstyle(SOLID_FILL,BLUE); /*蓝色*/}}int QpChange(int x,int y,int t)/*判断棋盘的变化*/{int i,j,k,kk,ii,jj,yes;yes=0;i=(x-120)/40; /*计算数组元素的行下标*/j=(y-120)/40; /*计算数组元素的列下标*/SetPlayColor(t);/*设置棋子变化的颜色*//*开始往8个方向判断变化*/if(j<6)/*往右边*/{for(k=j+1;k<8;k++)if(a[i][k]==a[i][j]||a[i][k]==0)/*遇到自己的棋子或空格结束*/ break;if(a[i][k]!=0&&k<8){for(kk=j+1;kk<k&&k<8;kk++)/*判断右边*/{a[i][kk]=a[i][j]; /*改变棋子颜色*/fillellipse(120+i*40,120+kk*40,15,15);}if(kk!=j+1) /*条件成立则有棋子改变过颜色*/ yes=1;}}if(j>1)/*判断左边*/{for(k=j-1;k>=0;k--)if(a[i][k]==a[i][j]||!a[i][k])break;if(a[i][k]!=0&&k>=0){for(kk=j-1;kk>k&&k>=0;kk--){a[i][kk]=a[i][j];fillellipse(120+i*40,120+kk*40,15,15);}if(kk!=j-1)yes=1;}}if(i<6)/*判断下边*/{for(k=i+1;k<8;k++)if(a[k][j]==a[i][j]||!a[k][j])break;if(a[k][j]!=0&&k<8){for(kk=i+1;kk<k&&k<8;kk++){a[kk][j]=a[i][j];fillellipse(120+kk*40,120+j*40,15,15);}if(kk!=i+1)yes=1;}}if(i>1)/*判断上边*/{for(k=i-1;k>=0;k--)if(a[k][j]==a[i][j]||!a[k][j])break;if(a[k][j]!=0&&k>=0){for(kk=i-1;kk>k&&k>=0;kk--){a[kk][j]=a[i][j];fillellipse(120+kk*40,120+j*40,15,15);}if(kk!=i-1)yes=1;}}if(i>1&&j<6)/*右上*/{for(k=i-1,kk=j+1;k>=0&&kk<8;k--,kk++) if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]&&k>=0&&kk<8){for(ii=i-1,jj=j+1;ii>k&&k>=0;ii--,jj++){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i-1)yes=1;}}if(i<6&&j>1)/*左下*/{for(k=i+1,kk=j-1;k<8&&kk>=0;k++,kk--) if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]!=0&&k<8&&kk>=0){for(ii=i+1,jj=j-1;ii<k&&k<8;ii++,jj--){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i+1)yes=1;}}if(i>1&&j>1)/*左上*/{for(k=i-1,kk=j-1;k>=0&&kk>=0;k--,kk--) if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]!=0&&k>=0&&kk>=0){for(ii=i-1,jj=j-1;ii>k&&k>=0;ii--,jj--){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i-1)yes=1;}}if(i<6&&j<6)/* 右下*/{for(k=i+1,kk=j+1;kk<8&&kk<8;k++,kk++) if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]!=0&&kk<8&&k<8){for(ii=i+1,jj=j+1;ii<k&&k<8;ii++,jj++){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i+1)yes=1;}}return yes;/*返回是否改变过棋子颜色的标记*/ }void DoScore()/*处理分数*/{int i,j;score1=score2=0;/*重新开始计分数*/for(i=0;i<8;i++)for(j=0;j<8;j++)if(a[i][j]==1)/*分别统计两个人的分数*/score1++;elseif(a[i][j]==2)score2++;}void PrintScore(int playnum)/*输出成绩*/{if(playnum==1)/*清除以前的成绩*/{setfillstyle(SOLID_FILL,BLUE);bar(550,100,640,400);}setcolor(RED);settextstyle(0,0,4);/*设置文本输出样式*/if(playnum==1)/*判断输出哪个棋手的分,在不同的位置输出*/ {sprintf(playone,"%d",score1);outtextxy(550,200,playone);}else{sprintf(playtwo,"%d",score2);outtextxy(550,300,playtwo);}setcolor(0);}void playWin()/*输出最后的胜利者结果*/ {settextstyle(0,0,4);setcolor(12);if(score2>score1)/*开始判断最后的结果*/ outtextxy(100,50,"black win!");elseif(score2<score1)outtextxy(100,50,"white win!");elseouttextxy(60,50,"you all win!");}案例四迷宫问题/*4.3.3源程序*/#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <dos.h>#define N 20/*迷宫的大小,可改变*/int oldmap[N][N];/*递归用的数组,用全局变量节约时间*/int yes=0;/*yes是判断是否找到路的标志,1找到,0没找到*/int way[100][2],wayn=0;/*way数组是显示路线用的,wayn是统计走了几个格子*/void Init(void);/*图形初始化*/void Close(void);/*图形关闭*/void DrawPeople(int *x,int *y,int n);/*画人工探索物图*/void PeopleFind(int (*x)[N]);/*人工探索*/void WayCopy(int (*x)[N],int (*y)[N]);/*为了8个方向的递归,把旧迷宫图拷贝给新数组*/int FindWay(int (*x)[N],int i,int j);/*自动探索函数*/void MapRand(int (*x)[N]);/*随机生成迷宫函数*/void PrMap(int (*x)[N]);/*输出迷宫图函数*/void Result(void);/*输出结果处理*/void Find(void);/*成功处理*/void NotFind(void);/*失败处理*/void main(void)/*主函数*/{int map[N][N]; /*迷宫数组*/char ch;clrscr();printf("\n Please select hand(1) else auto\n");/*选择探索方式*/ scanf("%c",&ch);Init(); /*初始化*/MapRand(map);/*生成迷宫*/PrMap(map);/*显示迷宫图*/if(ch=='1')PeopleFind(map);/*人工探索*/elseFindWay(map,1,1);/*系统自动从下标1,1的地方开始探索*/ Result();/*输出结果*/Close();}void Init(void)/*图形初始化*/{int gd=DETECT,gm;initgraph(&gd,&gm,"c:\\tc");}void DrawPeople(int *x,int *y,int n)/*画人工控制图*/{/*如果将以下两句注释掉,则显示人工走过的路径,*/setfillstyle(SOLID_FILL,WHITE); /*设置白色实体填充样式*/bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6); /*恢复原通路*/switch(n)/*判断x,y的变化,8个方向的变化*/{case 1: (*x)--;break; /*上*/case 2: (*x)--;(*y)++;break ;/*右上*/case 3: (*y)++;break; /*右*/case 4: (*x)++;(*y)++;break; /*右下*/case 5: (*x)++;break; /*下*/case 6: (*x)++;(*y)--;break; /*左下*/case 7: (*y)--;break; /*左*/case 8: (*x)--;(*y)--;break; /*左上*/}setfillstyle(SOLID_FILL,RED);/*新位置显示探索物*/bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6); }void PeopleFind(int (*map)[N])/*人工手动查找*/{int x,y;char c=0;/*接收按键的变量*/x=y=1;/*人工查找的初始位置*/setcolor(11);line(500,200,550,200);outtextxy(570,197,"d");line(500,200,450,200);outtextxy(430,197,"a");line(500,200,500,150);outtextxy(497,130,"w");line(500,200,500,250);outtextxy(497,270,"x");line(500,200,450,150);outtextxy(445,130,"q");line(500,200,550,150);outtextxy(550,130,"e");line(500,200,450,250);outtextxy(445,270,"z");line(500,200,550,250);outtextxy(550,270,"c");/*以上是画8个方向的控制介绍*/setcolor(YELLOW);outtextxy(420,290,"Press 'Enter' to end");/*压回车键结束*/ setfillstyle(SOLID_FILL,RED);bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);/*入口位置显示*/ while(c!=13)/*如果按下的不是回车键*/{c=getch();/*接收字符后开始各个方向的探索*/if(c=='w'&&map[x-1][y]!=1)DrawPeople(&x,&y,1);/*上*/elseif(c=='e'&&map[x-1][y+1]!=1)DrawPeople(&x,&y,2);/*右上*/elseif(c=='d'&&map[x][y+1]!=1)DrawPeople(&x,&y,3);/*右*/elseif(c=='c'&&map[x+1][y+1]!=1)DrawPeople(&x,&y,4);/*右下*/elseif(c=='x'&&map[x+1][y]!=1)DrawPeople(&x,&y,5);/*下*/elseif(c=='z'&&map[x+1][y-1]!=1)DrawPeople(&x,&y,6); /*左下*/elseif(c=='a'&&map[x][y-1]!=1)DrawPeople(&x,&y,7); /*左*/else if(c=='q'&&map[x-1][y-1]!=1)DrawPeople(&x,&y,8); /*左上*/ }setfillstyle(SOLID_FILL,WHITE); /*消去红色探索物,恢复原迷宫图*/ bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);if(x==N-2&&y==N-2)/*人工控制找成功的话*/yes=1; /*如果成功标志为1*/}void WayCopy(int (*oldmap)[N],int (*map)[N])/*拷贝迷宫数组*/ {int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)oldmap[i][j]=map[i][j];}int FindWay(int (*map)[N],int i,int j)/*递归找路*/{if(i==N-2&&j==N-2)/*走到出口*/{yes=1;/*标志为1,表示成功*/return;}map[i][j]=1;/*走过的地方变为1*/WayCopy(oldmap,map); /*拷贝迷宫图*/if(oldmap[i+1][j+1]==0&&!yes)/*判断右下方是否可走*/{FindWay(oldmap,i+1,j+1);if(yes)/*如果到达出口了,再把值赋给显示路线的way数组,也正是这个原因,所以具体路线是从最后开始保存*/{way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i+1][j]==0&&!yes)/*判断下方是否可以走,如果标志yes已经是1也不用找下去了*/{FindWay(oldmap,i+1,j);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}if(oldmap[i][j+1]==0&&!yes)/*判断右方是否可以走*/ {FindWay(oldmap,i,j+1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i-1][j]==0&&!yes)/*判断上方是否可以走*/ {FindWay(oldmap,i-1,j);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}if(oldmap[i-1][j+1]==0&&!yes)/*判断右上方是否可以走*/ {FindWay(oldmap,i-1,j+1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i+1][j-1]==0&&!yes)/*判断左下方是否可以走*/ {FindWay(oldmap,i+1,j-1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}if(oldmap[i][j-1]==0&&!yes)/*判断左方是否可以走*/ {FindWay(oldmap,i,j-1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}WayCopy(oldmap,map);if(oldmap[i-1][j-1]==0&&!yes)/*判断左上方是否可以走*/ {FindWay(oldmap,i-1,j-1);if(yes){way[wayn][0]=i;way[wayn++][1]=j;return;}}。
PHP程序设计经典300例
PHP程序设计经典300例不知道怎么转载,原⽂源⾃:来⾃:php100钟泽锋第⼀例<?php$s_html="<b>⽂字加粗</b>";echo $s_html;?>第⼆例<?php$s_javascript=<<<start<script type="text/javascript">alert("");</script>start;echo $s_javascript;?>第三列<?php$a="name";$$a="hello php";echo $name;?>第四例<?php$color="";echo "<ul>";for($i=1;$i<=10;$i++){if($i%2==0){$color="red";}else{$color="yellow";}echo "<li style='background:".$color.";width:200px'>第".$i."⾏</li></ul>";}?>第五例index.php页⾯:<form action="check.php" method="post">⽤户名:<input type="text" name="user" /><br />密码:<input type="password" name="pass"/><br /><input type="submit" value="提交"/><input type="reset" value="重置"/></form>check.php页⾯:<?phpif(isseet($_POST)){if($_POST['name']=='admin' && $_POST['pass']=='admin'){echo"⽤户登录成功";}else{echo"⽤户登录失败";}?>第6列<?phpecho "index.php<br><br>";echo "_FILE_:"._FILE_."<br>";echo "request_uti:".$_SERVER["request_urt"]."<br>";echo "script_name:".$_SERVER["script_name"]."<br>";echo "php_self:".$_SERVER["php_self"]."<br>";echo "script_filename:".$_SERVER["script_filename"]."<br>";?>第7列<?php$str="0123456789abcdefghijklmnopqrstuvwxyz";$n=5; //字符长度$len=strlen($str)-1;for($i=0;$i<$n;$i++){$s = $s.$str[rand(0,$len)];}echo $s."<br/>";?>第8列<?php$a='';echo "直接输出:".$a;echo "<br/>";echo "直接输出:".'$a';echo "<br/>";echo "直接输出:"."$a";?>第9列index.php页⾯:<?phpecho "常见的原⼦操作";echo "<a href='check.php?action=add'>执⾏增加操作</a><br/>"; echo "<a href='check.php?action=del'>执⾏删除操作</a><br>"; echo "<a href='check.php?action=search'>执⾏查找操作</a><br>"; echo "<a href='check.php?action=update'>执⾏更新操作</a><br>"; ?>check.php页⾯:<?php$action=$_GET["action"];switch($action){case "add";echo "<script>alert('现在可以实现增加功能!');</script>"; break;case "del";echo "<script>alert('现在可以实现删除功能!');</script>"; break;case "search";echo "<script>alert('现在可以实现查找功能!');</script>";case "update";echo "<script>alert('现在可以实现更新功能!');</script>"; break;}?>第10列index.php页⾯:<html><head><title></title></head><body><form action="check.php" method="post">message<input type="text" name="name" value="123456"/><input type="submit" value="提交" /></form></body></html>check.php页⾯:<?php$urlar=parse_url($_SERVER['http_referer']);print("<pre>");print_r($urlar);print_r($_SERVER['http_referer']);if($urlar['host']!="172.0.0.1"){echo "页⾯失效";echo "<script>alert('链接失效');location='index.php';</secript>"; exit;}echo "可以正常访问页⾯";?>第11例index.php页⾯:<form name="myform" accept="date.php" method="post">年龄计算器<br />出⽣年份:<input type="text" name="year" value=""/><br />出⽣⽉份:<input type="text" name="month" value=""/><br />出⽣那天的号数:<input type="text" name="day" value=""/><br /> <input type="submit" value="提交"/><input type="reset" value="重置"/></form>date.php页⾯:<?php$year=$_POST['year'];//获取年份$month=$_POST['month'];//获取⽉份$day=$_POST['day'];//获取⽇期$bithday=mktime(0,0,0,$month,$day,$year);//转化为时间戳毫秒数$nowUNIX=time();//获取现在的时间戳毫秒数$age=$nowUNIX-$bithday;$age=floor($age / (365*24*60*60));//时间戳毫秒数转化为年⽉⽇echo "<script language='javascript' type='text/javascript'>";echo "alert('您的年龄为:".$age."');";echo "</script>";?><div id="">⽤户选择图⽚</div><div id="contains"><select name="mymenu" id="change" onchange="check(this)"> <option value="images/1.jpg">图⽚1</option><option value="images/2.jpg">图⽚2</option><option value="images/3.jpg">图⽚3</option></select><img id="shoetime" src="images/1.jpg"/></div><script type="text/javascript">function check(obj){var src=obj.value;$("shoetime").src=src;}function $(obj){return document.getElementById(obj);}</script>第13例<?phpdate_default_timezone_set('PRC');echo "中国北京时间:";echo date("y-m-d h:i:s")."<br>";date_default_timezone_set('America/New_York');echo "美国纽约时间:";echo date("y-m-d h:i:s")?>第14例<!--论坛发帖内容长度验证--></form><script type="text/javascript">function check(){if(document.myform.text.value==""){alert("内容不能为空");return false;}return true;}</script><?phpif(!empty($_POST['text'])){$str=$_POST['text'];preg_match_all("/./us",$str,$match);$num=count($match[0]);if($num<=10){echo "<script>alert('输⼊的长度⼩于10');</script";}else{echo "<script>alert('发布成功');</script";}第15例<!--在⽹页中引⼊头部⽂件和底部⽂件-->index.php页⾯<?php include("header.php") ?><div style="background: url('images/3.jpg') no-repeat;width: 900px;height: 300px;"> </div> <?php include("footer.php") ?>header.php页⾯<title>⽂件引⽤</title><style>*{margin: 0px;padding: 0px;}div{margin: auto;}</style><div style="background: url('images/1.jpg') no-repeat;width: 900px;height: 250px;"></div> footer.php页⾯<div style="background: url('images/2.jpg') no-repeat;width: 900px;height: 31px;"> </div>第16例:<!--在⽹页主体中动态却换内容 --><title>⽂件引⽤</title><div style="color: red;"><center><a href="index.php?id=index">⾸页</a><a href="index.php?id=second">简介</a></center></div><?phpswitch($_GET['id'])//判断页⾯传⼊的id{case "index";require("main.php");//引⽤主页⽂件break;case "second";require("main2.php");break;default:require("main.php");}?>第17例:检测⽂件后缀<br /><input type="file" name="file" value=""/><br /> <!--⽂件域--><input type="submit" value="检测"/></form><?php$pic=$_POST['file'];$pics=explode('.',$pic);//转换为数组$num=count($pics); //获取数组长度echo '<br />上传⽂件的扩展名为:'.$pics[$num-1]; //获取扩展名内容?>第18例:<?php/* 测试脚本运⾏时间*/header("Content-Type:text/html;charset=utf-8");$stime=microtime(true);echo "本php脚本运⾏的时间为:";$etime=microtime(true);$total=$etime-$stime;$str_total=var_export($total,true);if(substr_count($str_total,"E")){$float_tloal=floatval(substr($str_total,5));$total=$float_tloal/100000;echo "$total".'秒';}?>第19例:<!--模拟实现登录链接数据库--><form action="index.php" method="post">选择链接⽅式:<select name="host"><option value="localhost" selected="" >localhost</option><option value="127.0.0.1">127.0.0.1</option></select><br />⽤户名:<input type="text" value="" name="user"/><br />密码:<input type="password" value="" name="pwd"/><br /><input type="submit" value="链接"/><input type="reset" value="重置"/></form><?phpif(isset($_POST['host'])){$conn=mysql_connect($_POST['host'],$_POST['user'],$_POST['pwd'])or die("数据库链接失败"); if($conn){echo "<script>alert('数据库链接成功')<script>";}}?>第20例:<select name="database" size="10"><option value="0" selected="">请选择</option><?php$conn=mysql_connect("localhost","root","123456");$re=mysql_query("show databases");while($arr=mysql_fetch_assoc($re)){ ?><option value="<?php echo $arr['Database'];?>"><?php echo $arr['Database']."<br/>";?></option><?php}?></select><input type="submit" value="确定"/></form><?php$conn=mysql_connect("localhost","root","123456");$database=$_POST['database'];if(isset($_POST['database'])){if($database=="0"){echo "<script>alert('没有选择数据库')<script>";}else{mysql_select_db($database);echo "<script>alert('选择".$database."数据库链接成功')<script>";}}?>第21例check.php页⾯:<?php//图⽚上传到服务器function fileext($filename){return substr(strrchr($filename,'.'),1); //获取扩展名}function random($length){ //⽣成随机⽂件名函数$hash='CR-';$chars='abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz'; $max=strlen($chars)-1;mt_srand((double)microtime()*1000000);for($i=0;$i<$length;$i++){$hash.=$chars(mt_rand(0,$max));}return $hash;}form.php页⾯:<form action="upload.php" method="post" enctype="multipart/form-data"><!--定义method属性--><table border="0" cellspacing="0" cellpadding="0" align="center" width="300px"><tr><td width="55" height="20" align="center"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"/>⽂件:</td><td height="16"><input type="file" name="file" value="浏览"/></td></tr><tr><td align="center" colspan="2"><br /><input type="submit" name="B1" value="上传"/></td></tr></table></form>upload.php页⾯:<?phpinclude("check.php");$uploaddir="./files?";$type=array("jpg","gif","bmp","jpeg","pan");//设置允许上传⽂件的类型if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type))//判断上传⽂件的类型是否在范围内{$text=implode(",",$type);echo "您只能上传以下类型⽂件:",$text,"<br/>";}else{$filename=explode(".",$_FILES['file']['name']);//获取⽂件名do{$filename[0]=random(10);$name=implode(".",$filename);$uploadfile=$upload.$name;}while(file_exists($uploadfile));if(is_uploaded_file($_FILES['file']['tmp_name'])){if(move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){echo "<center>您的⽂件已经上传完毕上传图⽚预览:</center><br/><center><img src='$uploadfile'></center"; echo "<br/><center><a href='javascript:history.go(-1)'>继续上传</a></center>";}else{echo "上传失败";}}}?>第22例<!--在外部⽂件中读取并显⽰⽤户协议--><table width="100" border="0" cellpadding="1" cellspacing="1" bgcolor="#cccccc"><tr><td bgcolor="#ffffff"><!--写⽂本内容要加载区--></tr></table><form action="zhuce.php" method="post" name="register" id="form"><input type="hidden" name="action" id="action" value="agree"/><input type="submit" name="submit" value="同意"/></form><form action="" method="post" name="form" id="from"><a href="index.php"><input type="reset" name="reset1" id="reset1" value="不同意"/></a></form>第23例<!--不区分⼤⼩写输⼊的⽤户登录名--><form action="check.php" method="post"><table width="250px" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#cccccc"> <tbody><tr><td colspan="2" height="25" bgcolor="#f7f7f7" align="center">⽤户登录——不区分⼤⼩写</td></tr></tbody><tr><td width="20%" height="25" align="right" bgcolor="#f7f7f7">⽤户名:</td><td height="25" bgcolor="#f7f7f7"><input style="" name="username" type="text" id="username"/></td></tr><tr><td height="25" align="right" bgcolor="#f7f7f7">密码:</td><td height="25" bgcolor="#f7f7f7"><input type="password" name="userpwd" id="password"/></td></tr><tr align="center"><td height="25" colspan="2" align="right" bgcolor="#f7f7f7"></td></tr></table><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td width="39%" align="right"><span style="word-spacing: 0px; margin:0px ; margin-bottom: 0px;" ><input type="submit" name="login" id="login" value="登录"/></span></td><td width="61%"><input type="reset" name="reset" id="reset" value="重置"/></td></tr></table></form>第24例倒计时某些赛事header("Content-Type:text/html;charset=utf-8");$i=time();$x=strtotime("2015-04-5 00:00:00");;$d=round(($x-$i)/3600/24);echo "<b>距离清明节还有:<font color='red'>".$d."</form>天</b>"; ?>第25例index.php页⾯:读取外部⽂本并分页function m_substr($str,$start,$length){$str_length=$start=$length;$tmp_str="";for($i-0;$i<$str_length;$i++){if(ord(substr($str,$i,1))==0x0a){$tmp_str.='<br/>';}if(ord(substr($str,$i,1))>0x0a){$tmp_str.=substr($str,$i,2);$i++;}else{$tmp_str.=substr($str,$i,1);}}retun $tmp_str;}?><body><div id="header"><b>⽂本⽂件内容分页显⽰</b></div><div id="content"><div id="show"><p><?php/*此处省略⾃定义函数m_substr()具体实现*/if(isset($_GET['page'])){$page=$_GET['page'];}else{$page=1;}$counter=file_get_contents("example.txt");$length=strlen($counter);$page_count=ceil($length/400);$str=m_substr($counter,0,($page-1)*400);$str1=m_substr($counter,0,$page*400);echo substr($str1,strlen($str),strlen($str1)-strlen($str)); ?></p></div><center><span><?phpecho "当前页:".$page."/".$page_count." ";{echo "<a herf=index.php?page=".($page-1).">上⼀页</a>"; }if($page<$page_count){echo "<a herf=index.php?page=".($page+1).">下⼀页</a>"; }echo "<a herf=index.php?page=".$page_count.">尾页</a>"; ?></span></center></div><div id="footer"><br />⽂本分页</div></body>第26例会员信息分页显⽰conn.php页⾯:<?phpheader("Content-Type:text/html;charset=utf-8");mysql_connect("localhost","root","") or die("数据库连接有误!");mysql_select_db("student") or die("数据库选择有误!");mysql_query("set names 'utf8'");?><?php//user.php页⾯:$page=isset($_GET['page'])?$_GET['page']:1;$pagesize=5; //显⽰条数$sql="select count(*) from student";$result=mysql_query($sql);$maxrows=mysql_result($result,0,0);$maxpage=ceil($maxrows/$pagesize);if($page>$maxpage){$page=$maxpage;}if($page<1){$page=1;}$offset=($page-1)*$pagesize;$sql="select * from student limit{$offset},$pagesize";$result=mysql_query($sql);while($rows=mysql_fetch_assoc($result)){echo "<tr>";echo "<td>{$rows['id']}</td>";echo "<td>{$rows['username']}</td>";echo "<td>{$rows['email']}</td>";echo "<td>".date("Y-m-d H:i:s",$rows['datetime']+8*3600)."</td>";echo "</tr>";}?>第27例:检测⽤户输⼊⽇期的合法性<form action="index.php" method="poost"><b>检测⽤户输⼊⽇期的合法性</b>⽤户名:<input type="text" name="username" value=""/><br />⽣⽇⽇期:<input type="text" name="userdate" value="" size="18"/><br /><input type="submit" value="检测"/><input type="reset" value="重置"/></form><?phpif(!empty($_POST['username'])){$arr=explode("-",$_POST['userdate']);if(checkdate($arr[1],$arr[2],$arr[0])){echo "<script>alert('⽇期".$_POST['userdate']."格式正确')</script>"; }else{echo "<script>alert('⽇期".$_POST['userdate']."格式不对')</script>"; }}?>第28例延迟php脚本的执⾏时间<?phpheader("Content-Type:text/html;charset=utf-8");echo "脚本载⼊时间:".date('Y-m-d H:i:s');sleep(5); //脚本等待5秒后执⾏echo "<br/><br/>";echo "执⾏完毕时间:".date('Y-m-d H:i:s');?>第29例使⽤php动态创建嵌套⽂件夹<?phpheader("Content-Type:text/html;charset=utf-8");function createfolder($path){if(!file_exists($path)){createfolder(dirname($path));mkdir($path,0777);}}createfolder("aa/bb/cc");//模拟测试?>第30例⽤户成绩查询<?phpheader("Content-Type:text/html;charset=utf-8");?><form action="index.php" method="post" ><b>输⼊分数</b><br />分数:<input type="text" name="result" value=""/><br /><input type="submit" value="查询"/><input type="reset"/></form><?phpif(!empty($_POST['result'])){$result=$_POST['result'];if($result>=80&&$result<=100){echo "<script>alert('您的成绩为优秀')</script>";}else if($result>=60&&$result<80){echo "<script>alert('您的成绩为合格')</script>";}else{echo "<script>alert('您的成绩为不合格')</script>";}}?>第31例⽤户输⼊⽇期查询备忘录<?phpheader("Content-Type:text/html;charset=utf-8");?><form action="index.php" method="post"><b>输⼊⽇期:</b><br /><input type="text" name="date"/><br /><input type="submit" value="查询"/><input type="reset"/></form><?phpif(!empty($_POST['date'])){$date=$_POST['date'];$rc=array(); //数组$rc['5-1']='查看⽹站 ';$rc['5-2']='同学聚会';$rc['5-3']='购物';$rc['5-4']='出差';$rc['5-5']='发邮件';foreach($rc as $key=>$value){if($key==$date){echo "<script>alert('".$key."⽇备忘录:".$value."')</script>"; }else{echo "<script>alert('⽆备忘录')</script>";break;}}}?>第32例隔⾏换⾊<?phpheader("Content-Type:text/html;charset=utf-8");echo "<center><b>隔⾏换⾊</b></center>";$color="";echo '<table border="1" width="200" height="200" align="center" cellspacing="0">'; for($i=0;$i<5;$i++){if($i%2==0){$color="red";}else{$color="blue";}echo "<tr bgcolor='".$color."'>";//输出⾏并把颜⾊赋值给背景for($j=0;$j<5;$j++){echo "<td>".$j."</td>";}echo "</tr>";}echo "</table>";?>第33例输出倒序乘法表<?phpheader("Content-type:text/html;charset=utf-8");for($i=9;$i>=1;$i--){for($j=$i;$j>=1;$j--){echo "$i*$j=".($i*$j)." ";}echo "<br/>";}?>第34例表格计算器<?phpheader("Content-Type:text/html;charset=utf-8");?><form action="index.php" method="post">结果:<input type="text" name="sum" id="sum" size="15"/><br />数字1:<input type="text" name="num1" size="10"/><br />运算符:<select name="sub"><option value="+">+</option><option value="-">-</option><option value="*">*</option><option value="/">/</option></select><br />数字2<input type="text" name="num2" id="num2" size="10"/><br /><input type="submit" value="计算"/><input type="reset"/></form><?phpif(!empty($_POST['num1'])){$num1=$_POST['num1'];$num2=$_POST['num2'];$sub=$_POST['sub'];$sum=0;switch($sub){case "+":$sum=$num1+$num2;break;case "-":$sum=$num1-$num2;break;case "*":$sum=$num1*$num2;break;case "/":$sum=$num1/$num2;break;}echo "<script>alert('计算出结果为:".$sum."');</script>";echo "<script>document.getElementById('sum').value='".$sum."'</script>";}?>第35例php动态表格⽣成器<style type="text/css">body{background:#ccc;}</style><form action="35.php" method="post"><b>输⼊⾏列⽣成表格</b><br><br>输⼊⾏:<input type="text" name="cols"><br><br>输⼊列:<input type="text" name="rows"><br><br><input type="submit" value="⽣成表格"><input type="reset" value="重置⾏列"></form><?phpheader("Content-Type:text/html;charset=utf-8");if(!empty($_POST['cols'])){echo"<center><b>⽤户动态输出表格.⾏".$_POST['cols'].",列".$_POST['rows']."</b></center>"; $color="";echo "<table border='1' width='200px' height='200px' align='center' cellspacing='0'>";for($i = 0 ; $i < $_POST['cols'] ; $i++){if($i%2==0){$color="red";}else{$color="blue";}echo "<tr bgcolor='".$color."'>";for($j = 0 ;$j < $_POST['rows'] ; $j++){echo "<td>".$j."</td>";}echo "</tr>";}echo "</table>";}?>第36例:使⽤分⽀语句加载不同⽹页主体<div id="header"><!--页⾯导航条--><ul><li><a href="?id=shop1">基本商品</a></li><li><a href="?id=shop2">推荐商品</a></li><li><a href="?id=shop3">分类商品</a></li></ul></div><div id="content"><!--此处动态更改主体内容--></div><?php$shop_id=$_GET['id'];switch($shop_id){case "shop1"://如果ID为shop1require("shop1.php");break;case "shop2":require("shop2.php");break;case "shop3":require("shop3.php");break;default://默认的选择require("shop1.php");}?>第37例:php万年历<?phpheader("Content-type:text/html;charset=utf-8");date_default_timezone_set("Asia/Shanghai");//设置⽇期时区为中国时区$today = time();$year =@$_GET["year"];$month = @$_GET["month"];if($year=='') $year = date("Y",$today);if($month=='') $month = date("m",$today);if((int)$month==0){$year-=1;$month=12;}$time = mktime(0,0,0,$month,1,$year);//格式化当前⽇期$year = date('Y',$time);$month = date('m',$time);$days = date('t',$time);//当前⽉份⼀共有⼏天$fstdw = date('N',$time);//当前⽉份第⼀天为星期⼏echo "<table border=1 width=260 cellspacing=0 cellpadding=0 align=center bgcolor=#cccccc>"; echo "<tr><td colspan=7 class="title">";$str = "<a href=?year=".($year-1)."&month=".$month.">";$str .= "«</a> ".$year."年 ";$str .= "<a href=?year=".($year+1)."&month=".$month.">";$str .= "»</a> ";$str .= "<a href=?year=".$year."&month=".($month-1).">";$str .= "«</a> ".$month."⽉ ";$str .= "<a href=?year=".$year."&month=".($month+1).">";$str .= "» </a>";echo $str;echo "</td></tr>";echo"<tr>";$str = "<td>⼀</td>";$str .= "<td>⼆</td>";$str .= "<td>三</td>";$str .= "<td>四</td>";$str .= "<td>五</td>";$str .= "<td>六</td>";$str .= "<td>七</td>";echo $str;echo "</td>";$rows = ceil(($days + $fstdw-1)/7);$cd = 1;for($i=0;$i<$rows;$i++){echo "<tr>";。
Java程序设计实例
Java程序设计实例简介Java程序设计是一种广泛应用于软件开发领域的计算机编程语言。
通过设计和构建Java程序,开发人员可以完成各种任务,从简单的控制台输出到复杂的企业级应用程序。
本文将介绍一些常见的Java程序设计实例,帮助读者更好地理解和应用Java编程语言。
实例1:Hello World在学习任何编程语言时,通常第一个示例都是打印“Hello World”。
这个简单的示例演示了如何创建一个最基本的Java程序,并在控制台上输出一条消息。
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}}实例2:计算器这个示例展示了如何使用Java编写一个基本的计算器。
它可以执行加法、减法、乘法和除法等基本运算。
import java.util.Scanner;public class Calculator {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入第一个数字: ");double num1 = scanner.nextDouble();System.out.print("请输入操作符(+, -, *, /): ");char operator = scanner.next().charAt(0);System.out.print("请输入第二个数字: ");double num2 = scanner.nextDouble();double result = 0.0;switch (operator) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;default:System.out.println("无效的操作符");}System.out.println("结果: " + result);}}实例3:学生管理系统这个示例展示了如何使用Java编写一个简单的学生管理系统,其中可以添加、查找和删除学生信息。
python程序设计经典例题
Python程序设计经典例题一、介绍Python作为一种高级的通用编程语言,被广泛应用于各个领域,包括网络编程、数据分析、人工智能等。
在学习Python编程过程中,经典的例题是非常重要的,它可以帮助我们了解编程的基本逻辑和语法,提高我们的编程实战能力。
本文将介绍一些经典的Python程序设计例题,希望能够对大家的学习和工作有所帮助。
二、经典例题一:斐波那契数列斐波那契数列是数学中一个经典的问题,定义如下:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n >= 2)要求编写一个Python程序,输入一个正整数n,输出斐波那契数列的第n个数。
解题思路:可以使用递归或者循环的方式来解决这个问题。
递归的方法比较简单,但是效率不高,可能会导致栈溢出。
循环的方法需要用到一个列表来保存中间结果,效率较高。
代码示例(循环方式):```def fibonacci(n):fib = [0, 1]for i in range(2, n+1):fib.append(fib[i-1] + fib[i-2])return fib[n]```代码示例(递归方式):```def fibonacci(n):if n <= 1:return nelse:return fibonacci(n-1) + fibonacci(n-2)```三、经典例题二:查找素数素数是指除了1和它本身外没有其他因数的整数。
要求编写一个Python程序,输入一个正整数n,输出小于等于n的所有素数。
解题思路:素数的判断可以使用试除法,即对于每个数字,判断它是否能被2到sqrt(n)之间的所有整数整除。
如果都不能整除,则该数字是素数。
代码示例:```import mathdef is_prime(num):if num < 2:return Falsefor i in range(2, int(math.sqrt(num))+1):if num i == 0:return Falsereturn Truedef find_prime(n):primes = []for i in range(2, n+1):if is_prime(i):primes.append(i)return primes```四、经典例题三:矩阵转置给定一个二维的矩阵,要求编写一个Python程序,实现矩阵的转置。
经典的c语言编程案例
经典的c语言编程案例经典的C语言编程案例是学习和理解C语言的重要途径,它们涵盖了C语言的基本语法和常见编程思想。
下面列举了10个经典的C 语言编程案例:1. Hello World程序Hello World程序是入门级的C语言编程案例,它用于展示C语言的基本语法和程序结构。
该程序的功能是在屏幕上输出"Hello World"。
```c#include <stdio.h>int main() {printf("Hello World\n");return 0;}```2. 计算阶乘阶乘是一个经典的数学问题,可以通过递归或循环的方式来求解。
下面是一个使用循环的计算阶乘的C程序。
```c#include <stdio.h>int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}int main() {int n = 5;printf("Factorial of %d is %d\n", n, factorial(n));return 0;}```3. 翻转字符串翻转字符串是一个常见的编程问题,可以通过交换字符串中的字符来实现。
下面是一个用C语言实现翻转字符串的程序。
```c#include <stdio.h>#include <string.h>void reverseString(char* str) {int left = 0;int right = strlen(str) - 1;while (left < right) {char temp = str[left];str[left] = str[right];str[right] = temp;left++;right--;}}int main() {char str[] = "Hello World";reverseString(str);printf("Reversed string: %s\n", str);return 0;}```4. 查找数组中的最大值查找数组中的最大值是一个常见的编程问题,可以通过遍历数组并比较元素的方式来实现。
C语言程序设计经典100例
C语言程序设计经典100例C语言是一种广泛应用于计算机程序设计领域的编程语言。
在学习C语言的过程中,有一些经典的程序例子可以帮助我们更好地理解和掌握编程的基本原理和技巧。
本文将介绍C语言程序设计的经典100例,帮助读者提升编程技能,并展示C语言的强大功能和灵活性。
第一例:Hello World这是C语言程序设计中最经典的例子,也是入门的第一步。
它用最简单的代码实现了打印输出一句"Hello World!"的功能。
代码如下:```c#include <stdio.h>int main() {printf("Hello World!\n");return 0;}```在这段代码中,首先包含了头文件`stdio.h`,这个头文件中定义了输入输出的函数。
然后,在`main`函数中使用`printf`函数打印输出"Hello World!",`\n`表示换行。
最后,`return 0`表示程序正常结束。
第二例:求和这个例子演示了C语言的基本运算。
代码如下:```c#include <stdio.h>int main() {int a = 1;int b = 2;int sum = a + b;printf("The sum of %d and %d is %d\n", a, b, sum);return 0;}```在这段代码中,首先定义了三个整型变量`a`、`b`和`sum`,分别表示两个操作数和它们的和。
然后,使用`printf`函数打印输出计算结果。
第三例:判断奇偶数这个例子展示了C语言中使用条件语句的方法。
代码如下:```c#include <stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);if (num % 2 == 0) {printf("%d is an even number.\n", num);} else {printf("%d is an odd number.\n", num);}return 0;}```在这段代码中,首先定义了一个整型变量`num`,用于存储用户输入的数字。
经典的c语言编程案例
经典的c语言编程案例经典的C语言编程案例是帮助初学者理解和掌握C语言基础知识的重要工具。
下面列举了10个经典的C语言编程案例,每个案例都包含了具体的题目要求、代码实现和程序运行结果的描述。
1. Hello World!题目要求:编写一个程序,在屏幕上输出"Hello World!"。
代码实现:```c#include <stdio.h>int main() {printf("Hello World!\n");return 0;}```程序运行结果:屏幕上输出"Hello World!"。
2. 求两个整数的和题目要求:编写一个程序,输入两个整数,计算它们的和,并输出结果。
代码实现:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和为:%d\n", sum);return 0;}```程序运行结果:根据输入的两个整数,计算它们的和并输出结果。
3. 判断一个数是否为素数题目要求:编写一个程序,输入一个正整数,判断它是否为素数,并输出判断结果。
代码实现:```c#include <stdio.h>int main() {int num, i, flag = 0;printf("请输入一个正整数:");scanf("%d", &num);for (i = 2; i <= num / 2; i++) {if (num % i == 0) {flag = 1;break;}}if (flag == 0) {printf("%d是素数\n", num);} else {printf("%d不是素数\n", num);}return 0;}```程序运行结果:根据输入的正整数,判断它是否为素数并输出判断结果。
C语言程序设计100个经典例子
C语言程序设计100个经典例子C语言作为一门广泛使用的高级编程语言,是计算机科学领域中最具影响力和应用广泛的语言之一。
对于学习C语言的人来说,掌握一些经典的例子是非常重要的,它们可以帮助初学者理解C语言的基本概念和语法,培养编程思维和解决问题的能力。
下面将介绍100个经典的C语言程序设计例子,涵盖了C语言的各个方面,旨在帮助读者快速入门和提高编程水平。
1. Hello World程序```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. 输出整数```c#include <stdio.h>int main() {int num = 123;printf("The number is: %d\n", num);return 0;}```3. 输入输出```c#include <stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);printf("The number you entered is: %d\n", num); return 0;}```4. 计算两个数的和```c#include <stdio.h>int main() {int num1 = 5, num2 = 3;int sum = num1 + num2;printf("The sum of %d and %d is: %d\n", num1, num2, sum); return 0;}```5. 判断奇偶数```c#include <stdio.h>int main() {int num;printf("Enter a number: ");scanf("%d", &num);if(num % 2 == 0) {printf("%d is even.\n", num);} else {printf("%d is odd.\n", num);}return 0;}```6. 计算阶乘```c#include <stdio.h>int main() {int num, i;unsigned long long factorial = 1;printf("Enter a positive integer: ");scanf("%d", &num);for(i = 1; i <= num; ++i) {factorial *= i;}printf("The factorial of %d is: %llu\n", num, factorial); return 0;}```7. 斐波那契数列```c#include <stdio.h>int main() {int n, i;unsigned long long t1 = 0, t2 = 1, nextTerm; printf("Enter the number of terms: ");scanf("%d", &n);printf("Fibonacci Series: %llu, %llu, ", t1, t2); for(i = 3; i <= n; ++i) {nextTerm = t1 + t2;printf("%llu, ", nextTerm);t1 = t2;t2 = nextTerm;}return 0;}```8. 判断素数```c#include <stdio.h>int main() {int num, i, flag = 0;printf("Enter a positive integer: ");scanf("%d", &num);for(i = 2; i <= num/2; ++i) {if(num % i == 0) {flag = 1;break;}}if (flag == 0) {printf("%d is a prime number.", num);} else {printf("%d is not a prime number.", num); }return 0;}```9. 字符串反转```c#include <stdio.h>#include <string.h>int main() {char str[100];printf("Enter a string: ");gets(str);strrev(str);printf("Reversed string: %s\n", str); return 0;}```10. 数组求和```c#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};int n = sizeof(arr) / sizeof(arr[0]);int sum = 0, i;for(i = 0; i < n; ++i) {sum += arr[i];}printf("Sum of array elements: %d\n", sum);return 0;}```...(中间省略部分内容)这是其中的10个例子,涵盖了C语言的输入输出、条件语句、循环语句、函数、数组等多个方面。
语言程序设计个经典例子
经典C语言程序设计100例1.数字排列2.奖金分配问题3.已知条件求解整数4.输入日期判断第几天5.输入整数进行排序6.用*号显示字母C的图案7.显示特殊图案8.打印九九口诀9.输出国际象棋棋盘10.打印楼梯并按条件打印笑脸11.经典兔子问题12.判断素数13.水仙花数问题14.正整数分解质因数15.学习成绩划分16.正整数求其最大公约数和最小公倍数17.统计英文字母/空格/数字个数18.求s=a+aa+aaa+aa...a的值19.求解"完数" 20.球体自由落下物理问题21.猴子吃桃问题22.乒乓球比赛抽签问题 23.打印菱形图案24.分数数列求和25.求1+2!+3!+...+20!的和26.利用递归方法求5! 27.将输入字符以相反顺序打印28.岁数问题29.求解正整数位数 30.判断回文数31.星期几猜测游戏 32.改变文本颜色33.学习gotoxy()与clrscr()函数34.练习函数调用35.设置文本颜色36.求100之内的素数37.对10个数进行排序38.求3*3矩阵对角线元素之和39.数字插入数组重新排序40.将一个数组逆序输出41.static定义静态变量用法42.使用auto定义变量用法43.使用static的另一用法44.使用external 的用法45.使用register定义变量方法46.宏#define命令练习(1) 47.宏#define命令练习(2) 48.宏#define命令练习(3)49.#if #ifdef和#ifndef的综合应用 50.#include 的应用练习 51.学习使用按位与& 52.学习使用按位或| 53.学习使用按位异或^ 54.取一个整数从右端开始的4~7位。
55.学习使用按位取反~ 56.用circle画圆形57.学用line画直线 58.用rectangle画方形59.画图综合例子60.画图综合例子261.打印杨辉三角形 62.学习putpixel画点63.画椭圆ellipse 64.利用ellipse and rectangle画图65.画个最优美的图案66.输入3个数字按大小顺序输出67.输入数组交换元素重新输出68.多个整数后移位置问题69.圆圈报数问题70.计算一个字符串长度 71.编写输入/输出函数72.创建链表73.反向输出链表74.连接两个链表75.算一道简单题目 76.调用函数求1/2+1/4+...+1/n77.填空练习(指向指针的指针) 78.找到年龄最大的人79.字符串排序80.海滩猴子分桃81.已知公式条件求数字 82.八进制转换为十进制 83.求0-7所能组成的奇数个数84.由两个素数之和表示的偶数85.判断一个素数能被几个9整除86.两个字符串连接程序 87.结构体变量传递 88.读取数字的整数值并打印出该值个数的*89.数据加密90.专升本一题91.时间函数举例1 92.时间函数举例293.时间函数举例3 94.一个猜数游戏95.家庭财务管理小程序 96.计算字符串中子串出现的次数97.输入字符并保存到磁盘98.字符串转换成大写字母并输出保存99.文件操作应用1 100.文件操作应用2--------------------------------------------------------------------------------c语言经典100题【实用】【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息技术科高一年级VB学案设计:张浪
经典程序设计实例:
1、从键盘输入两个正整数m和n,求其最大公约数和最小公倍
数。
2、一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程找出1000之内所有完数。
3、一个球从100米高度自由落下,每次落地后反跳回原高度的一
半,再落下,再反弹……求它在第10次落地时,共经过多少米?
第10次反弹多高?
4、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,就只剩一个桃子了。
求第一天共摘多少个桃子。
5、编程输出九九乘法表。
6、编程打印“数字金字塔”:
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
7、题目:公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
具体解释:百钱买百鸡问题,公鸡5元1只,母鸡3元一只,小鸡1元3只,问有100元买100只鸡,各多少只?
8、已知Faibonacai(费波那契)数列的前几项0、1、1、2、3、5、8、13、21、34……,编程输出求出前20项。