C语言实例
c语言实例111道之欧阳科创编
c语言111道例题1.输入两个正整数,m和n,求其最大公约数和最小公倍数。
#include<stdio.h>void main(){int hcf(int,int); /*函数声明*/int lcd(int,int,int); /*函数声明*/int u,v,h,l;printf("Please input two numbers:\n");scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%d\n",h);l=lcd(u,v,h);printf("L.C.D=%d\n",l);}int hcf(int u,int v){int t,r;{t=u;u=v;v=t;}while((r=u%v)!=0){u=v;v=r;}return(v);}int lcd(int u,int v,int h){return(u*v/h);}2.输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。
#include<stdio.h>int letter,digit,space,others;void main(){void count(char[]);char text[80];printf("Please input string:\n");gets(text);printf("string:\n");puts(text);digit=0;space=0; others=0;count(text);printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,spa ce,others);}void count(char str[]){int i;for(i=0;str[i]!='\0';i++)if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))letter++;else if(str[i]>='0'&&str[i]<='9')digit++;else if(str[i]==32)space++;elseothers++;}3.输入一个正整数求出它是几位数;输出原数和位数。
c语言小项目开发实例
c语言小项目开发实例C语言是一种广泛应用于计算机科学领域的编程语言,它具有高效、简洁、可移植等特点,因此在各种小项目开发中都有着广泛的应用。
本文将介绍几个基于C语言的小项目开发实例,希望能够对初学者有所帮助。
一、简单计算器计算器是我们日常生活中经常使用的工具,而用C语言编写一个简单的计算器也是一个不错的练手项目。
下面是一个简单的计算器代码:```#include <stdio.h>int main(){char op;float num1, num2, result;printf("请输入运算符:+、-、*、/\n");scanf("%c", &op);printf("请输入两个数字:\n");scanf("%f %f", &num1, &num2);switch(op){case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;default:printf("输入的运算符有误!\n"); return 0;}printf("计算结果为:%f\n", result);return 0;}```这个计算器可以进行加、减、乘、除四种基本运算,用户只需要输入运算符和两个数字即可得到计算结果。
这个小项目可以帮助初学者熟悉C语言的基本语法和流程控制语句。
二、猜数字游戏猜数字游戏是一种简单有趣的游戏,玩家需要根据提示猜出一个随机生成的数字。
下面是一个简单的猜数字游戏代码:```#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){int num, guess, count = 0;srand(time(0));num = rand() % 100 + 1;printf("猜数字游戏开始!\n");do{printf("请输入一个1-100之间的整数:\n");scanf("%d", &guess);count++;if(guess > num){printf("猜大了!\n");}else if(guess < num){printf("猜小了!\n");}else{printf("恭喜你猜对了!你一共猜了%d次。
c语言程序设计应用实例
c语言程序设计应用实例C语言程序设计应用实例在计算机科学领域中,C语言是一种广泛应用的编程语言。
它简洁高效,可移植性强,适用于各种应用开发。
本文将介绍几个C语言程序设计的实际应用实例,展示C语言的强大功能和灵活性。
一、学生成绩管理系统学生成绩管理系统是学校教学管理的重要组成部分。
通过C语言程序设计,可以实现一个简单而实用的学生成绩管理系统。
该系统可以实现学生信息的录入、查询、修改和删除等功能。
通过定义结构体来存储学生信息,并利用文件操作实现数据的读取和存储。
通过编写相应的函数,可以实现对学生信息的增删改查操作。
这样的学生成绩管理系统可以大大提高学校教学工作的效率和准确性。
二、图书管理系统图书管理系统是图书馆管理的基础工具。
使用C语言程序设计,可以开发出一个功能完善的图书管理系统。
该系统可以实现图书信息的录入、查询、借阅和归还等功能。
通过定义结构体来存储图书信息,并利用链表来实现数据的组织和管理。
通过编写相应的函数,可以实现对图书信息的操作。
这样的图书管理系统可以提高图书馆的管理效率和服务质量。
三、简单计算器计算器是人们日常生活中常用的工具之一。
通过C语言程序设计,可以实现一个简单而实用的计算器。
该计算器可以进行基本的加减乘除运算,并支持括号的使用。
通过编写相应的函数,可以实现对输入表达式的解析和计算。
这样的计算器可以满足人们日常生活中的简单计算需求。
四、文件加密解密工具文件加密解密工具是保护个人隐私的重要手段。
通过C语言程序设计,可以实现一个简单而安全的文件加密解密工具。
该工具可以对文件进行加密和解密操作,并通过用户提供的密钥来保证数据的安全性。
通过编写相应的函数和算法,可以实现对文件内容的加密和解密。
这样的文件加密解密工具可以保护个人隐私和重要数据的安全。
五、网络聊天室网络聊天室是人们交流和社交的重要平台。
通过C语言程序设计,可以实现一个简单而实用的网络聊天室。
该聊天室可以实现用户的注册、登录、发送消息和接收消息等功能。
c编程实例
c编程实例C语言是一门非常基础的编程语言,在许多计算机科学课程和项目中都会使用。
学习C语言可以让我们掌握编程的基本概念和技巧,从而更好地进行编程工作。
在本文中,我们将探讨一些C编程实例,让我们一步步了解C编程的基础知识和编程技巧。
1. Hello World程序Hello World程序是每个编程语言学习者的必修课程。
在C语言中,我们可以使用下面的代码来打印“Hello World”到控制台:#include<stdio.h>int main(){printf("Hello World!");return 0;}这个程序很简单,但它展示了C语言的基本语法。
首先我们用#include语句包含了“stdio.h”头文件,这是一个流输入输出库。
接下来我们定义了一个名为main的函数,这是C语言中程序的入口点。
函数的返回类型是int,意味着该函数将返回一个整数。
在函数内部,我们使用printf函数打印“Hello World”到控制台。
注意,在字符串后面加上感叹号,否则程序将只打印“Hello World”。
最后我们使用return语句表示程序将以0值退出。
这是规定编程实践中的惯例。
2. 计算平均值下面我们来编写一个程序,它可以计算任意一组数字的平均值。
#include<stdio.h>int main(){int n,i;float sum=0,num;printf("Enter the total number of elements: ");scanf("%d",&n);printf("Enter %d elements: ",n);for(i=0;i<n;i++){scanf("%f",&num);sum+=num;}printf("Average = %.2f",sum/n);return 0;}在程序的开始,我们定义了3个变量:n,i和sum。
单片机c语言程序设计实例100例--基于805i+proteus仿真
以下是一个基于8051单片机和Proteus仿真环境的C语言程序设计实例:实例1:点亮LED灯
在这个例子中,我们将使用C语言编写一个简单的程序来控制8051单片机的一个I/O引脚,使其驱动一个LED灯。
c代码:
要使用Proteus进行仿真,你需要按照以下步骤操作:
1. 打开Proteus软件,创建一个新的设计工程。
2. 在元件库中搜索并添加相应的8051单片机型号(如AT89C51)和LED 元件到工作区。
3. 根据实际硬件连接,正确配置单片机的引脚和LED的连接。
4. 右键单击单片机元件,选择“Edit Component”打开编辑窗口。
5. 在“Program File(s)”区域,点击右侧的浏览按钮,选择你的C语言源文件(如上述的main.c)。
6. 点击“OK”关闭编辑窗口,然后点击工具栏上的“Play”按钮开始仿真。
在仿真过程中,你应该能看到LED灯被点亮,这表明你的C语言程序已经在Proteus环境中成功运行。
以上只是一个基础的例子,实际的"单片机C语言程序设计实例100例--基于8051+Proteus仿真"会包含更复杂和多样化的应用场景,包括定时器/计数器
应用、中断处理、串口通信、ADC/DAC转换、液晶显示等等。
每个实例都会详细介绍程序设计思路、代码实现以及如何在Proteus中进行仿真调试。
通过这些实例的学习和实践,你可以逐步掌握8051单片机的C语言编程技巧和Proteus仿真环境的使用方法。
C语言经典程序实例例
C语言经典程序5例【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k)printf("%d,%d,%d\n",i,j,k);}}【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
(完整版)C语言10大经典实例
案例一贪吃蛇游戏#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++;。
c语言应用实例
c语言应用实例1. 实现一个简单的计算器#include <stdio.h>int main() {char operator;double num1, num2;printf("请输入一个运算符(+, -, *, /):");scanf("%c", &operator);printf("请输入两个数字:");scanf("%lf %lf", &num1, &num2);switch (operator) {case '+':printf("%.2lf + %.2lf = %.2lf", num1, num2, num1 + num2);break;case '-':printf("%.2lf - %.2lf = %.2lf", num1, num2, num1 - num2);break;case '*':printf("%.2lf * %.2lf = %.2lf", num1, num2, num1 * num2);break;case '/':printf("%.2lf / %.2lf = %.2lf", num1, num2, num1 / num2);break;default:printf("错误!运算符无效。
");}return 0;}2. 实现一个学生成绩管理系统#include <stdio.h>#include <stdlib.h>#include <string.h>struct student {int id;char name[20];double score;};int main() {int n;printf("请输入学生数量:");scanf("%d", &n);struct student *students = (struct student*) malloc(n * sizeof(struct student));for (int i = 0; i < n; i++) {printf("请输入第%d 个学生的ID, 姓名和成绩:", i + 1);scanf("%d%s%lf", &students[i].id, students[i].name,&students[i].score);}printf("\n");printf("学生信息如下:\n");printf("ID\t姓名\t成绩\n");for (int i = 0; i < n; i++) {printf("%d\t%s\t%.2lf\n", students[i].id, students[i].name,students[i].score);}free(students);return 0;}3. 实现一个简单的加密/解密程序#include <stdio.h>#include <stdlib.h>#include <string.h>int main() {char str[100];printf("请输入需要加密/解密的字符串:");scanf("%s", str);int len = strlen(str);for (int i = 0; i < len; i++) {str[i] ^= 32;}printf("加密/解密结果为:%s", str);return 0;}4. 实现一个简单的文件操作程序#include <stdio.h>#include <stdlib.h>int main() {FILE *fp;char str[100];fp = fopen("test.txt", "w");if (fp == NULL) {printf("文件打开失败!");exit(1);}printf("请输入内容:");fgets(str, 100, stdin);fputs(str, fp);fclose(fp);fp = fopen("test.txt", "r");if (fp == NULL) {printf("文件打开失败!");exit(1);}printf("文件内容为:");fgets(str, 100, fp);printf("%s", str);fclose(fp);return 0;}。
51单片机C语言编程100例单片机c语言编程
51单片机C语言编程100例单片机c语言编程单片机是一种常用于嵌入式系统的微型计算机,可以根据预设的程序来执行指令。
而C语言是一种高级编程语言,具有较强的可读性和可移植性。
在单片机编程中,C语言是常用的编程语言之一。
本文将介绍51单片机C语言编程中的100个实例,帮助读者了解单片机编程的基本概念和技巧。
1. LED灯闪烁这是一个简单的实例,用于让LED灯交替闪烁。
在C语言中,可以使用宏定义和循环语句来实现:```c#include <reg52.h>#define LED P1void delay(unsigned int t) //延时函数{unsigned int i, j;for (i = t; i > 0; i--)for (j = 110; j > 0; j--);}void main(){while (1) //循环执行{LED = 0xFF; //LED灯亮delay(1000); //延时1秒LED = 0x00; //LED灯灭delay(1000); //延时1秒}}```2. 数码管显示这个实例演示了如何使用数码管进行数字显示。
在C语言中,可以通过控制IO口状态来实现:```c#include <reg52.h>#define LED P0unsigned char code digit[] ={ //数码管显示值表0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void delay(unsigned int t) //延时函数{unsigned int i, j;for (i = t; i > 0; i--)for (j = 110; j > 0; j--);}void main(){unsigned int i;while (1) //循环执行{for(i=0;i<10;i++){LED = digit[i]; //显示数字delay(1000); //延时1秒}}```3. 蜂鸣器发声这个实例展示了如何使用蜂鸣器进行声音发声。
c语言万能编程模板C语言程序设计50例经典收藏
c语言万能编程模板C语言程序设计50例经典收藏C语言万能编程模板:C语言程序设计50例经典收藏一、简介C语言是一种高效、通用的编程语言,被广泛应用于各种计算机平台上。
为了更好地学习和应用C语言,程序设计的模板是非常重要的。
本文将提供一套万能的C语言编程模板,并收藏了50个经典的C语言程序设计实例。
二、基本结构任何一个C语言程序都包含一些基本的结构,以下是一个基本的C语言程序框架:```c#include <stdio.h>int main() {// 在此处编写程序代码return 0;}```三、模板示例下面是一个使用C语言编写的经典示例,展示了如何使用模板来编程:```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;}```四、程序设计实例1. 逆序输出数字```c#include <stdio.h>int main() {int num, reverse = 0;printf("请输入一个数字:");scanf("%d", &num);while(num != 0) {int remainder = num % 10;reverse = reverse * 10 + remainder;num /= 10;}printf("逆序输出的数字为:%d\n", reverse); return 0;}```2. 判断素数```c#include <stdio.h>int isPrime(int num) {if(num < 2) {return 0;}for(int i = 2; i * i <= num; i++) {if(num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个数字:");scanf("%d", &num);if(isPrime(num)) {printf("%d是素数\n", num); } else {printf("%d不是素数\n", num); }return 0;}```3. 字符串反转#include <stdio.h>#include <string.h>void reverseString(char str[]) {int length = strlen(str);char temp;for(int i = 0; i < length/2; i++) {temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);reverseString(str);printf("反转后的字符串为:%s\n", str); return 0;```五、总结本文提供了一套万能的C语言编程模板,并收藏了50个经典的C 语言程序设计实例,涵盖了C语言的各个方面,希望能对C语言学习者和应用者有所帮助。
c语言简单编程实例
c语言简单编程实例C语言简单编程实例引言:C语言是一种通用的、高效的编程语言,广泛应用于各种计算机系统和软件开发中。
在学习C语言的过程中,编写一些简单的程序实例是非常有帮助的。
本文将给出几个简单的C语言编程实例,帮助初学者掌握基础的编程技巧和思维方式。
一、计算两个数的和题目:编写一个程序,计算输入的两个整数的和并输出结果。
思路:首先通过scanf函数从用户输入中读取两个整数,然后使用加法运算符将两个整数相加,最后通过printf函数将结果输出。
代码示例:```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;}```二、求输入数的平方题目:编写一个程序,计算输入数的平方并输出结果。
思路:与上一个实例类似,首先通过scanf函数从用户输入中读取一个整数,然后使用乘法运算符将该整数与自身相乘,最后通过printf函数将结果输出。
代码示例:```c#include <stdio.h>int main() {int num, square;printf("请输入一个整数:");scanf("%d", &num);square = num * num;printf("该整数的平方为:%d\n", square);return 0;}```三、判断输入数的正负性题目:编写一个程序,判断输入数的正负性并输出结果。
思路:首先通过scanf函数从用户输入中读取一个整数,然后使用if语句判断该整数是否大于0,若大于0则输出正数,若小于0则输出负数,若等于0则输出零。
devc++ 简单c语言实例
在使用DevC++编程软件时,我们可以通过简单的C语言实例来学习和掌握编程的基础知识。
下面我们将介绍一些简单的C语言实例,通过这些实例,你可以快速了解C语言的基本语法和特性。
实例一:Hello World1. 编写代码```c#include <stdio.h>int m本人n() {printf("Hello, World!");return 0;}```2. 运行程序- 在DevC++中,创建一个新的C文件,将上面的代码复制粘贴到文件中。
- 点击菜单栏中的"运行"按钮,或者使用快捷键Ctrl+F9- 在弹出的窗口中,你将看到输出结果为"Hello, World!"实例二:计算两个数的和1. 编写代码```c#include <stdio.h>int m本人n() {int num1, num2, sum;printf("请输入两个数字: ");scanf("d d", num1, num2);sum = num1 + num2;printf("和为: d", sum);return 0;}```2. 运行程序- 在DevC++中,创建一个新的C文件,将上面的代码复制粘贴到文件中。
- 点击菜单栏中的"运行"按钮,或者使用快捷键Ctrl+F9- 在弹出的窗口中,按照提示输入两个数字,你将看到输出结果为两个数字的和。
通过以上两个简单的C语言实例,我们可以初步了解C语言的基本语法和开发流程。
在实际的编程过程中,我们需要不断练习,深入学习C语言的各种语法和特性,才能熟练掌握C语言的编程技巧。
借助于DevC++这样的编程软件,能够帮助我们更加高效地进行程序开发和调试。
C语言是一门通用性较强的编程语言,掌握好C语言的基础知识对于学习和掌握其他编程语言也是非常有益的。
C语言十大经典实例编程
C语言十大经典实例编程案例一贪吃蛇游戏#define N 200#include#include#include#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<="" p="">{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++)< p="">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接口函数*/#include /*数学函数的定义*/#include /*屏幕操作函数*/#include /*I/O函数*/#include /*库函数*/#include /*变量长度参数表*/#include /*图形函数*/#include /*字符串函数*/#include /*字符操作函数*/#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;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;} /*如果移到头,再左移,则移动到最右边字符位置*/{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<="" p="">{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++)< p=""> {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--)< p=""> {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++)< p=""> {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++)</k&&k<8;ii++,jj++)<></k&&k<8;ii++,jj--)<></k&&k<8;kk++)<></k&&k</snake.node;i++)<>。
c语言经典编程实例
c语言经典编程实例C语言作为一门经典的编程语言,拥有丰富的编程实例。
下面列举了十个经典的C语言编程实例。
1. 计算两个数的和这是一个非常简单的C语言编程实例,通过输入两个数,然后计算它们的和并输出。
可以使用scanf函数获取输入的两个数,然后使用加法运算符将它们相加,最后使用printf函数将结果输出。
2. 判断一个数是否为素数素数是指只能被1和自身整除的数。
这个实例可以通过循环判断给定的数是否能被2到它自身减1之间的数整除,如果能被整除,则不是素数,否则是素数。
3. 实现冒泡排序算法冒泡排序是一种简单的排序算法,通过比较相邻的两个元素并交换位置来实现排序。
可以通过循环嵌套和条件判断来实现冒泡排序算法。
4. 计算斐波那契数列斐波那契数列是一个经典的数列,每个数字都是前两个数字之和。
可以使用循环或递归的方式来计算斐波那契数列。
5. 判断一个字符串是否为回文字符串回文字符串是指正序和倒序读都相同的字符串。
可以通过比较字符串的首尾字符来判断是否为回文字符串。
6. 实现链表数据结构链表是一种常见的数据结构,可以通过指针来实现链表的创建、插入和删除操作。
7. 实现二叉树数据结构二叉树是一种常见的数据结构,可以通过指针来实现二叉树的创建、插入和删除操作。
8. 实现图数据结构图是一种常见的数据结构,可以通过邻接矩阵或邻接表来实现图的创建、添加和删除节点以及节点之间的连接关系。
9. 实现简单的计算器计算器是一个常见的应用程序,可以通过使用表达式解析和运算符优先级来实现一个简单的计算器。
10. 实现简单的画图程序画图程序可以通过使用图形库或者字符绘制来实现简单的图形绘制,如画直线、矩形、圆形等。
以上是十个经典的C语言编程实例,涵盖了基本的算术运算、数据结构和常见的应用程序。
通过学习和实践这些实例,可以提高对C语言的理解和应用能力。
C语言综合应用实例
C语言综合应用实例C语言作为一种通用的高级编程语言,广泛应用于软件开发、嵌入式系统等领域。
本文将通过几个实例,展示C语言的综合应用,包括文件处理、图形化界面和网络通信等方面。
一、文件处理文件处理是C语言中常见的操作之一,可以用于读取、写入和修改文件。
以下是一个简单的文件读取实例:```c#include <stdio.h>int main() {FILE *fp;char ch;fp = fopen("example.txt", "r");if (fp == NULL) {printf("无法打开文件!\n");return 1;}while ((ch = fgetc(fp)) != EOF) {printf("%c", ch);}fclose(fp);return 0;}```在该实例中,我们使用`fopen`函数打开一个名为"example.txt"的文本文件,并以只读模式打开。
如果文件打开失败,则会输出一条错误信息。
然后使用`fgetc`函数从文件中逐个字符读取并打印,直到文件结尾。
二、图形化界面C语言可以使用图形库(如GTK+、Qt等)来实现图形化界面。
下面是一个简单的使用GTK+库创建窗口的实例:```c#include <gtk/gtk.h>int main(int argc, char *argv[]) {GtkWidget *window;gtk_init(&argc, &argv);window = gtk_window_new(GTK_WINDOW_TOPLEVEL);g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);gtk_widget_show_all(window);gtk_main();return 0;}```以上代码通过GTK+库创建了一个顶层窗口,并通过`g_signal_connect`函数将窗口关闭事件与`gtk_main_quit`函数连接起来,以便在关闭窗口时退出程序。
C语言综合应用实例
C语言综合应用实例一、学生信息管理系统#include<>/*I/O函数*/#include<>/*其它说明*/#include<>/*字符串函数*/#defineBUFLEN100/*缓冲区最大字符数*/#defineLEN15/*学号和姓名最大字符数,实际请更改*/#defineN100/*最大学生人数,实际请更改*/structrecord/*结构体*/{charcode[LEN+1];/*学号*/charname[LEN+1];/*姓名*/intage;/*年龄*/charsex[3];/*性别*/chartime[LEN+1];/*出生年月*/charadd[30];/*家庭地址*/chartel[LEN+1];/*电话号码*/charmail[30];/*电子邮件地址*/}stu[N];intk=1,n,m;/*定义全局变量*/voidreadfile();/*函数声明*/voidseek();voidmodify();voidinsert();voiddel();voiddisplay();voidsave();voidmenu();intmain(){while(k)menu();system("pause");return0;}voidhelp(){printf("\n0.欢迎使用系统帮助!\n");printf("\n1.进入系统后,先刷新学生信息,再查询;\n");printf("\n2.按照菜单提示键入数字代号;\n");printf("\n3.增加学生信息后,切记保存按7;\n");printf("\n4.谢谢您的使用!\n");}voidreadfile()/*建立信息*/{char*p="";FILE*fp;inti=0;if((fp=fopen("","r"))==NULL){printf("Openfile%serror!Strikeanykeytoexit!",p);system("pause");exit(0);}while(fscanf(fp,"%s%s%d%s%s%s%s%s",stu[i].code,stu[i].name,&stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8){i++;i=i;}fclose(fp);n=i;printf("录入完毕!\n");}voidseek()/*查找*/{inti,item,flag;chars1[21];/*以姓名和学号最长长度+1为准*/printf("------------------\n");printf("-----1.按学号查询-----\n");printf("-----2.按姓名查询-----\n");printf("-----3.退出本菜单-----\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item){case1:printf("请输入要查询的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("--------------------------------------------------------------------\n");printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该学号不存在!\n");break;case2:printf("请输入要查询的学生的姓名:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].name,s1)==0){flag=1;printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("--------------------------------------------------------------------\n");printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}if(flag==0)printf("该姓名不存在!\n");break;case3:return;default:printf("请在1-3之间选择\n");}}}voidmodify()/*修改信息*/{inti,item,num;charsex1[3],s1[LEN+1],s2[LEN+1];/*以姓名和学号最长长度+1为准*/printf("请输入要要修改的学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0)/*比较字符串是否相等*/num=i;printf("------------------\n");printf("1.修改姓名\n");printf("2.修改年龄\n");printf("3.修改性别\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改电话号码\n");printf("7.修改E-mail地址\n");printf("8.退出本菜单\n");printf("------------------\n");while(1){printf("请选择子菜单编号:");scanf("%d",&item);switch(item){case1:printf("请输入新的姓名:\n");scanf("%s",s2);strcpy(stu[num].name,s2);break; case2:printf("请输入新的年龄:\n");scanf("%d",&stu[num].age);break; case3:printf("请输入新的性别:\n");scanf("%s",sex1);strcpy(stu[num].sex,sex1);break; case4:printf("请输入新的出生年月:\n"); scanf("%s",s2);strcpy(stu[num].time,s2);break;case5:printf("请输入新的地址:\n");scanf("%s",s2);strcpy(stu[num].add,s2);break;case6:printf("请输入新的电话号码:\n"); scanf("%s",s2);strcpy(stu[num].tel,s2);break;case7:printf("请输入新的E-mail地址:\n"); scanf("%s",s2);strcpy(stu[num].mail,s2);break;case8:return;default:printf("请在1-8之间选择\n"); }}}voidsort()/*按学号排序*/{inti,j,*p,*q,s;chartemp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0) {strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code); strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].name);strcpy(stu[j-1].name,stu[j].name); strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time); strcpy(stu[j].time,temp);strcpy(temp,stu[j-1].add);strcpy(stu[j-1].add,stu[j].add); strcpy(stu[j].add,temp);strcpy(temp,stu[j-1].tel);strcpy(stu[j-1].tel,stu[j].tel);strcpy(stu[j].tel,temp);strcpy(temp,stu[j-1].mail);strcpy(stu[j-1].mail,stu[j].mail); strcpy(stu[j].mail,temp);p=&stu[j-1].age;q=&stu[j].age;s=*q;*q=*p;*p=s;}}}voidinsert()/*插入函数*/{inti=n,j,flag;printf("请输入待增加的学生数:\n"); scanf("%d",&m);do{flag=1;while(flag){flag=0;printf("请输入第%d个学生的学号:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0){printf("已有该学号,请检查后重新录入!\n");flag=1;break;/*如有重复立即退出该层循环,提高判断速度*/}}printf("请输入第%d个学生的姓名:\n",i+1);scanf("%s",stu[i].name);printf("请输入第%d个学生的年龄:\n",i+1);scanf("%d",&stu[i].age);printf("请输入第%d个学生的性别:\n",i+1);scanf("%s",stu[i].sex);printf("请输入第%d个学生的出生年月:(格式:年.月)\n",i+1); scanf("%s",stu[i].time);printf("请输入第%d个学生的地址:\n",i+1);scanf("%s",stu[i].add);printf("请输入第%d个学生的电话:\n",i+1);scanf("%s",stu[i].tel);printf("请输入第%d个学生的E-mail:\n",i+1);scanf("%s",stu[i].mail);if(flag==0){i=i;i++;}}while(i<n+m);n+=m;printf("录入完毕!\n\n");sort();}voiddel(){inti,j,flag=0;chars1[LEN+1];printf("请输入要删除学生的学号:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("该学号不存在!\n");if(flag==1){printf("删除成功,显示结果请选择菜单6\n");n--;}}voiddisplay(){inti;printf("所有学生的信息为:\n");printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");printf("--------------------------------------------------------------------\n");for(i=0;i<n;i++){printf("%6s%7s%5d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age, stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}}voidsave(){inti;FILE*fp;fp=fopen("","w");/*写入*/for(i=0;i<n;i++){fprintf(fp,"%s%s%d%s%s%s%s%s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}fclose(fp);}voidmenu()/*界面*/{intnum;printf("\n\n学生信息管理系统\n\n");printf("*****************\n\n");printf("*制作人:*\n\n");printf("*****************\n\n");printf("*********************系统功能菜单************************\n"); printf("友情提醒:查询前请先刷新系统!\n");printf("--------------------------------------------\n");printf("*********************************************\n");printf("*0.系统帮助及说明**1.刷新学生信息*\n");printf("*********************************************\n");printf("*2.查询学生信息**3.修改学生信息*\n");printf("*********************************************\n");printf("*4.增加学生信息**5.按学号删除信息*\n");printf("*********************************************\n");printf("*6.显示当前信息**7.保存当前学生信息*\n");printf("********************************************\n");printf("*8.退出系统*\n");printf("**********************\n");printf("--------------------------------------------\n");printf("请选择菜单编号:");scanf("%d",&num);switch(num){case0:help();break;case1:readfile();break;case2:seek();break;case3:modify();break;case4:insert();break;case5:del();break;case6:display();break;case7:save();break;case8:k=0;break;default:printf("请在0-8之间选择\n");}}二、学生成绩管理编写一个菜单驱动的学生成绩管理程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章第2题
#include<stdio.h>
int main()
{
float
r1=0.0414,r2=0.0468,r3=0.054,r4=0.0585,r5=0.0072,P1,P2,P3,P4 ,P5;
int m=1000;
P1=m*(1+5*r1);
P2=m*(1+2*r2)*(1+3*r3);
P3=m*(1+3*r3)*(1+2*r2);
P4=m*(1+r5)*(1+r5)*(1+r5)*(1+r5)*(1+r5);
P5=m*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)* (1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/ 4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+r5/4)*(1+ r5/4);
printf("P1=%6.2f\nP2=%6.2f\nP3=%6.2f\nP4=%6.2f\nP5=%6.2f\ n",P1,P2,P3,P4,P5);
return 0;
}
#include<stdio.h>
int main()
{
int a,b;
float x,y;
char c1,c2;
scanf("a=%db=%d",&a,&b);
scanf("%f%e",&x,&y);
scanf("%c%c",&c1,&c2);
printf("%d%d\n",a,b);
printf("%f%f\n",x,y);
printf("%c%c\n",c1,c2);
return 0;
}
第3章6题
#include<stdio.h>
int main()
{
int c1,c2,c3,c4,c5;
scanf("%d,%d,%d,%d,%d",&c1,&c2,&c3,&c4,&c5); putchar(c1);
put
char(c2);
putchar(c3);
putchar(c4);
putchar(c5);
putchar('\n');
putchar(c1+4);
putchar(c2+4);
putchar(c3+4);
putchar(c4+4);
putchar(c5+4);
putchar('\n');
return(0);
}
用PRINTF输出China其原来字母后面第四个字母代替原来字母。
#include<stdio.h>
int main()
{
Intc1,c2,c3,c4,c5;
scanf("%d,%d,%d,%d,%d",&c1,&c2,&c3,&c4,&c5);
printf("%c",c1);
printf("%c"c2);
printf("%c",c3);
printf("%c",c4);
printf("%c",c5);
printf("\n");
printf("%c",c1+4);
printf("%c",c2+4);
printf("%c",c3+4);
printf("%c",c4+4);
printf("%c",c5+4);
printf("\n");
return(0);
}
P84 第7题
求圆周长,面积,球表面积与体积,圆柱体积。
#include<stdio.h>
int main()
{
float l,s,S,v,V,r,h;
scanf ("%f%f",&r,&h);
l=2*3.14*r;
s=3.14*r*r;
S=4*3.14*r*r;
v=3.14*r*r*h;
V=(4/3)*3.14*r*r*r;
printf("%f %f %f %f %f\n",l,s,S,v,V);
return 0;
}
#include<stdio.h> int main()
{
putchar(getchar()); putchar(getchar()); putchar(getchar()); putchar(getchar()); putchar(getchar()); putchar('\n'); return 0;
}。