c程序
- 格式:doc
- 大小:91.50 KB
- 文档页数:34
C语言程序大全一、概述C语言是一种十分常用的编程语言,广泛应用于多个领域,包括操作系统、嵌入式系统、游戏开发等。
本文将为您提供一份C语言程序大全,涵盖了常见的C语言程序示例,帮助您更好地理解和运用C语言。
二、基本语法1. Hello, World! 程序示例```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```以上代码是C语言的经典入门示例,它会在控制台输出"Hello, World!"。
通过此示例,您可以了解到C语言的基本语法,如#include 指令、main函数等。
2. 变量和数据类型示例```c#include <stdio.h>int main() {int num1 = 10;float num2 = 3.14;char ch = 'A';printf("num1 = %d\n", num1);printf("num2 = %f\n", num2);printf("ch = %c\n", ch);return 0;}```以上代码展示了如何声明和初始化变量,并输出它们的值。
通过此示例,您可以学习到C语言的基本数据类型,如整型、浮点型、字符型等。
3. 条件语句示例```c#include <stdio.h>int main() {int num = 10;if (num > 0) {printf("num is positive.\n");} else if (num < 0) {printf("num is negative.\n");} else {printf("num is zero.\n");}return 0;}```以上代码展示了如何使用条件语句来进行判断。
水仙花#include <stdio.h>void main(){int a,b,c,i;for( i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;if(a*a*a+b*b*b+c*c*c==i){printf("\n");}}}【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:#include "stdio.h"#include "conio.h"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) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}getch();}【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按1 0%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:#include "stdio.h"#include "conio.h"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);getch();}【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
C语言必背18个经典程序(总10页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除C语言必背18个经典程序1、/*输出9*9口诀。
共9行9列,i控制行,j控制列。
*/#include "stdio.h"main(){int i,j,result;for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ }printf("\n");/*每一行后换行*/}system("pause");}2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21....*/main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
*/#include "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap) /*内循环结束后,leap依然为1,则m是素数*/{printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);system("pause");}4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。
c语言的程序构成
C语言的程序构成包括以下几部分:
1. 声明部分(头文件包含):声明部分通常包括引用各种库和头文件,以及定义全局变量和宏等。
2. 函数定义部分:程序中的逻辑主体是通过函数进行定义和实现的。
通常包括主函数(main函数)以及其他自定义函数。
3. 变量和数据类型定义:在C语言中,需要先声明变量的数据类型,然后再进行实际的变量定义。
4. 语句和表达式:C语言程序的执行是通过一系列的语句和表达式来完成的。
常见的语句包括条件语句(if-else语句、switch语句)、循环语句(for循环、while循环、do-while循环)以及控制语句(break、continue、return等)。
5. 输入输出(I/O)操作:C语言提供了一系列的标准输入输出函数,如printf、scanf等,用于输入输出数据。
6. 注释:程序中的注释是对代码进行解释和说明的内容。
C语言中的注释形式有单行注释(//)和多行注释(/* ... */)。
总体来说,C语言的程序构成包括声明部分、函数定义、变量和数据类型定义、语句和表达式、I/O操作以及注释等多个方面,这些部分协同工作,形成一个完整的C语言程序。
一个c语言程序由什么构成一个C程序是由函数组成的,函数是C语言中最重要的概念。
具体关系如下:1、一个源程序文件是由一个或多个C函数组成,一个源程序文件是一个编译单位。
2、一个C程序由一个或多个源程序文件组成,一个源程序文件可以为多个C程序共用。
3、一个C程序中一定要有一个名为main的主函数,执行时总是从主函数开始,其它函数只有被调用时才会执行,执行完毕返回到调用处继续执行,正常情况下总是在主函数结束执行。
4、所有的函数是平行的,即在定义时是相互独立的,主函数可以调用其它函数,其它函数之间可以互相调用,但其它函数不能调用主函数。
5、函数可分为标准函数(库函数)和用户自定义函数。
6、从函数形式看,函数可分为无参函数和有参函数。
扩展资料1、语言简洁、紧凑,使用方便、灵活C语言是一个很小的内核语言,只包括极少的与硬件有关的成分,C 语言不直接提供输入和输出语句、有关文件操作的语句和动态内存管理的语句等(这些操作由编译系统所提供的库函数来实现的),C的编译系统相当简洁。
2、运算符丰富C语言的运算符包含的范围很广泛,共有34种运算符。
C语言把括号、赋值和强制类型转换等都作为运算符处理,从而使C语言哟运算类型极其丰富,表达式类型多样化。
3、数据类型丰富C语言提供的数据类型包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型和共用体类型等,C99又扩充了复数浮点类型、超长整型和布尔类型等。
尤其是指针类型数据,使用十分灵活和多样化,能用来实现各种复杂的运算。
4、具有结构化的控制语句如if…else语句、do…while语句、switch语句和for语句等。
用函数作为程序的模块单位,便于实现程序的模块化。
5、语法限制不太严格,程序设置自由度大。
6、C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
C语言既具有高级语言的功能,又具有低级语言的许多功能,可用来编写系统软件。
C程序设计语言(完美中文版)C语言是一种广泛使用的编程语言,以其高效性和灵活性而著称。
它是一种结构化编程语言,被广泛应用于系统编程、嵌入式系统、操作系统、数据库、网络编程等领域。
C语言的特点是简洁、高效、灵活,并且与硬件紧密相关,使得程序员可以更深入地理解计算机的工作原理。
在C语言中,所有的程序都是由函数组成的。
函数是C语言中的基本构建块,可以用来执行特定的任务。
C语言提供了丰富的库函数,可以用来实现各种功能,例如输入输出、字符串处理、数学运算等。
C语言还支持用户自定义函数,使得程序员可以创建自己的函数来满足特定的需求。
C语言中的数据类型包括基本数据类型和复合数据类型。
基本数据类型包括整型、浮点型、字符型等,用于表示基本的数据。
复合数据类型包括数组、结构体、联合体等,用于表示复杂的数据结构。
C语言还支持指针,可以用来实现内存管理和动态数据结构。
C语言中的控制结构包括条件语句、循环语句和跳转语句。
条件语句用于根据条件的真假来执行不同的代码块。
循环语句用于重复执行一段代码,直到满足特定的条件。
跳转语句用于在程序中实现跳转,例如跳转到循环的开始或结束。
C语言还提供了丰富的输入输出函数,可以用来从用户那里获取输入,并将输出结果显示给用户。
这些函数包括printf、scanf、puts、gets等。
通过这些函数,程序员可以与用户进行交互,获取用户输入的数据,并将处理结果展示给用户。
C语言是一种功能强大、灵活多变的编程语言。
它提供了丰富的数据类型、控制结构和输入输出函数,使得程序员可以高效地实现各种功能。
学习C语言可以帮助程序员更好地理解计算机的工作原理,为后续学习其他编程语言打下坚实的基础。
C程序设计语言(完美中文版)2. 模块化编程:C语言支持模块化编程,可以将程序划分为多个模块,每个模块包含一组相关的函数和数据。
这种模块化编程方式有助于提高代码的可读性、可维护性和可重用性。
程序员可以将常用的功能封装成模块,并在需要时引入这些模块,从而简化程序的开发过程。
C语⾔程序设计50例(经典收藏)本篇⽂章是对C语⾔程序设计的50个⼩案例进⾏了详细的分析介绍,需要的朋友参考下【程序1】题⽬:有1、2、3、4个数字,能组成多少个互不相同且⽆重复数字的三位数?都是多少?1.程序分析:可填在百位、⼗位、个位的数字都是1、2、3、4。
组成所有的排列后再去 掉不满⾜条件的排列。
2.程序源代码:复制代码代码如下:#include "stdio.h"#include "conio.h"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) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}getch();}==============================================================【程序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.程序源代码:复制代码代码如下:#include "stdio.h"#include "conio.h"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);getch();}==============================================================【程序3】题⽬:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开⽅,再将该数加上268后再开⽅,如果开⽅后 的结果满⾜如下条件,即是结果。
c语言18个经典程序1. Hello, World! - 这是经典的C语言第一个程序,用于输出"Hello, World!"。
2. 求两个整数的和 - 用户输入两个整数,程序将计算并输出它们的和。
3. 判断一个数是奇数还是偶数 - 用户输入一个整数,程序将判断并输出该数是奇数还是偶数。
4. 求一个数的平方 - 用户输入一个数,程序将计算并输出该数的平方。
5. 求两个数的最大公约数 - 用户输入两个整数,程序将计算并输出它们的最大公约数。
6. 判断一个数是否为质数 - 用户输入一个正整数,程序将判断并输出该数是否为质数。
7. 求一个数的阶乘 - 用户输入一个正整数,程序将计算并输出该数的阶乘。
8. 生成斐波那契数列 - 用户输入一个正整数n,程序将生成并输出前n个斐波那契数。
9. 判断一个数是否为完全数 - 用户输入一个正整数,程序将判断并输出该数是否为完全数。
10. 判断一个字符串是否为回文字符串 - 用户输入一个字符串,程序将判断并输出该字符串是否为回文字符串。
11. 求一个数的倒数 - 用户输入一个非零实数,程序将计算并输出该数的倒数。
12. 求两个数的最小公倍数 - 用户输入两个正整数,程序将计算并输出它们的最小公倍数。
13. 判断一个年份是否为闰年 - 用户输入一个年份,程序将判断并输出该年份是否为闰年。
14. 生成九九乘法表 - 程序将生成并输出九九乘法表。
15. 判断一个数是否为负数、零或正数 - 用户输入一个实数,程序将判断并输出该数是负数、零还是正数。
16. 判断一个数是否为偶数的平方 - 用户输入一个整数,程序将判断并输出该数是否为偶数的平方。
17. 判断一个数是否为回文数 - 用户输入一个正整数,程序将判断并输出该数是否为回文数。
18. 判断一个字符串是否为回文句子 - 用户输入一个句子,程序将判断并输出该句子是否为回文句子。
这些经典的C语言程序涵盖了基本的输入输出、数学运算、条件判断、循环、字符串处理等方面的知识点。
C 语言经典程序一:猴子吃桃!猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾有多吃了一个,第二天早上又将剩下的桃子吃掉一半又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个第10天早上想在吃时,就只剩下一个桃子了,求第一天共摘了多少桃子?这个问题简单的解是:#include<stdio.h>int main(){int i,x=1;for(i=9;i>0;i--)x=(x+1)*2;printf("第一天共摘了%d只桃子\n",x);return 1;}运行结果:第一天共摘了1534只桃子二:兔子问题古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?!!!题中每个月的兔子总数是指兔子的对数!!(如果你想知道每个月的兔子多少只就只要乘以2就可以了)#include <stdio.h>main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++) //-----------------为什么i<=20?{ printf("%12ld %12ld",f1,f2); //---------为什么%12ld %12ldif(i%2==0) printf("\n");f1=f1+f2; //-------------------为什么?f2=f1+f2; //----------------为什么}}三:水仙花数.水仙花数的概念是:水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。
#include"stdio.h"main(){int i,j=1,k,a[10],l,p;for(i=1;i<=1000;i++){p=i;//for循环里边不能改变i的值,这里用p=i,对p操作l=0;//l赋初值j=1;while(p!=0){a[j]=p%10;p=p/10;j++;}for(k=1;k<j;k++){l=l+a[k]*a[k]*a[k];}if(l==i)printf("%d\n",i);}}四:倒计时程序1)30秒倒计时显示C语言程序#include <stdio.h>#include <windows.h>void main(){while(1){Sleep(30*1000);printf("30 Seconds is now!");//doSomething(...);}}2)输入任何日期就可以看到离奥运会还有多少天#include <stdio.h>#include <time.h>int main(void){struct tm opm29th,input;time_t inp,opm;double diff;opm29th.tm_year=2008-1900;opm29th.tm_mday =8;opm29th.tm_mon=7;opm29th.tm_hour=0;opm29th.tm_min=0;opm29th.tm_sec=0;printf("Year:\t");scanf("%d",&input.tm_year);printf("Month:\t");scanf("%d",&input.tm_mon);printf("Day of the month:\t");scanf("%d",&input.tm_mday);input.tm_year-=1900;input.tm_mon-=1;input.tm_hour=0;input.tm_min=0;input.tm_sec=0;inp=mktime(&input);opm=mktime(&opm29th);diff=difftime(opm,inp);printf("%ld Days",(long int)diff/3600/24);return 0;}五:冒泡排序法求c语言冒泡法排序十个数#include "stdio.h"void main(){int a[10],i,j,k;printf("Input ten num:\n");for(i=0;i<10;i++)scanf("%d",&a);for(j=0;j<9;j++){for(i=0;i<9-j;i++)if(a>a){ k=a;a=a;a=k;}}printf("The last num:\n");for(i=0;i<10;i++)printf("%d\n",a);}六:杨辉三角#include<stdio.h>void fun(int a[][34],int n){int i,j;for(i=0;i<n;i++)for(j=0;j<=i;j++){if(i==j)a[j]=1;else if(j==0)a[j]=1;elsea[j]=a[j-1]+a[j];}}int main(){int i,j,k,n;int a[34][34];k=1;while(scanf("%d",&n)==1) // 输入你要显示的行数,如1,2,3,4,... {fun(a,n);printf("Case %d:\n",k++);for(i=0;i<n;i++){for (j = 0; j < n - i; j ++)printf(" ");for(j=0;j<=i;j++){if(j==i)printf("%d",a[j]);elseprintf("%d ",a[j]);}printf("\n");}printf("\n");}return 0;}七:九九乘法表#include <stdio.h>main(){int i,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf(" %d×%d=%d",j,i,i*j);printf("\n");}}八:1加到100的值从1加到100,就是1+2+3+4+5+6+7+8+9……+100C程序:#include <stdio.h>main(){int i,s=0;for(i=1;i<=100;i++)s+=i;printf("1加到100的值为:%d\n",s); }。
成都理工大学工程技术学院毕业设计27//农历显示子函数voidwrite_nl(ucharadd,uchardat)//向LCD写时分秒,有显示位置加、现示数据,两个参数{uchar gw,sw;//gw=dat%10;//取得个位数字//sw=dat/10;//取得十位数字gw=dat%16;//取得个位数字sw=dat/16;//取得十位数字write_1602com(er+add);//er是头文件规定的值0x80+0x40write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码//write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码write_1602dat('0'+sw);//数字+30得到该数字的LCD1602显示码write_1602dat('0'+gw);//数字+30得到该数字的LCD1602显示码}//------------------------------------------- void write_week(uchar week)//写星期函数{write_1602com(yh+0x0c);//星期字符的显示位置switch(week){case 1:write_1602dat('M');// 星期数为1时,显示write_1602dat('O');write_1602dat('N');break;case 2:write_1602dat('T');// 星期数据为2时显示write_1602dat('U');write_1602dat('E');case 3:write_1602dat('W');// 星期数据为3时显示write_1602dat('E');write_1602dat('D');break;case 4:write_1602dat('T');// 星期数据为4是显示write_1602dat('H');write_1602dat('U');case 5:write_1602dat('F');//星期数据为5时显示成都理工大学工程技术学院毕业设计27write_1602dat('R');write_1602dat('I');break;case 6:write_1602dat('S');//星期数据为6时显示write_1602dat('T');write_1602dat('A');break;case 0:write_1602dat('S');// 星期数据为7时显示write_1602dat('U');write_1602dat('N');break;}}//****************键盘扫描有关函数********************** void keyscan(){if(seeNL_NZ==0){delay(9);if(seeNL_NZ==0){led1=0;bltime=0;if((setn==0)&&(setNZn==0))//在没有进入调时模式时才可按动{buzzer=0;//蜂鸣器短响一次delay(20);buzzer=1; if(TR1==1) {TR1=0; }else{T_NL_NZ++;if(T_NL_NZ==3){setn=0;成都理工大学工程技术学院毕业设计27setNZn=0;T_NL_NZ=0;}}}while(seeNL_NZ==0);}}if(set==0)//---------------set 为功能键(设置键)--------------------{delay(9);//延时,用于消抖动if(set==0)//延时后再次确认按键按下{led1=0;bltime=0;buzzer=0;//蜂鸣器短响一次delay(20);buzzer=1;while(!set);if(T_NL_NZ==0x02)//证明是对闹钟进行设置{setNZn++;if(setNZn==4)//闹钟设定成功,退回到正常显示并开启闹钟{setNZn=0;setn=0;timerOn=1;}switch(setNZn){case 0://正常显示日期时间write_1602com(0x0c); //柚霉獗瓴簧了?write_1602com(er);//时间显示固定符号写入位置for(a=0;a<16;a++)write_1602dat(NZd[a]); //写显示时间固定符号,两个冒号write_sfm(8,nz_shi); // 闹钟时write_sfm(11,nz_fen);//闹钟分成都理工大学工程技术学院毕业设计27write_sfm(14,nz_miao);//闹钟秒break;case 1://闹钟秒光标闪烁write_1602com(er+15); //设置按键按动一次,秒位置显示光标//er+0x09;write_1602com(0x0f); // 设置光标为闪烁break;case 2://闹钟分光标闪烁write_1602com(er+12); //设置按键按动一次,秒位置显示光标//er+0x09;write_1602com(0x0f); // 设置光标为闪烁break;case 3://闹钟时光标闪烁write_1602com(er+9); //设置按键按动一次,秒位置显示光标//er+0x09;write_1602com(0x0f); //设置光标为闪烁break;}}else//证明是对时间及日期进行设置{if(T_NL_NZ==0){setn++;if(setn==7) setn=0;//设置按键共有秒、分、时、星期、日、月、年、返回,8个功能循环switch(setn){case 1: TR0=0;//关闭定时器//TR1=0;write_1602com(er+7);//设置按键按动一次,秒位置显示光标//er+0x09;write_1602com(0x0f);//设置光标为闪烁temp=(miao)/10*16+(miao)%10;//秒数据写入DS1302write_1302(0x8e,0x00);write_1302(0x80,0x80|temp);//miaowrite_1302(0x8e,0x80);break;case 2:write_1602com(er+4);//按2次fen位置显示光标//er+0x06//write_1602com(0x0f);break;case 3:write_1602com(er+1); //按动3次,shi//write_1602com(0x0f);break;//case 4: write_1602com(yh+0x0e);//按动4次,week//write_1602com(0x0f);//break;case 4: write_1602com(yh+0x0a);//按动4次,ri//write_1602com(0x0f);break;case 5: write_1602com(yh+0x07);//按动5次,yue//write_1602com(0x0f);break;case 6: write_1602com(yh+0x04);//按动6次,nian//write_1602com(0x0f);break;case 0:write_1602com(0x0c);//按动到第7次,设置光标不闪烁TR0=1;//打开定时器temp=(miao)/10*16+(miao)%10;write_1302(0x8e,0x00);write_1302(0x80,0x00|temp);//miao数据写入DS1302write_1302(0x8e,0x80);break;}}}}}//------------------------------加键add----------------------------if((setn!=0)&&(setNZn==0))//当set按下以下。
再按以下键才有效(按键次数不等于零){if(add==0) //上调键{delay(10);if(add==0){led1=0;bltime=0;成都理工大学工程技术学院毕业设计27ds1302_init(); //调用DS1302时钟的初始化子函数init(); //调用定时计数器的设置子函数led=1; //打开LCD的背光电源buzzer=0;//蜂鸣器长响一次delay(80);buzzer=1;while(1) //无限循环下面的语句:{keyscan(); //调用键盘扫描子函数led=led1;if(timerOn==1)alarm();//闹钟输出if((fen==0)&&(miao==0)) {if(shi>12)temp_hour=shi-12;else{if(shi==0)temp_hour=12; elsetemp_hour=shi;}shangyimiao=miao; baoshi=1;}if(baoshi==1){ZD_baoshi();dokeyscan();while(shangyimiao==miao); shangyimiao=miao;}}}void timer0() interrupt 1 // 取得并显示日历和时间{//Init_DS18B20();//温度传感器DS18b2初始化子函数,在头文件中// flag=ReadTemperature();//将18b2头文件运行返回的函数结果送到变量FLAG中,用于显示成都理工大学工程技术学院毕业设计27//读取秒时分周日月年七个数据(DS1302的读寄存器与写寄存器不一样):miao = BCD_Decimal(read_1302(0x81)); fen = BCD_Decimal(read_1302(0x83));shi = BCD_Decimal(read_1302(0x85));ri = BCD_Decimal(read_1302(0x87));yue = BCD_Decimal(read_1302(0x89));nian=BCD_Decimal(read_1302(0x8d));//week=BCD_Decimal(read_1302(0x8b)); // 不读取,直接通过日期计算得到if((led1==0)){if(temp_miao!=miao) {temp_miao=miao; bltime++;}if(bltime==10){led1=1;bltime=0;}}if(T_NL_NZ==1)//显示农历{uint nian_temp,temp;temp=nian;nian_temp=2000+(temp&0xF0)*10+temp&0x0F;if((nian_temp%400==0)||((nian_temp%100!=0)&&(nian_temp%4==0))) // 判断是否为闰年p_r=1;elsep_r=0;Conversion(0,nian,yue,ri);write_1602com(er);//时间显示固定符号写入位置?for(a=0;a<16;a++){if(p_r==0)write_1602dat(nlp[a]);//写显示时间固定符号,两个冒号elsewrite_1602dat(nlr[a]);成都理工大学工程技术学院毕业设计27}write_nl(3,year_moon);//农历年write_nl(6,month_moon);//农历月write_nl(9,day_moon);//农历日dokeyscan();while(T_NL_NZ==1);write_1602com(er);//时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a<16;a++){write_1602dat(qk[a]);//写显示时间固定符号,两个冒号}write_1602com(er);//时间显示固定符号写入位置,从第个位置后开始显示for(a=0;a<8;a++){write_1602dat(tab2[a]);//写显示时间固定符号,两个冒号}}if(T_NL_NZ==2)//显示闹钟时间,{write_1602com(er);//时间显示固定符号写入位置?for(a=0;a<16;a++)write_1602dat(NZd[a]);//写显示时间固定符号,两个冒号write_sfm(8,nz_shi);//农历年write_sfm(11,nz_fen);//农历月write_sfm(14,nz_miao);//农历日dokeyscan();while(T_NL_NZ==2);write_1602com(er);//时间显示固定符号写入位置,从第个位置后开始显示for(a=0;a<16;a++){write_1602dat(qk[a]);//写显示时间固定符号,两个冒号成都理工大学工程技术学院毕业设计27}write_1602com(er);//时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a<8;a++){write_1602dat(tab2[a]);//写显示时间固定符号,两个冒号}}else{//显示温度、秒、时、分数据:if(wd){flag=ReadTemperature()-5;write_temp(10,flag);//显示温度,从第二行第12个字符后开始显示}elsewrite_1602com(er+12);for(a=0;a<4;a++){write_1602dat(tm[a]);}}write_sfm(6,miao);//秒,从第二行第8个字后开始显示(调用时分秒显示子函数)write_sfm(3,fen);//分,从第二行第5个字符后开始显示write_sfm(0,shi);//小时,从第二行第个字符后开始显示}//显示日、月、年数据:write_nyr(9,ri);//日期,从第二行第9个字符后开始显示write_nyr(6,yue);//月份,从第二行第6个字符后开始显示 write_nyr(3,nian);//年,从第二行第3个字符后开始显示 Conver_week(nian,yue,ri);write_week(week);}unsigned char count1;void timer1() interrupt 3 //取得并显示日历和时间{ TH1=0x3C; TL1=0xB0; TR1=1; count1++;if(count1==10) {count1=0;buzzer=!buzzer; }}。