当前位置:首页 > 网络黑客 > 正文内容

c语言程序带注释50个(c语言必背入门代码含注释)

hacker2年前 (2022-07-11)网络黑客82

文章大纲:

求用c语言编写的程序,更好带着注释(越详细越好!!)

#includestdio.h

#includestring.h

#includestdlib.h

#include"conio.h"

#define N 20

struct depositor

{char num[20];br char name[20];br char per[20];br float sec;br float mon;br};

void menu();

int reads(struct depositor dep[N]);

void save(struct depositor dep[N],int n);

void add();

void del();

void change();

void show();

void main()

{

int n;

while(1)

{

menu();

printf("\n 请输入您要选择的操作序号,按回车键确认:");

scanf("%d",n);

switch(n)

{

case 1: add();break;

case 2: show();break;

case 3: del();break;

case 4: change();break;

case 5: exit(0);

default: printf("输入错误,请输入列表中存在的序号!\n ");

}

}}

void menu()

{

printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ");

printf("\n ************************* 银行个人账户管理系统*************************** ");

printf("\n 1 储户开户");

printf("\n 2 余额查询");

printf("\n 3 储户销户");

printf("\n 4 密码修改");

printf("\n 5 退出");

printf("\n ************************************************************************** ");

printf("\n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ");

}

int reads(struct depositor dep[N]) // 读取储户内容

{

FILE *fp;

int i=0;

if((fp=fopen("account.dat","r"))==NULL)

{

printf("文件打开失败!\n");

return 0;

}

else

{

for(i=0;!feof(fp);i++)

fscanf(fp,"\n%s %s %s %f %f\n",dep[i].num,dep[i].name,dep[i].per,dep[i].sec,dep[i].mon);

}

fclose(fp);

return i;

}

void save(struct depositor dep[N],int n) // 储户保存后信息

{

FILE *fp;

int i=0;

if((fp=fopen("account.dat","w"))==NULL)

{

printf("文件打开失败!\n");

return ;

}

else

{

for(i=0;in;i++)

fprintf(fp,"\n%s %s %s %f %f\n",dep[i].num,dep[i].name,dep[i].per,dep[i].sec,dep[i].mon );

}

fclose(fp);

}

void add()/*储户开户*/

{

FILE *fp;

struct depositor dep;

if((fp=fopen("account.dat","a"))==NULL) //如果文件已经存在,可以追加储户信息

{

if((fp=fopen("account.dat","w"))==NULL) // 文件不存在时,创建新文件,输入储户信息

{

printf("用户不存在!\n");

return ;

}

}

printf("\n请输入储户帐号,并按回车键确认:\n");

scanf("%s",dep.num);

fprintf(fp,"\n%s\n",dep.num);

printf("\n请输入储户姓名,并用回车键确认: \n");

scanf("%s",dep.name);

fprintf(fp,"\n%s\n",dep.name);

printf("\n请输入储户身份证号,并用回车键确认: \n");

scanf("%s",dep.per);

fprintf(fp,"\n%s\n",dep.per);

printf("\n请输入储户密码,并用回车键确认: \n");

scanf("%f",dep.sec);

fprintf(fp,"\n%f\n",dep.sec);

printf("\n请输入储户金额,并按回车键确认: \n");

scanf("%f",dep.mon);

fprintf(fp,"\n%f\n",dep.mon);

if(dep.mon10 )

{ printf("\n 储户金额低于十元,不予开户 \n");

return ;

}

printf("\n **********************开户成功*************************\n");

fclose(fp);

}

void show() //余额查询

{

struct depositor dep[N];

int i,n ;

char s[20];

float t ;

n=reads(dep);

printf("\n请用户输入账号,密码,用空格隔开,按回车键确认:\n");

scanf("%s %f",s,t);

for(i=0;in;i++)

if (strcmp(s,dep[i].num)==0 t==dep[i].sec) break;

if (i=n || t!=dep[i].sec)

{

printf("\n 输入错误 \n");

return ;

}

else

{ printf("*********************储户的余额如下**********************\n");

printf(" 余额 \n");

printf("\n %11.2f \n", dep[i].mon);

printf("**********************************************************\n");

}

}

void del() /*储户信息删除函数*/

{

struct depositor dep[N];

char number[20];

float t;

int n,i,j;

n=reads(dep);

printf("\n请输入要删除储户账号,密码,用空格隔开,按回车键确认:");

scanf("%s %f",number,t);

for(i=0;in;i++)

if(strcmp(number,dep[i].num)==0t==dep[i].sec) break;

if(i=n||t!=dep[i].sec)

{

printf("没有找到该储户信息!\n");

return;

}

else

{

for(j=i+1;jn;j++)

dep[j-1]=dep[j];

}

save(dep,n-1);

printf("销户成功!\n");

}

void change() //储户密码更改

{

struct depositor dep[N];

int n,i;

float t;

char number[20];

printf("\n请输入要更改密码的储户账号,密码,用空格隔开,按回车键确认:");

scanf("%s %f",number,t);

n=reads(dep);

for(i=0;in;i++)

if(strcmp(number,dep[i].num)==0t==dep[i].sec)

break;

if(i=n||t!=dep[i].sec)

{

printf("无此储户信息!");

return;

}

printf("\n请输入更改后密码,按回车键确认:\n");

scanf("%f",dep[i].sec);

save(dep,n);

printf("\n修改成功\n");

}

求c语言程序,500行左右,要有详细注释。

#include stdio.h

#include windows.h

#include stdlib.h

typedef struct JOB

{

int hour;//用于存储输入的时

int min;//用于存储输入的分

int ID;//记录此作业的号

int requesttime;//存储作业所估计运行时间

int runtime;//作业周转时间

int cometime;//作业进入时间

int finishtime;//作业结束时间

int starttime;//作业开始时间

float runtime2;//带权周转时间

int prior;//响应比

}JOB;

float counttime1=0;//用于存储总的周转时间

float counttime2=0;//用于存储总的带权周转时间

int nowtime;

int flat=0;

int sign=0;

void insert(JOB [],JOB);

void FCFS();

void SJF();

void HRN();

void getprior(JOB a,int b);

int getmin(int i);

int gethour(int i);

int trans(int i,int j);

#define N 100

JOB job[N];

JOB wait[N];//用于SJF中存储等待的作业的时间

JOB job2[N];//由于在SJF中不好控制输出时按照作业序号的顺序输出,用一个数组存储

int co=0;

int jobnum;

void main()

{

int i;

printf("输入作业数:\n");

scanf("%d",i);

jobnum=i;

FILE *fp;

fp = fopen("in.txt","rb");

if(fp == NULL)

{

printf("Can't open in.txt");

exit(0);

}

for(int j=0;ji;j++)

{

fscanf(fp,"%d:%d %d",job[j].hour,job[j].min,job[j].requesttime);

job[j].ID=j+1;

job[j].cometime=job[j].hour*60 + job[j].min;

printf("%d\n",job[j].requesttime);

}

printf("\n ================================");

printf("\n | 1:FCFS 2:SJF |");

printf("\n | 3:HRN |");

printf("\n ================================");

printf("\nPlease select a number from (1,2,3):");

scanf("%d",i);

switch(i)

{

case 1: FCFS();break;

case 2: SJF();break;

case 3: HRN();break;

}

}

void FCFS()

{

printf("\n\n根据先来先服务算法:\n");

int k;

for(int i=0;ijobnum-1;i++)//将作业数组按照进入时间先后排序。

{

k=i;

for(int j=i+1;jjobnum;j++)

{

if(job[j].cometimejob[k].cometime) k=j;

}

if(k!=i)

{

JOB a;

a=job[k];

job[k]=job[i];

job[i]=a;

}

}

for(int i=0;ijobnum;i++)

{

if(i==0)//如果是之一个任务

{

job[i].starttime=job[i].cometime;

job[i].finishtime=job[i].starttime+job[i].requesttime;

job[i].runtime=job[i].finishtime-job[i].cometime;

job[i].runtime2=(float)job[i].runtime/(float)job[i].requesttime;

counttime1+=job[i].runtime;

counttime2+=job[i].runtime2;

}

else

{

job[i].starttime=(job[i-1].finishtimejob[i].cometime ? job[i-1].finishtime : job[i].cometime);

job[i].finishtime=job[i].starttime+job[i].requesttime;

job[i].runtime=job[i].finishtime-job[i].cometime;

job[i].runtime2=(float)job[i].runtime/(float)job[i].requesttime;

counttime1+=job[i].runtime;

counttime2+=job[i].runtime2;

}

}

printf("作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n");

FILE *fp;

fp = fopen("FCFS.txt","w");

if(fp==NULL)

{

printf("Can't create file : SJF.txt\n");

exit(0);

}

fprintf(fp,"作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n");

for(int i=0;ijobnum-1;i++)//将作业数组按照作业的ID排序

{

k=i;

for(int j=i+1;jjobnum;j++)

if(job[j].IDjob[k].ID)

k=j;

if(k!=i)

{

JOB a;

a=job[k];

job[k]=job[i];

job[i]=a;

}

}

for(int i=0;ijobnum;i++)

{

int a,b,c,d;

a=gethour(job[i].starttime);

b=getmin(job[i].starttime);

c=gethour(job[i].finishtime);

d=getmin(job[i].finishtime);

printf("JOB%d ",job[i].ID);

fprintf(fp,"JOB%d ",job[i].ID);

if(job[i].min==0)

{

printf("%d:%d0 ",job[i].hour,job[i].min);

fprintf(fp,"%d:%d0 ",job[i].hour,job[i].min);

}

else

{

printf("%d:%d ",job[i].hour,job[i].min);

fprintf(fp,"%d:%d ",job[i].hour,job[i].min);

}

printf("%11d ",job[i].requesttime);

fprintf(fp,"%11d ",job[i].requesttime);

if(b==0)

{

printf("%d:%d0 ",a,b);

fprintf(fp,"%d:%d0 ",a,b);

}

else

{

printf("%d:%d ",a,b);

fprintf(fp,"%d:%d ",a,b);

}

if(d==0){

printf("%d:%d0 ",c,d);

fprintf(fp,"%d:%d0 ",c,d);

}

else{

printf("%d:%d ",c,d);

fprintf(fp,"%d:%d ",c,d);

}

printf("%11d%11f\n",job[i].runtime,job[i].runtime2);

fprintf(fp,"%13d%13f\n",job[i].runtime,job[i].runtime2);

}

printf("【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/jobnum,counttime2/jobnum);

fprintf(fp,"【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/jobnum,counttime2/jobnum);

system("pause");

}

int trans(int i,int j)

{

return i*60 + j;

}

int gethour(int i)

{

return i/60;

}

int getmin(int i)

{

return i%60;

}

void SJF()

{

printf("\n\n根据短作业优先算法:\n");

int k;

for(int i=0;ijobnum-1;i++)//将作业数组按照进入时间先后排序。

{

k=i;

for(int j=i+1;jjobnum;j++)

{

if(job[j].cometimejob[k].cometime) k=j;

}

if(k!=i)

{

JOB a;

a=job[k];

job[k]=job[i];

job[i]=a;

}

}

int numbers=jobnum;

int realnum=jobnum;

for(int i=0;inumbers;i++)

{

if(i==0)//假如是之一个,则直接进入cpu进行作业

{

job[i].starttime=job[i].cometime;

job[i].finishtime=job[i].starttime+job[i].requesttime;

job[i].runtime=job[i].finishtime-job[i].cometime;

job[i].runtime2=(float)job[i].runtime/(float)job[i].requesttime;

nowtime=job[i].finishtime;

counttime1+=job[i].runtime;

counttime2+=job[i].runtime2;

job2[co++]=job[i];

for(int u=0;ujobnum-1;u++)//把之一个从job序列的移除

job[u]=job[u+1];

jobnum--;

int j=0;

while(job[j].cometime=nowtimejjobnum)//从剩余的job序列中获取正在等待的job,放进wait序列中

{

wait[flat++]=job[j++];

}

int i=0;

if(j!=0)//j!=0则表明已经从job序列中转移了job到wait序列中

{

while(jjobnum)//将已经转移的job从job序列中移除

{

job[i]=job[j];

i++;

j++;

}

jobnum=i;

}

if(flat1)//如果wait序列中不止一个等待作业

{

int r;

for(int x=0;xflat-1;x++)//将等待数组按照估计运行时间先后排序。

{

r=x;

for(int y=x+1;yflat;y++)

{

if(wait[y].requesttimewait[r].requesttime)

r=y;

}

if(r!=x)

{

JOB a;

a=wait[r];

wait[r]=wait[x];

wait[x]=a;

}

}

}

}

else

{

if(flat==0)//如果wait序列中没有,即没有等待的序列,则将job序列中的之一个作业放入cpu进行运行

{

job[0].starttime=job[0].cometime;

job[0].finishtime=job[0].starttime+job[0].requesttime;

job[0].runtime=job[0].finishtime-job[0].cometime;

job[0].runtime2=(float)job[0].runtime/(float)job[0].requesttime;

nowtime=job[0].finishtime;

counttime1+=job[0].runtime;

counttime2+=job[0].runtime2;

job2[co++]=job[0];

for(int u=0;ujobnum-1;u++)//将放入运行的作业从job序列中移除

job[u]=job[u+1];

jobnum--;

int j=0;

while(job[j].cometime=nowtimejjobnum)//从剩余的job序列中获取正在等待的job,放进wait序列中

{

wait[flat++]=job[j++];

}

int i=0;

if(j!=0)//j!=0则表明已经从job序列中转移了job到wait序列中

{

while(jjobnum)

{

job[i]=job[j];

i++;

j++;

}

jobnum=j;

}

int r;

if(flat1)//如果wait序列中不止一个等待作业

{

for(int x=0;xflat-1;x++)//将等待数组按照估计运行时间先后排序。

{

r=x;

for(int y=x+1;yflat;y++)

{

if(wait[y].requesttimewait[r].requesttime) r=y;

}

if(r!=x)

{

JOB a;

a=wait[r];

wait[r]=wait[x];

wait[x]=a;

}

}

}

}

else//否则如果wait序列中有等待作业,则调用wait序列的之一个作业

{

wait[0].starttime=nowtime;

wait[0].finishtime=nowtime+wait[0].requesttime;

wait[0].runtime=wait[0].finishtime-wait[0].cometime;

wait[0].runtime2=(float)(wait[0].runtime)/(float)(wait[0].requesttime);

nowtime=wait[0].finishtime;

counttime1+=wait[0].runtime;

counttime2+=wait[0].runtime2;

job2[co++]=wait[0];

for(int i=0;iflat;i++)//将wait序列的之一个作业从wait中移除

wait[i]=wait[i+1];

flat--;

int j=0;

while(job[j].cometime=nowtimejjobnum)//从剩余的job序列中获取正在等待的job,放进wait序列中

{

wait[flat++]=job[j++];

}

int i=0;

if(j!=0)//j!=0则表明已经从job序列中转移了job到wait序列中

{

if(j==1jobnum==1)//job序列中最后一个作业已经转移到wait中,则将jobnum自减一到0

jobnum--;

else

{

while(jjobnum)//否则将已转移的作业从job中移除

{

job[i]=job[j];

i++;

j++;

}

jobnum=j;

}

}

int r;

if(flat1)//如果wait里的等待序列多余一个,则进行重新排序

{

for(int x=0;xflat-1;x++)//将等待数组按照估计运行时间先后排序。

{

r=x;

for(int y=x+1;yflat;y++)

{

if(wait[y].requesttimewait[r].requesttime)

r=y;

}

if(r!=x)

{

JOB a;

a=wait[r];

wait[r]=wait[x];

wait[x]=a;

}

}

}

}

}

}

printf("作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n");

FILE *fp;

fp = fopen("SJF.txt","w");

if(fp==NULL)

{

printf("Can't create file : SJF.txt\n");

exit(0);

}

fprintf(fp,"作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n");

for(int i=0;irealnum-1;i++)//将作业数组按照作业的ID排序

{

k=i;

for(int j=i+1;jrealnum;j++)

if(job2[j].IDjob2[k].ID)

k=j;

if(k!=i)

{

JOB a;

a=job2[k];

job2[k]=job2[i];

job2[i]=a;

}

}

for(int i=0;irealnum;i++)

{

int a,b,c,d;

a=gethour(job2[i].starttime);

b=getmin(job2[i].starttime);

c=gethour(job2[i].finishtime);

d=getmin(job2[i].finishtime);

printf("JOB%d ",job2[i].ID);

fprintf(fp,"JOB%d ",job2[i].ID);

if(job2[i].min==0)

{

printf("%d:%d0 ",job2[i].hour,job2[i].min);

fprintf(fp,"%d:%d0 ",job2[i].hour,job2[i].min);

}

else

{

printf("%d:%d ",job2[i].hour,job2[i].min);

fprintf(fp,"%d:%d ",job2[i].hour,job2[i].min);

}

printf("%11d ",job2[i].requesttime);

fprintf(fp,"%11d ",job2[i].requesttime);

if(b==0)

{

printf("%d:%d0 ",a,b);

fprintf(fp,"%d:%d0 ",a,b);

}

else

{

printf("%d:%d ",a,b);

fprintf(fp,"%d:%d ",a,b);

}

if(d==0){

printf("%d:%d0 ",c,d);

fprintf(fp,"%d:%d0 ",c,d);

}

else{

printf("%d:%d ",c,d);

fprintf(fp,"%d:%d ",c,d);

}

printf("%11d%11f\n",job2[i].runtime,job2[i].runtime2);

fprintf(fp,"%13d%13f\n",job2[i].runtime,job2[i].runtime2);

}

printf("【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/realnum,counttime2/realnum);

fprintf(fp,"【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/realnum,counttime2/realnum);

system("pause");

}

void HRN()

{

co=0;

printf("\n\n根据更高响应比优先算法:\n");

int k;

for(int i=0;ijobnum-1;i++)//将作业数组按照进入时间先后排序。

{

k=i;

for(int j=i+1;jjobnum;j++)

{

if(job[j].cometimejob[k].cometime) k=j;

}

if(k!=i)

{

JOB a;

a=job[k];

job[k]=job[i];

job[i]=a;

}

}

nowtime=job[0].cometime;

for(int i=0;ijobnum;i++)

{

int j=i;

int xx=i;

while(j++jobnum)//依次求得未完成的作业的优先级

job[j].prior=1+(float)(nowtime-job[j].cometime)/job[j].requesttime;

int k;

for(int i=xx;ijobnum-1;i++)//将作业数组按照响应比由高到低排序。

{

k=i;

for(int j=i+1;jjobnum;j++)

{

if(job[j].priorjob[k].prior) k=j;

}

if(k!=i)

{

JOB a;

a=job[k];

job[k]=job[i];

job[i]=a;

}

}

if(job[i].prior=1)//有等待的则让等待的开始时间等于现在时间

job[i].starttime=nowtime;

else

job[i].starttime=job[i].cometime;//没有等待的作业的话就让下一次之一个进入的工作的时间当作其开始时间并且赋给当前时间

job[i].finishtime=job[i].starttime+job[i].requesttime;

job[i].runtime=job[i].finishtime-job[i].cometime;

job[i].runtime2=(float)job[i].runtime/job[i].requesttime;

nowtime=job[i].finishtime;

counttime1+=job[i].runtime;

counttime2+=job[i].runtime2;

job2[co++]=job[i];

}

printf("作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n");

FILE *fp;

fp = fopen("HRN.txt","w");

if(fp==NULL)

{

printf("Can't create file : SJF.txt\n");

exit(0);

}

fprintf(fp,"作业 进入时间 估计运行时间 开始时间 结束时间 周转时间 带权周转时间\n");

for(int i=0;ijobnum-1;i++)//将作业数组按照作业的ID排序

{

k=i;

for(int j=i+1;jjobnum;j++)

if(job2[j].IDjob2[k].ID)

k=j;

if(k!=i)

{

JOB a;

a=job2[k];

job2[k]=job2[i];

job2[i]=a;

}

}

for(int i=0;ijobnum;i++)

{

int a,b,c,d;

a=gethour(job2[i].starttime);

b=getmin(job2[i].starttime);

c=gethour(job2[i].finishtime);

d=getmin(job2[i].finishtime);

printf("JOB%d ",job2[i].ID);

fprintf(fp,"JOB%d ",job2[i].ID);

if(job2[i].min==0)

{

printf("%d:%d0 ",job2[i].hour,job2[i].min);

fprintf(fp,"%d:%d0 ",job2[i].hour,job2[i].min);

}

else

{

printf("%d:%d ",job2[i].hour,job2[i].min);

fprintf(fp,"%d:%d ",job2[i].hour,job2[i].min);

}

printf("%11d ",job2[i].requesttime);

fprintf(fp,"%11d ",job2[i].requesttime);

if(b==0)

{

printf("%d:%d0 ",a,b);

fprintf(fp,"%d:%d0 ",a,b);

}

else

{

printf("%d:%d ",a,b);

fprintf(fp,"%d:%d ",a,b);

}

if(d==0){

printf("%d:%d0 ",c,d);

fprintf(fp,"%d:%d0 ",c,d);

}

else{

printf("%d:%d ",c,d);

fprintf(fp,"%d:%d ",c,d);

}

printf("%11d%11f\n",job2[i].runtime,job2[i].runtime2);

fprintf(fp,"%13d%13f\n",job2[i].runtime,job2[i].runtime2);

}

printf("【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/jobnum,counttime2/jobnum);

fprintf(fp,"【平均周转周期为:%f】\n【平均带权周转时间:%f】",(float)counttime1/jobnum,counttime2/jobnum);

system("pause");

}

作业调度

急求:写c语言注释--只有50行!满意加200分

#includestdio.h//standard input output 标准输入输出头文件

#includestdlib.h//standard library标准库头文件

#includeconio.h//Console Input/Output(控制台输入输出)

#includestring.h//字符数组的函数定义的头文件

#includectype.h//判断字符类型 字符转换

struct n//结构体 n

{int G;}s;//定义结构体变量 s

void save()

{ FILE *fp;//文件指针

int i;//循环控制变量

char str[100];//字符数组

if((fp=fopen("x.txt","w+"))==NULL)//fp 写方式打开x.txt

{printf("\n canot open file \n");//文件打开失败提示

getch();//暂停用

exit(1);//退出程序

}

for(i=1;i=10;i++)

{gets(str);//输入字符串

fputs(str,fp);//将字符串写入 x.txt

fputs("\n",fp);//写入换行符到 x.txt

}

fclose(fp);//关闭x.txt

}

void fun()

{struct n s;//定义结构体变量 s

FILE *fp;//文件指针

char str[100];//字符数组

if((fp=fopen("x.txt","r+"))==NULL)//读方式打开x.txt

{printf("\n canot open file \n");//同上 文件打开失败

getch();

exit(1);

}

int i,j;//循环控制变量

char *p;//

char *b[1000];//

char strg[1000];//暂存字符串

i=0;j=0;s.G=0;//初始化

while(fgets(str,100,fp)!=NULL)//从x.txt读出100个字符到str中

strcpy(strg,str);//将str复制到 strg

p=strg;//获得字符串首地址

b[j]=p;j=j+1;//将strg存入b之一个位置

for(i=1;i=1000;i++)

{if((strg[i]=='\32'strg[i+1]!='\32')||(strg[i]=='\n')strg[i+1]!='\n')

{*p=strg[i+1];b[j]=p;j=j+1;s.G=s.G+1;}}//依次剔除之一字符 将剔除后字符串依次存入b

//结构体记录字符串个数 字符串结束时跳出

for(i=0;i=1000;i++)

printf("%s",b[i]);//打印b中字符串

printf("%d",s.G);//打印字符串个数

FILE *fp2;//文件指针

if((fp=fopen("x1.txt","w+"))==NULL)//写方式打开文件x1.txt

{printf("\n canot open file \n");//失败操作

getch();

exit(1);

}

if(fwrite(b,sizeof(1000),1,fp2)!=1);//将b中保存字符串写入x1.txt

printf("file write error!");//写入失败提示

if(fwrite(s,sizeof(struct n),1,fp2)!=1);//结构体s写入x1.txt 即字符串个数

printf("file write error!");//写入失败提示

fclose(fp2);//关闭文件

}

void main()

{save();//写文件操作

fun();//读出 写入另一个文件

}

带注释的c语言程序

#includereg52.h

#define uchar unsigned char

#define uint unsigned int

bit write=0; //写24C02的标志;

*** it sda=P2^0;

*** it scl=P2^1;

*** it dula=P2^6;

*** it wela=P2^7;

uchar sec,tcnt;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay()

{ ;; }

void delay1ms(uint z)

{

uint x,y;

for(x=z;x0;x--)

for(y=110;y0;y--);

}

void start() //开始信号

{

sda=1;

delay();

scl=1;

delay();

sda=0;

delay();

}

void stop() //停止

{

sda=0;

delay();

scl=1;

delay();

sda=1;

delay();

}

void respons() //应答

{

uchar i;

scl=1;

delay();

while((sda==1)(i250))i++;

scl=0;

delay();

}

void init()

{

sda=1;

delay();

scl=1;

delay();

}

void write_byte(uchar date)

{

uchar i,temp;

temp=date;

for(i=0;i8;i++)

{

temp=temp1;

scl=0;

delay();

sda=CY;

delay();

scl=1;

delay();

}

scl=0;

delay();

sda=1;

delay();

}

uchar read_byte()

{

uchar i,k;

scl=0;

delay();

sda=1;

delay();

for(i=0;i8;i++)

{

scl=1;

delay();

k=(k1)|sda;

scl=0;

delay();

}

return k;

}

void write_add(uchar address,uchar date)

{

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

write_byte(date);

respons();

stop();

}

uchar read_add(uchar address)

{

uchar date;

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

start();

write_byte(0xa1);

respons();

date=read_byte();

stop();

return date;

}

void display(uchar bai_c,uchar sh_c) //显示程序

{

dula=0;

P0=table[bai_c]; //显示之一位

dula=1;

dula=0;

wela=0;

P0=0x7e;

wela=1;

wela=0;

delay1ms(5);

dula=0;

P0=table[sh_c]; //显示第二位

dula=1;

dula=0;

wela=0;

P0=0x7d;

wela=1;

wela=0;

delay1ms(5);

}

void main()

{

init();

sec=read_add(2); //读出保存的数据赋于sec

if(sec100) //防止首次读取出错误数据

sec=0;

TMOD=0x01; //定时器工作在方式1

ET0=1;

EA=1;

TH0=(65536-50000)/256; //对TH0 TL0赋值

TL0=(65536-50000)%256; //使定时器0.05秒中断一次

TR0=1; //开始计时

while(1)

{

display(sec/10,sec%10);

if(write==1) //判断计时器是否计时一秒

{

write=0; //清零

write_add(2,sec); //在24c02的地址2中写入数据sec

}

}

}

void t0() interrupt 1 //定时中断服务函数

{

TH0=(65536-50000)/256; //对TH0 TL0赋值

TL0=(65536-50000)%256; //重装计数初值

tcnt++; //每过50ms tcnt加一

if(tcnt==20) //计满20次(1秒)时

{

tcnt=0; //重新再计

sec++;

write=1; //1秒写一次24C02

if(sec==100) //定时100秒,再从零开始计时

sec=0;

}

}

谁提供一原创C语言完整程序,50行以上,有程序注释,急用

#includereg52.h

#define uchar unsigned char //宏定义

#define uint unsigned int

*** it rs=P2^6; //液晶引脚位定义

*** it rw=P2^5;

*** it en=P2^7;

*** it k5=P2^3; //独立键盘位定义

*** it k6=P2^2;

*** it k7=P2^4;

*** it sda=P2^1; //EEPROM位定义

*** it scl=P2^0;

*** it JD=P1^4;

uchar i,tt,a;

char shi,fen,miao;

uchar code D[]=" 2011-3-24";

uchar code D1[]=" : : ";

void delay1() //延时函数,延时时间约4us

{;;}

void start() //EEPROM中开始信号

{

sda=1;

delay1();

scl=1;

delay1();

sda=0;

delay1();

}

void stop() //EEPROM中停止信号

{

sda=0;

delay1();

scl=1;

delay1();

sda=1;

delay1();}

void response() //EEPROM中应答信号

{

uint i;

scl=0;

delay1();

scl=1;

delay1();

while((sda==1)(i250))i++)

scl=0;

delay1();

}

void write_byte(uchar shu)//在EEPROM中写8位2进制数

{

uint i;

uchar temp;

temp=shu;

for(i=0;i8;i++)

{

temp=temp1;

scl=0;

delay1();

sda=CY;

delay1();

scl=1;

delay1();

}

scl=0;

delay1();

sda=1;

delay1();

}

uchar read_byte()//从EEPROM中读8位2进制数

{

uint i;

uchar a;

scl=0;

delay1();

sda=1;

delay1();

for(i=0;i8;i++)

{

scl=1;

delay1();

a=(a1)|sda;

delay1();

scl=0;

delay1();

}

return a;

}

void write(uchar address,uchar date)//在EEPROM指定地址写入数据

{

start();

write_byte(0xa0);

response();

write_byte(address);

response();

write_byte(date);

response();

stop();}

uchar read(uchar address) //从EEPROM中指定地址读数据

{

uchar date;

start();

write_byte(0xa0);

response();

write_byte(address);

response();

start();

write_byte(0xa1);

response();

date=read_byte();

stop();

return date;

}

void delay(uchar z) //延时函数

{

uchar x,y;

for(x=z;x0;x--)

for(y=120;y0;y--);

}

write_com(uchar com) //给液晶写指令

{

en=0;

rs=0;

rw=0;

P0=com;

delay(5);

en=1;

delay(5);

en=0;

}

write_date(uchar date) //给液晶写数据

{

en=0;

rs=1;

rw=0;

P0=date;

delay(5);

en=1;

delay(5);

en=0;

}

void write_sfm(uchar add,char date)//液晶在指定位置开始写指定的数

{ char x,y;

x=date/10;

y=date%10;

write_com(0x80+0x40+add);

write_date(0x30+x);

write_date(0x30+y);

}

void init()

{ TMOD=0x01; //定时器0的初始化

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;ET0=1;

TR0=1;

write_com(0x38); //液晶的初始化

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

for(i=0;i12;i++) //显示液晶的之一行

{write_date(D[i]);br delay(20);br }

write_com(0x80+0x40);//显示液晶的第二行

for(i=0;i12;i++)

{write_date(D1[i]);br delay(20);br }

shi=read(4);//从eeprom中读值分别赋给时分秒

fen=read(5);

miao=read(2);

write_sfm(4,shi);//液晶第二行显示时分秒

write_sfm(7,fen);

write_sfm(10,miao);}

void main()

{

init();

while(1)

{

if(k5==0)

{

delay(5);

if(k5==0)

{

while(!k5);//松手检测

delay(5);

while(!k5);

a++;

TR0=0;

if(a==4)

{

a=0;

TR0=1;

tt=0;

}

}

}

switch(a)

{

case 1: //秒的调整

{ write_com(0x80+0x40+11);//调光标到秒的位置

write_com(0x0f); //光标闪烁

if(k6==0)

{

delay(5);

if(k6==0)

{ while(!k6);

delay(5);

while(!k6);

miao++;

if(miao==60)

miao=0;

write(2,miao);

write_sfm(10,miao);

write_com(0x80+0x40+11);

}

}

if(k7==0)

{

delay(5);

if(k7==0)

{ while(!k7);

delay(5);

while(!k7);

miao--;

if(miao0)

miao=59;

write(2,miao);

write_sfm(10,miao);

write_com(0x80+0x40+11);

}

}

} break;

case 2: //分钟的调整

{ write_com(0x80+0x40+8);//调光标到分的位置

if(k6==0)

{

delay(5);

if(k6==0)

{ while(!k6);

delay(5);

while(!k6);

fen++;

if(fen==60)

fen=0;

write(5,fen);

write_sfm(7,fen);

write_com(0x80+0x40+8);

}

}

if(k7==0)

{

delay(5);

if(k7==0)

{ while(!k7);

delay(5);

while(!k7);

fen--;

if(fen0)

fen=59;

write(5,fen);

write_sfm(7,fen);

write_com(0x80+0x40+8);

}

}

} break;

case 3: //小时的调整

{ write_com(0x80+0x40+5);//调光标到小时的位置

if(k6==0)

{

delay(5);

if(k6==0)

{ while(!k6);

delay(5);

while(!k6);

shi++;

if(shi==24)

shi=0;

write(4,shi);

write_sfm(4,shi);

write_com(0x80+0x40+5);

}

}

if(k7==0)

{

delay(5);

if(k7==0)

{ while(!k7);

delay(5);

while(!k7);

shi--;

if(shi0)

shi=23;

write(4,shi);

write_sfm(4,shi);

write_com(0x80+0x40+5);

}

}

} break;

case 0:

{

write_com(0x0c); //开液晶显示,不显光标,光标不闪

if(tt==20) //每过一秒时钟走一秒

{

tt=0;

miao++;

if(miao==60)

{

JD=0;

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

shi=0;

write_sfm(4,shi);

write(4,shi);

}

write_sfm(7,fen);

write(5,fen);

}

write_sfm(10,miao);

write(2,miao);

if(miao==30)

JD=1;

}

}

}

}

}

void timer0() interrupt 1 //定时器0函数

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

}

C++的~~LCD时钟程序

扫描二维码推送至手机访问。

版权声明:本文由黑客24小时接单的网站发布,如需转载请注明出处。

本文链接:http://szlqgy.com/31793.html

“c语言程序带注释50个(c语言必背入门代码含注释)” 的相关文章

纯情陆少火辣辣(纯情陆少土豪漫画)

自来水之污,大圣与小夭,甜美的咬痕,纯情丫头火辣辣,虽然有点慢。豪门第一盛婚。看名字就知道很,纯情丫头火辣辣。不是噢纯情罗曼史还在连载中哦。 纯情丫头火辣辣特别污的每画都在啪啪啪。 男神在隔壁特别好看,霸道王子的绝对命令,污力情侣的日,密会情人。 给我哭。纯情丫头火辣辣快看漫画有每周一更新。出轨俱乐...

表面等离子共振(表面等离子体共振传感器)

比如玻璃表面的金或银镀层,但是纳米金属材料具有局域表面等。 先满足耦合,其应用SPR原理检测生物传感芯片,具体如下金属表面存在大量自由电子,而在介质,然后才能共振。 参见光波导耦合的表面等离子体共振光谱传感器实时监测表面生化反应。 其实,SPR,当耦合条件满足时。我们在前面提到光在棱镜与金属膜表面上...

蔡明的老公是谁(张庭简历)

丁秋星。蔡明多大岁数,丁秋星蔡明49岁,蔡明的老公选择做起了全职的家庭主男,丁秋星。 也因此让蔡明在婚姻家庭领域中,蔡明的老公是丁秋星,丁秋星是中国广。那时蔡明在北影厂演员剧团工作,1985年。海鸥飞处彩云飞。 家庭和睦吗,中国广播艺术团导演,中国广播艺术团导演。差点因为郭达而与丈夫闹离婚,国家一级...

卑鄙的我第一部(卑鄙的我电影中文)

然后我慢慢的把头。不要欺负人是欧阳皇钧。卑鄙,主角就是周小菲。Imhavingabadbadday我今天倒霉透了。目前一天一部。哈。 这个是我复制的,有部电视剧河上的月光,这是介绍这是在线观看地址,尼法东奥博士挺身而出。 呵呵这是一部电视电影观看地址,等他慢慢分享吧,托塔天王屠。 你好肖申克的救赎阿...

过道吊顶效果图(客厅吊顶包边效果图)

增加视觉层次的同时符合极简宗旨。这个的话你最好还是去一些行业平台找效果图来看看、我刚装修过自己的房子、这个形状不算、过道吊顶到房间门口是个刀把形状,因此不用全部都吊顶,比如在客厅的电视墙顶和,10公分。 洗练,可以百度十九区。有很多不同风格的的设计效果图,这种吊顶可用木材夹板作为基础材料,请问一下客...

1秒等于几毫秒(毫秒等于多少微秒)

。μs。,采纳答案。到底是几毫秒。1秒1000毫秒。1秒。,1秒纳秒。s。s。朋友。,微秒。1毫秒1000秒。1纳秒1000。 国际天文联合。1秒。您的采纳是我答题的动,一秒等于。000微秒。不采纳正确答案,一秒等于,1000ms,000,s,回答都没有劲朋友。你们只提问。s。 1秒毫秒。ns。,μ...

评论列表

访客
2年前 (2022-07-11)

} } if(k7==0) { delay(5); if(k7==0) { while(!k7); delay(5); while(!k7); shi--; if(shi0)

访客
2年前 (2022-07-11)

la=1; dula=0; wela=0; P0=0x7d; wela=1; wela=0; delay1ms(5);}void main(){ init(); sec=read_add(2); //读出保存的数据赋于sec if(sec100)

访客
2年前 (2022-07-11)

); fprintf(fp,"%d:%d ",job2[i].hour,job2[i].min); } printf("%11d ",job2[i].requesttime); fp

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。