用C语言描述的五角星完整代码

2024-04-24

用C语言描述的五角星完整代码(通用13篇)

篇1:用C语言描述的五角星完整代码

#include “stdio.h” #include #include #define LEN sizeof(struct course)struct course { int cID;char name[50];float credit;int semester;struct course *next;};

void main(){ int n=0;struct course *head=NULL;void insert(struct course **head,struct course *cou);void Print(struct course **head,int *n);void Modify(struct course **head,int *n);void Require(struct course **head);void Creat(struct course **head,int *n);void Delete(struct course **head,int *n);void Fun(struct course **head,int *n);

Fun(&head,&n);}

void insert(struct course **head,struct course *cou){ struct course *p0,*p1,*p2;p2=p1=*head;p0=cou;if(*head){

while((p0->semester>p1->semester)&&(p1->next))

{

p2=p1;

p1=p1->next;

}

if(p0->semester

semester)

{

if(*head==p1)*head=p0;

else p2->next=p0;

p0->next=p1;}

else

{

if(p0->semester==p1->semester){ while((p0->cID>p1->cID)&&(p1->next)&&(p0->semester==p1->semester))

{

} if(p0->semester!=p1->semester){

} else {

if(p0->cID<=p1->cID){

if(*head==p1)*head=p0;else p2->next=p0;p2=p1;p1=p1->next;p2->next=p0;p0->next=p1;

p0->next=p1;

}

else

{p1->next=p0;p0->next=NULL;}

}

}

else

{p1->next=p0;p0->next=NULL;}

} } else

{

*head=p0;

p0->next=NULL;} }

void Print(struct course **head,int *n){ struct course *p;p=*head;if(*head){

if(*n==1)printf(“nThis %d record is:n”,*n);

else printf(“nThese %d records are:n”,*n);

printf(“semester cID

name

creditn”);

do

{ printf(“%-10d%-10d%-18s%-12.1f n”,p->semester,p->cID,p->name,p->credit);

p=p->next;

}while(p!=NULL);} else printf(“nList null!n”);}

void Modify(struct course **head,int *n){ struct course *p,*p2;int cID;if(*head){

Print(head,n);while(1){ printf(“nPlease input the cID which you want to modify:”);

scanf(“%d”,&cID);p2=p=*head;while(p->next&&(cID!=p->cID)){

p2=p;

p=p->next;} if(cID==p->cID){

printf(“Please input the new cID(1~60):”);

scanf(“%d”,&p->cID);

while(p->cID<0||p->cID>60)

{

printf(“nError!”);

printf(“nPlease input the new cID(1~60):”);

scanf(“%d”,&p->cID);

}

printf(“Please input the new semester(1~8):”);

scanf(“%d”,&p->semester);while(p->semester<0||p->semester>8)

{

printf(“nError!”);

printf(“nPlease input the new semester(1~8):”);

scanf(“%d”,&p->semester);

}

printf(“Please input the new credit:”);

scanf(“%f”,&p->credit);

printf(“Please input the new name:”);

scanf(“%s”,p->name);

if(p==*head)*head=p->next;

else p2->next=p->next;

insert(head,p);

break;

}

else printf(“%d not been found!n”,cID);

} } else {printf(“nList null!n”);} }

void Require(struct course **head){ struct course *p;float sum=0;int sem,i=0;printf(“nPlease input the semester which is required:”);

scanf(“%d”,&sem);p=*head;while(p){

if(sem==p->semester)

{

i++;if(i==1)printf(“nsemester cID

name

creditn”);printf(“%-10d%-10d%-18s%-12.1f n”,p->semester,p->cID,p->name,p->credit);

sum=sum+p->credit;

}

p=p->next;} printf(“The sum of credit in this term is:%.1fn”,sum);}

void Creat(struct course **head,int *n){ struct course *p1;while(1){

p1=(struct course *)malloc(LEN);

printf(“Please input the cID(1~60):”);

scanf(“%d”,&p1->cID);

while(p1->cID<0||p1->cID>60)

{

printf(“nError!”);

printf(“nPlease input the cID(1~60):”);

scanf(“%d”,&p1->cID);

}

if(p1->cID==0)break;

printf(“Please input the semester(1~8):”);

scanf(“%d”,&p1->semester);

while(p1->semester<0||p1->semester>8)

{

printf(“nError!”);

printf(“nPlease input the semester(1~8):”);scanf(“%d”,&p1->semester);

}

} } printf(“Please input the credit:”);scanf(“%f”,&p1->credit);printf(“Please input the name:”);scanf(“%s”,p1->name);insert(head,p1);*n=*n+1;printf(“nYou can continue until the cID is ”0“!n”);Print(head,n);void Delete(struct course **head,int *n){

struct course *p1,*p2;int cID;Print(head,n);if(*head){ printf(“Please input the cID of the course which you want to delete:”);scanf(“%d”,&cID);p1=*head;

while(cID!=p1->cID&&p1->next!=NULL)

{

p2=p1;

p1=p1->next;

}

if(cID==p1->cID)

{

if(p1==*head)*head=p1->next;

else p2->next=p1->next;

printf(“Have delete cID:%dn”,cID);

*n=*n-1;

}

else printf(“%d not been found!n”,cID);} }

void Fun(struct course **head,int *n){ char num;

while(1)

{

system(“cls”);

puts(“**************** Main Menu ******************”);

puts(“* 1.Add Records

2.Print Records

*”);

puts(“* 3.Delete Records

4.Modify Records *”);

puts(“* 5.Require Records 6.Exit

*”);

printf(“Please input your choice: ”);

scanf(“%d”,&num);

switch(num)

{

case 1:Creat(head,n);break;

case 2:Print(head,n);break;

case 3:Delete(head,n);break;

case 4:Modify(head,n);break;

case 5:Require(head);break;case 6:exit(0);break;

default: break;

}

printf(“nPress ”Enter“ to continue!”);getchar();getchar();

} }

篇2:用C语言描述的五角星完整代码

(初级程序员 讨论版)

前言

一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性。

说明

此文挡还在完善改进中,如有不足,欢迎指正。本文档主要适用于刚刚开始接触编程的初学者。

对于具有一定工程项目开发经验的程序员,建议学习C语言程序代码编写规范—高级版。

目录 代码书写规范 2 注释书写规范 3 命名规范内容代码书写规范

1.1函数定义

每个函数的定义和说明应该从第1列开始书写。函数名(包括参数表)和函数体的花括号(“{”和“}”)应该各占一行。在函数体结尾的括号(“}”)后面应该加上注释,注释中应该包括函数名,这样比较方便进行括号配对检查,也可以清晰地看出来函数是否结束。

范例1:函数的声明

void matMyFunction(int n){ …… } /* matMyFunction*/ 1.2空格的使用

使用空格分割所有演算符号和操作数。

这条规则的例外是“->”,““.”, “()”和“[]”,这些操作符和操作数之间不空格。当需要把一个程序行的内容分成几行写时,操作符号应该放在行末,而不是下一行的开头。

1.3缩进的设置

代码书写应该遵从结构化的要求,采用缩进的格式。最小缩进量为4个空格,整个文件内部应该统一,不要混用Tab键和4个空格这两种情况,因为不同的编辑器对Tab键的处理方法不同。

1.4折行的使用

每行的长度不要超过80个字符,当程序行太长时,应该分行书写。分行时应该按照自然的逻辑关系进行,例如:不要把一个简单的逻辑判断写在两行上。

分行后的缩进应该按照程序的逻辑关系进行对齐。例如:参数表折行后,下面的行应该在参数表左括号的下方。

范例2:折行的格式dwNewShape = matAffineTransform(coords, translation,rotation);

if(((new_shape.x > left_border)&&

(new_shape.x < right_border))&&

((new_shape.y > bottom_border)&&

(new_shape.y < top_border))){

draw(new_shape);}

1.5嵌套语句(语句块)的格式

对于嵌套式的语句--即语句块(如,if、while、switch等)应该包括在花括号中。花括号的左括号应该单独占一行,并与关键字对齐。建议即使语句块中只有一条语句,也应该使用花括号包括,这样可以使程序结构更清晰,也可以避免出错。建议对比较长的块,在末尾的花括号后加上注释以表明该语言块结束。

范例3:嵌套语句格式 if(value < max){

if(value!= 0)

{

func(value);

} } } else {

error(“The value is too big.”);} /* if(value < max)*/ 注释书写规范

注释必须做到清晰,准确地描述内容。对于程序中复杂的部分必须有注释加以说明。注释量要适中,过多或过少都易导致阅读困难。

2.1注释风格

语言中使用一组(/* … */)作为注释界定符。注释内容尽量用英语方式表述。

注释的基本样式参考范例4。

注释应该出现在要说明的内容之前,而不应该出现在其后。

除了说明变量的用途和语言块末尾使用的注释,尽量不使用行末的注释方式。

范例4:几种注释样式

/*

* ************************************************* 强调注释

* ************************************************ */ /* * 块注释 */

/* 单行注释 */

int i;/*行末注释*/ 2.2何时需要注释

如果变量的名字不能完全说明其用途,应该使用注释加以说明。

如果为了提高性能而使某些代码变得难懂,应该使用注释加以说明。对于一个比较长的程序段落,应该加注释予以说明。如果设计文档中有流程图,则程序中对应的位置应该加注释予以说明。

如果程序中使用了某个复杂的算法,建议注明其出处。

如果在调试中发现某段落容易出现错误,应该注明。命名规范

3.1常量、变量命名

用#define定义的符号常量全部采用大写。

变量命名的基本原则:

可以选择有意义的英文(小写字母)组成变量名,使人看到该变量就能大致清 楚其含义。

不要使用人名、地名和汉语拼音。

如果使用缩写,应该使用那些约定俗成的,而不是自己编造的。

多个单词组成的变量名,每个单词的首字母应该大写。如:dwUserInputValue。

3.2函数命名

篇3:用C语言描述的五角星完整代码

一、选题

在讲解C语言第三章C程序的流程设计—算法—伪代码与逐步细化的程序设计方法这个部分时,笔者选择了百鸡百钱问题这个例子,这是我国古代数学家张丘建在《算经》中提出的问题:公鸡一只五钱,母鸡一只三钱,小鸡三只一钱,问用百钱买百只鸡,公鸡、母鸡、小鸡各能买几只?选择这个例子是因为这是一个C语言中非常典型的算法,而这个问题的复杂性超出了大脑直接思考和处理问题的能力范围,需要我们把其中的问题细化,逐步分析。用Flash把其中的过程制作成课件,并以动画的形式直接演示出来,学生会更容易接受一些。

二、分析

从整个问题来看,我们可以把问题列一个方程:公鸡数+母鸡数+小鸡数=100只;5元×公鸡数+3元×母鸡数+小鸡数÷3元=100元。显然,其解是不定的,但从实际情况分析,公鸡、母鸡和小鸡都应为整数,所以实际是求不定方程组的整数解。只有对公、母鸡、小鸡的可能只数逐一进行测试,直到全部可能只数都测试完毕为止。从问题中给出的条件,可以得出三个变量的取值范围:公鸡,0-19中的整数;母鸡,0-33中的整数;小鸡,0-100中的整数。这样,公鸡、母鸡、小鸡可能的组合方式有20×34×101=68680种,对每一种组合方式,再测试是否符合“百钱、百鸡”这两个条件,若符合则该组合就是问题的一个解。可以用循环程序设计中把复杂问题的求解过程转换为单一操作的多次重复。

三、设计

这一部分非常重要,要把课件分成具体的几部分,并对每一部分进行细化设计。具体可分为:片头—提出问题—分析问题—解决问题—片尾。片头部分:用flash制作一些效果,把本节课的课题演示出来。从提出问题到解决问题我们使用一个小故事来表现,这样可以更加吸引学生的注意力。提出问题:可以编成是老婆给老公拿百钱,让他去市场买百只鸡。到了市场,卖鸡的人告诉他公鸡五元一只、母鸡三元一只、小鸡一元三只,问他怎么买?通过两人对话把问题提出来。分析问题:在此部分中讲述老公不知道怎么买,来了一个有学问的人来帮他分析这个问题的故事,其中的分析过程,可以用公鸡、母鸡、小鸡分别爬三个有刻度的杆来解释其中的逻辑关系,每只鸡所对应杆上的刻度,就是相应的取值范围。用小鸡爬杆有趣的动作,不但可以降低了课堂内容的难度,还增加了趣味性。解决问题:在这一部分有学问的人给出了答案1:公鸡=0,母鸡=25,小鸡=75;2:公鸡=4,母鸡=18,小鸡=78;3:公鸡=8,母鸡=11,小鸡=81;4:公鸡=12,母鸡=4,小鸡=84。片尾:买鸡的人得到答案高兴地把鸡买回家去了,再用一些文字注明作者。

四、制作

1.准备制作课件所需要的素材

用画图工具画出故事中需要的人和物,如古代的两个人(一男一女,老公和老婆)、卖鸡的人、有学问的人、公鸡、母鸡和小鸡,把其中的人和物制作成元件,以方便在Flash中多次使用。还可以上网下载一些图片、背景音乐等。

2.分场景

根据前面的设计,在Flash中设置五个场景,在每个场景中制作相关的内容,在其中可以综合运用Flash中的形状补间动画、动作补间动画、引导动画、遮罩动画等。

3.设置按钮

在每个场景上制作向上、向下和返回主页的按钮,并在每个按钮上编写相应的程序,使按钮具有相应的功能。在分析问题的场景中,要制作一个“重播”按钮,在讲解的时候让分析问题的过程可以重复播放。

4.配音乐

为篇头篇尾加上背景音乐,背景音乐要舒缓,否则会喧宾夺主;为故事中的人物配音,可以用Windows中的录音机来录制。

讲课时,应用Flash课件以图文并茂、声像并行、动静结合的表现形式大大缩短了学生的思维领域中对抽象事物理解的距离。用大屏幕的演示详细讲解一下整个过程,并且尽量把问题的提出、分析、解决等内容都编成一段小故事,在轻松愉快的气氛中,在不增加学生负担的情况下,让学生更快、更清楚地掌握课堂内容,提高学生学习的积极性,也起到了优化教学过程、提高课堂效率的作用。

篇4:用C语言描述的五角星完整代码

1955年,卡普耶卡(D.R.Kaprekar)研究了对四位数的一种变换:任给出四位数k0,用它的四个数字由大到小重新排列成一个四位数m,再减去它的反序数rev(m),得出数k1=m-rev(m),然后,继续对k1重复上述变换,得数k2.如此进行下去,卡普耶卡发现,无论k0是多大的四位数,只要四个数字不全相同,最多进行7次上述变换,就会出现四位数6174.#include

main()

{

int s,a, b, c, d;

int t=0,x;

int m,n;

printf(“请输入一个四位每位不全相同的数:”);

scanf(“%d”, &s);

a=s/1000;

b=s%1000/100;

c=s%100/10;

d=s%10;

for(x=0;;x++){

if(x==0){

if(a==b&&a==c&&a==d&&b==c&&b==d&&c==d){

printf(“输入的四位不合法!n”);break;

}

}

a=s/1000;b=s%1000/100;c=s%100/10;d=s%10;

if(a

if(b

if(c

if(a

if(b

if(a

m=a*1000+b*100+c*10+d;

n=a+b*10+c*100+d*1000;

if(m-n==6174){

printf(“s=%d-%d=%dn”, m, n, m-n);

printf(“结束!n”);break;

}else{

s=m-n;

printf(“s=%d-%d=%dn”, m, n, s);

篇5:考拉兹猜想C语言代码-九院黄伟

考拉兹猜想,又称为3n+1猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想,是由日本数学家角谷静夫发现,是指对於每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。

#include

main()

{

int n;//存储该自然数

int i;

printf(“请输入一个自然数:”);

scanf(“%d”,&n);

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

if(n==1){

printf(“第%d步:n=%dn”,i,n);break;

}else if(n%2==0){

printf(“第%d步:n=%d÷2=%dn”,i,n,n/2);

n=n/2;

}else if(n%2==1){

printf(“第%d步:n=%d×3+1=%dn”,i,n,n*3+1);

n=n*3+1;

}

}

篇6:用C语言描述的五角星完整代码

//定义最多的航班数

#define PRINT “%dtt%stt%stt星期%stt%dn ”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count

//宏定义输出格式

struct air

//定义结构体数组 { int num;

//定义航班号

char start[20];//航班起始站

char over[20];//终点站

char time[10];//飞行时间

int count;

//机票数量 }s[N];

int i,m=0;

//定义全局变量 char ii[10];

void add();//函数声明增加航班信息函数 void print();

//显示航班信息 void search();//查找航班信息 void dingpiao();//订票业务 void tuipiao();//退票 void read();//读取文件

void save();//保存文件 void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小

void main()//主函数 { int j;

chushihua();//系统初始化判断是否存在原始数据文件

printf(“

欢迎使用飞机订票系统n”);//打印出系统主界面

do {

printf(“================================== ”);

printf(“1.增加航班信息n”

“t2.浏览航班信息n”

“tt3.查找航班信息(按航班号)tt╮(╯_╰)╭n”

“ttt4.航班排序(按航班号)n”

“tttt5.订票业务n”

“to(︶︿︶)ottt6.退票业务n”

“tttttt0.退出n”);printf(“================================== ”);

printf(“请在0-6中选择以回车键结束: ”);scanf(“%d”,&j);switch(j){

case 1: add();//调用增加航班函数

break;

case 2:print();//调用显示模块

break;

case 3:search();//调用查找模块

break;

case 4:paixu();//调用排序函数

break;

case 5:dingpiao();//调用订票模块

break;

case 6:tuipiao();//调用退票模块

break;

case 0:

//退出系统

save();

printf(“谢谢使用,再见!”);

break;} }while(j!=0);//判断是否调用其他函数

}

void chushihua()//定义系统初始化函数 { if(access(“hangban.dat”,0)){

build();} else

read();} void build()//定义建立数据文件函数 { FILE *fp;//定义文件指针

if((fp=fopen(“hangban.dat”,“wb”))==NULL)//打开文件并判定是否出错

{

printf(“创建文件失败!”);//打印出错提示

getchar();

return;} printf(“请依次输入航班信息(以回车键结束):n”);

//打印提示信息

printf(“------------n”);for(i=0;i

printf(“请输入航班号: ”);

scanf(“%d”,&s[i].num);//输入航班号

printf(“请输入起始站: ”);

scanf(“%s”,s[i].start);//输入起始站

printf(“请输入终点站: ”);

scanf(“%s”,s[i].over);//输入终点站

printf(“请输入时间(星期几): ”);

scanf(“%s”,s[i].time);//输入时间

printf(“请输入机票数: ”);

scanf(“%d”,&s[i].count);//输入机票数

fwrite(&s[i],sizeof(struct air),1,fp);

m++;

printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”);

scanf(“%s”,ii);

if(strcmp(ii,“y”)!=0)

//判断是否继续添加航班信息

{

fclose(fp);

//关闭文件

return;

} } }

void read()

//定义读取文件函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“r”))==NULL){

printf(“创建文件失败!”);

getchar();

return;} i=0;while(!feof(fp)){

fread(&s[i],sizeof(struct air),1,fp);//逐块读取数据

i++;

m++;//计算存在航班数

} m--;fclose(fp);}

void save()//定义保存函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“wb”))==NULL)

{

printf(“创建文件失败!”);

getchar();

return;} for(i=0;i

//逐块保存数据

fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}

void add()//定义增加航班信息函数 { do{

printf(“请依次输入您要增加的航班信息(以回车键结束): n”);

//打印提示信息

printf(“------------n”);

printf(“请输入航班号: ”);

scanf(“%d”,&s[m].num);//读取航班号

printf(“请输入起始站: ”);

scanf(“%s”,s[m].start);//读取起始站

printf(“请输入终点站: ”);

scanf(“%s”,s[m].over);//读取终点站

printf(“请输入时间: ”);

scanf(“%s”,s[m].time);//读取时间

printf(“请输入机票数: ”);

scanf(“%d”,&s[m].count);//读取机票数

m++;

printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”);

scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判断是否继续添加 }

void output()//定义输出格式函数 { printf(“航班号tt起始站tt终点站tt时间tt机票数n”);//信息标题

for(i=0;i

printf(PRINT);//打印出信息

}

void print()//定义显示航班信息函数 { printf(“n目前我们有如下航班:n”);output();

//调用输出格式函数

printf(“n请按回车键返回上层菜单 ”);getchar();getchar();}

void search()//定义查询函数 { int n;

do {

printf(“n请输入航班号: ”);

scanf(“%d”,&n);//输入查询的航班号

for(i=0;i

{

if(s[i].num==n)//按航班号判定输出条件

{

printf(“n您所查找的航班信息为:n ”);

printf(“航班号tt起始站tt终点站tt时间tt机票数 nn”);

printf(PRINT);//显示信息

printf(“n查询完毕,按回车键继续”);

getchar();

getchar();

return;

} } printf(“n对不起,没有您需要的信息!n ”);printf(“是否重新查找?请键入y或n以回车键结束 ”);scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判定是否重新查找 }

void dingpiao()//定义订票业务函数 { int n;char a[10]=“y”;do {

search();//调用查询模块

if(!strcmp(ii,“n”))

{

printf(“对不起!没有找到您所需要的航班,所以不能订票。n”);//未查找到所需航班

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();

strcpy(ii,“n”);

break;

}

do

{

printf(“请输入您要订的机票数(以回车键结束): ”);

scanf(“%d”,&n);//输入所订机票数

if(n<=0)

//判定机票数是否出错

{

printf(“输入错误!至少需订1张机票。n”);

}

else if(s[i].count==0)//判定机票是否售完

{

printf(“对不起,你所选择的航班的机票已售完!n”);

break;

}

else if(s[i].count!=0&&s[i].count>=n)//判定机票数是否大于等于订票数

{

s[i].count=s[i].count-n;

printf(“订票成功!”);

break;

}

else if(s[i].count

{

printf(“对不起,你所选择的航班只剩 %d张机票n”, s[i].count);

printf(“是否需要重新输入机票数?请输入y或n以回车键结束: ”);//判定是否重新输入订票数

scanf(“%s”,a);

}

}while(!strcmp(a,“y”));

printf(“是否需要订其他航班的机票?请输入y或n以回车键结束: ”);

scanf(“%s”,a);}while(!strcmp(a,“y”));//判定是否继续订票 }

void tuipiao()//定义退票函数 { int n;char a[10];do {

search();//调用查询函数

if(!strcmp(ii,“n”))

{

printf(“对不起!没有找到您所需要的航班,所以不能退票。n”);

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();

strcpy(ii,“n”);

break;

}

printf(“请输入您要退的机票数目: ”);

scanf(“%d”,&n);//输入所退票数

if(n<=0)

//判定票数是否有效

printf(“输入错误!至少需退1张机票。”);

else

{

s[i].count=s[i].count+n;

printf(“退票成功!”);

}

printf(“是否继续? 请键入y或n以回车键结束: ”);//判定是否继续退票

scanf(“%s”,a);}while(!strcmp(a,“y”));//判定并跳出循环

}

void paixu()//定义排序函数 { int n;

printf(“n******************************************************************************** ”);

printf(“1.按航班号从小到大排序n”

“t2.按航班号从大到小排序n”);printf(“******************************************************************************** ”);

printf(“请在1-2中选择以回车键结束: ”);scanf(“%d”,&n);//输入排序方式

switch(n){

case 1:paixu1();//调用从小到大排序函数

break;

case 2:paixu2();//调用从大到小排序函数

break;} printf(“排序后的航班信息为:n”);output();

//显示排序后航班信息

printf(“n请按回车键返回上层菜单 ”);

getchar();

getchar();}

void paixu1()//定义从小到大排序函数 { int k,j;struct air t;for(i=0;i

{

k=i;

for(j=i+1;j

if(s[k].num>s[j].num)

k=j;

if(i!=k)

{

t=s[k];

s[k]=s[i];

s[i]=t;

} } }

void paixu2()//定义从大到小排序函数 {

} int k,j;struct air t;for(i=0;i

if(s[k].num

k=j;if(i!=k){

t=s[k];

s[k]=s[i];

篇7:用C语言描述的五角星完整代码

关键词:《孙子算经》;C语言;编程求解;学习兴趣

中图分类号:TP312

《孙子算经》是我国古代数学经典名著之一,是我国古人聪明智慧的结晶。书中包括被西方数学史上称为“中国的剩余定理”的著名数学题“物不知数”等题目。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。我们借用C语言编程可以趣味求解《孙子算经》中的这些题目,从而活跃课堂气氛,调动学生学习的积极性和主动性,使枯燥的计算机编程得变生动有趣。

1 物不知数

物不知数出自《孙子算经》,是该书卷下第26题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?答曰:‘二十三”。意思是:一个数被3除余2,被5除余3,被7除余2,求这个数。

C语言编程求解法:

如果我们利用C语言编程来求解这个问题,我们只需按逻辑思路,编写好程序,然后在装有C语言环境的计算机上运行一下,结果就出来了。

用C语言编程如下:

从结果列表中可以看出符合要求的数有无限个。其中最小的是23。

如果将程序中语句“while(m<=100)”中的“100”增大到“500”,再次运行程序可以得到符合条件的数:128、233、338、443。也就是随着m取值范围加大,给出的符合条件的数会更多。但其操用非常简单,真正起到事半功倍的作用。

2 鸡兔同笼

鸡兔同笼出自《孙子算经》,是该书卷下第31题,这道题后来传到日本就变成了“鹤龟算”。书中这样叙述了该题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”意思是:有若干只鸡、兔同在一个笼子里,如果从上面数,有35个头;如果从下面数,有94只脚。求出笼中各有几只鸡和兔?

下面我們用C语言编程求解如下:

如果我们在此程序运行过程中输入其它的头数和脚数,当输入的数值不正确,会出现提示“数据有错,不能作为鸡兔同笼问题”,当输入的数值是一组适合的数,就会马上给出新组合的兔子个数,鸡的只数。

《孙子算经》是我国古代较为普及的一本数学名著,其中许多的数学题目具有一定的代表性,并且一些趣味性的题目在后世广为流传。上面所述二个题目是《孙子算经》中的二个代表,将数学解法改用C语言编程求解,可以省去了大量的人工计算,并且运算结果更快更精确,同时也是将古人智慧和现代科技进行的融合,运用在教学上,会活跃课堂气氛,提高教学质量,还也可以让学生们在学习的过程中感受古人的聪明才智,激发学生的学习主动性、积极性和学习兴趣,使枯燥的C语言编程变得生动有趣。

参考文献:

[1]杨治明,雷亮.C语言程序设计教程[M].北京:人民邮电出版,2012(03).

[2]周二强.新编C语言程序设计教程[M].北京:清华大学出版社,2011(09).

[3]谢膺白.数据库基础与Visual FoxPro 9.0程序设计[M].西安:西安电子科技大学出版社,2008(07).

作者简介:刘顺清(1971-),男,河北唐山人,研究生,副教授,主要从事计算机软硬件教学和研究工作。

篇8:用C语言描述的五角星完整代码

1.扫描整个棋盘,分别扫描四个方向是否有5个连子,网上找了很多五子棋源码都是用此算法,这意味着每下一个棋子都要扫描一遍19×19的棋盘,复杂而且低效,代码略。

2.每下一字,从该子开始扫描其四个方向(例如:从该子的(x-4,y)坐标开始扫描横向)是否存在5个连子。此算法较为常用,而且不涉及更为复杂的数据结构。

另外,为解决扫描越界的问题,在声明棋盘棋子位置时,可声明一个(4+19+4)×(4+19+4)的棋盘,而让棋子偏移(4,4)个坐标。

算法2源代码如下:

static void IfWin(int x,int y,int color)

{

TCHAR win[20];

int a,b;

if(stone[x][y]==1)

wcscpy_s(win,_T(“黑棋胜利!”));

else

wcscpy_s(win,_T(“白棋胜利!”));

for(a=x-4;a<=x+4;a++)//判断横

if(stone[a][y]==color&&stone[a+1][y]==color&&stone[a+2][y]==color&&stone[a+3][y]==color&&stone[a+4][y]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(“”),MB_OK);return;}

for(b=y-4;b<=y+4;b++)//判断竖

if(stone[x][b]==color&&stone[x][b+1]==color&&stone[x][b+2]==color&&stone[x][b+3]==color&&stone[x][b+4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(“”),MB_OK);return;}

for(a=x-4,b=y-4;a<=x+4;a++,b++)//判断右斜

if(stone[a][b]==color&&stone[a+1][b+1]==color&&stone[a+2][b+2]==color&&stone[a+3][b+3]==color&&stone[a+4][b+4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(“”),MB_OK);return;}

for(a=x-4,b=y+4;a<=x+4;a++,b--)//判断左斜

if(stone[a][b]==color&&stone[a+1][b-1]==color&&stone[a+2][b-2]==color&&stone[a+3][b-3]==color&&stone[a+4][b-4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(“”),MB_OK);return;}

}

篇9:用C语言描述的五角星完整代码

设计购物卡管理系统,系统主要模块:(1 实现系统内制卡、发卡功能;(2 实现系统内账户及相关账户管理;(3 实现卡交易和合法性检查;(4 实现卡交易积分功能;(5 实现卡报表功能;(6 数据以文件形式存储。【提示】

制卡:指申请一张购物卡,但还没有使用。发卡:该购物卡已经启用。

实现卡交易:指从卡中消费掉一定的金额。

一、系统需求分析

根据题目要求, 由于数据要以文件形式存储, 所以应提供文件的输入、输出等操作;在程序中要实现银行卡的各项功能,应提供制卡、发卡、存 款、消费、查询账户相关信息、查询账户交易记录、查询全部信息、退出 程序等一系列操作;另外还应提供键盘式选择菜单实现功能选择。

二、系统总体设计

分析了整个系统之后,根据上面的系统需求分析,可以将这个系统的 设计分为如下七大模块:制卡、发卡、存款、消费、查询账户相关信息、查询账户交易记录、查询全部信息。

三、系统详细设计 1.主函数设计

主函数的设计比较简介,只包括一个菜单函数,主要实现菜单功能, 提供了菜单输入、模块选择、退出系统等模块的调用。其中各功能模块用 菜单方式选择。

【流程图】 1 N 2 【小结】

函数开头有“文件包含”的预处理命令,所谓“文件包含”处理是指 一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件 包含到本文件之中。C 语言提供了 #include命令用来实现“文件包含”的 操作。

在本程序中包含了一下头文件:“string.h”、“ctype.h”、“stdio.h” ,方便 调用库函数实现某些功能。

在程序设计中,只使用一些基本类型(或称简单类型的变量(如整 型、实型、字符型变量等和构造类型数据——数组,是远远不够的。有 时候需要将不同类型的数据组合成一个有机的整体,以便于引用。这些组 合在一个整体中的数据是相互联系的。

在这个程序中,定义了一个结构体数组来存放购物卡用户的各种信 息,包括账户卡号、户主姓名、账户余额、账户状态、账户积分,结构体 如下:

struct user { int num;/*账户号码 */ char name[20];/*户主名称 */ float surplus;/*账户余额 */ char state[2];/*账户状态, y :已启用, n :未启用 */ int point;/*账户积分 */ }u[100];同时在各分函数中,定义了 int、float、char 等一系列变量类型,用来 实现函数功能。

在主函数前面,要加上对各功能函数的声明,声明的作用是把函数的 4 名字、函数的类型以及形参的类型、个数和顺序通知编译系统,以便在调 用该函数时系统按此进行对照检查,例如函数名是否正确,实参与形参的 类型和个数是否一致等。

主函数比较简单,但是函数的调用很多,所以,在程序的开头就加上 了各函数的声明,如下: void c_c(;/*制卡函数模块 */ void s_u(;/*发卡函数模块 */ void in_m(;/*存款函数模块 */

void out_m(;/*取款函数模块 */ void c_i(;/*查询账户相关信息函数模块 */ void c_r(;/*查询账户交易记录函数模块 */ void check(;/*查询全部信息函数模块 */ void menu(;/*主菜单函数模块 */ void back(;/*返回函数模块 */ void check_b(;/*给用户提示已有信息 */ 实现菜单选择功能,使用的是 switch 语句,根据用户输入的菜单选项 a ,调用不同的函数实现各种功能: switch(a { case 1:c_c(;break;/*制卡模块 */ case 2:s_u(;break;/*发卡模块 */ case 3:in_m(;break;/*存款模块 */ case 4:out_m(;break;/*取款模块 */ case 5:c_i(;break;/*查询账户相关信息模块 */ case 6:c_r(;break;/*查询交易记录模块 */ case 7:check(;break;/*查看所有信息模块 */ case 8:exit(0;break;/*退出模块 */ } 2.各功能模块设计

2.1 制卡模块 【流程图】

2.2 发卡模块 【流程图】

N

2.3 存款模块 【流程图】

2.4 消费模块

【流程图】 11 12

2.5 查询账户相关信息模块

【流程图】 13 N 14

篇10:用c语言实现单纯形法的编程

用c语言实现单纯形法的编程

#include “stdio.h” #include “math.h” #include int M,N;float c[100],a[100][100],b[100],CZ[100],Dn[100],th[100],x[100];int Fn[100];int K,L,ths;float zy;int shuru();void findmm();void chang();main(){ float max_Z,sum=0,s=0;int i,j,r=0;if(!shuru()){ printf(“ERROR!!n”);return 0;} while(r0){findmm();if(ths==M){goto loop;} else chang();} else r++;} } loop: if(ths==M){printf(“n此线性规划没有有限最优解!!n”);printf(“n此线性规划最终迭代结果为:”);printf(“n Cj ”);for(j=0;jDn[K])max=i;K=max;for(i=0;i0)&&(th[i]Dn[K])K=i;for(i=0;i

篇11:用C语言描述的五角星完整代码

【关键词】组织机构代码;数据库;完整性;安全机制

组织机构代码数据的功能十分强大,我国几乎所有的机关企业事业单位以及相应的团体中的信息都在此保存,其是我国信息标准化发展的重要举措,其中使用最为广泛的是银行、法院以及人事管理等。组织机构代码数据库是信息化时代,我国的各个部门提高管理水平,使其能够更加规范的主要方法,这种方法既利于各个部门之间实现信息共享,同时也利于各个部门之间的业务联动,也正是如此,组织机构代码数据库更显重要。

1.组织机构代码数据库的完整性

组织机构中,代码数据库完整性以及安全性都是比较重要的问题,只有处理好这个问题,才能组织机构可以顺利的执行功能。而代码数据完整性只要包括两方面内容,一是指数据的正确性,二是指数据的相容性。组织机构数据库质量优劣,有很多评判标准,而代码完整性无疑是其中最重要的标准。数据库完整性需要进行时常的维护,这就需要相关人员能够对数据语义约束条件进行必要的规定,有很多内容都需要制定约束条件,比如数据关系模型、储存过程触发器等。一般而言,数据完整性约束应该具备以下条件:

首先,数据值不能有任何的失误,换言之,数据类型要准确无误,即将其划归到制定的范围之间;其次,数据存储既要满足相同数据之间的自洽关系,同时还应该满足不同表格数据所具有的关系;最后,组织机构代码数据库约束,主要包括两种类型,一是静态约束,主要是指当数据库保持在稳定状态时,所有的数据对象都应该达到约束要求,其主要涵盖了静态元组约束等,而所谓的静态元组,主要是指给机构类型、法人姓名等各个数据的列值关系;二是动态约束,其主要是指当数据库转变状态时,所要达到的要求,其主要涵盖了动态列级约束以及动态元组等。

2.组织机构代码数据的安全性

组织机构代码数据的安全性与数据库的完整性同等重要,因此重视数据库的完整性的同时,还应该注重数据的安全性。所谓代码数据库的安全性主要是指数据库在使用期间,合法有效,不会被窃取、不会被破坏,也不会被更改等,以便数据库中的数据全部都处于安全的状态。这就需要组织机构中既要做到工作环境以及人员安全,同时还应该保证操作系统以及网络系统安全性。在网络层面上,组织机构代码开始运用CA认证技术,这对保证数据库安全意义重大,但是这种技术方法,也只是针对管理系统,还需要进一步采取措施。

代码数据库的安全措施主要是分为两种,一种是授权登录,就是利用控制服务器来登录相应的账号以及密码等,此时无论是账号,还是密码都应该保留在CA证书中,待用户登录时,网络管理系统需要对其进行判断,以便核实用户是否具有访问权限。而另一种主要是指授权访问,数据库将对象访问权限划分为很多级别,针对用户的类型,数据库会应该不同的权限来进行限制,包括如下:首先,只读权限,也就是只允许用户对数据进行读取,而不能进行其他方面的操作,其次,修改权限,即允许用户修改数据;再次,插人权限,即允许用户插入数据;最后,删除权限。即允许用户删除数据。

3.代码数据库的安全机制

3.1客户机操作系统的安全性

用户使用客户机通过网络对SQL数据库服务器进行访问的时候,用户首先要获得客户机的操作系统使用权,即首先要能够录到客户机上。其安全访问。

3.2 SQLServer登录的安全性

首先确定采刚何种登录验证方式,确定登录验证方式后把WindowsNT/2000川户添加到SQLSevrer系统中。其次,决定哪些用户将执行管理SQLServer服务器系统的任务,并为这些用户分配适当的服务器角色。冉次,决定哪些用户存取代码数据库,并为这些刚户添加适当的数据库角色。最后,给适当的用户或角色授予适当的权限.以便用户能够操作相应的数据库对象。

Windows验证方式:采用Windows服务器的验证,只要可以登录到Windows的川户,就可以登录到代码SQL数据库系统;Windows与SQLServer混合验证方式:不能登录到Windows的用户,只要是SQLServer的用户就可以瞀录到代码数据库系统。

3.3数据库使用的安全性

在代码数据库中。使用权限是访问数据库的最后一道关卡。在SQL中,每一个数据库对象都为该数据库的一个用户所拥有。拥有者以数据库赋予的用户名作为标识.只有数据库拥有者才可以规范数据库对象。其他用户要访问数据库对象首先要获得拥有者的授权。拥有者可以授予数据库用户权限,主要是访问权限和管理权限:访问权限又分为语句权限和对象权限。

语句权限,即决定用户能否操作数据库的创建数据库对象,如创建表、视图、存储过程等等,或执行Createtable、Createview、Backupdatabase等语句的权限;对象权限,即对象权限决定用户对数据库对象执行的操作。它控制用户在表和视网上执行Selecte、Insert、Update、Delete等语句以及执行存储过程的功能管理权限有两种方式:一种是使SQL语句管理权限,如用Grant、Deny、Revoke语句赋予和撤销权限:另一种是使用企业管理器赋予和撤销权限。

3.4数据库对象使用的安全性

要保证数据库对象使用的安全。就要授予用戶对代码数据库巾具体对象的操作权限和对SQL语句的使用权限。对于代码数据库对象(如数据表、视图、存储过程等),普通用户都具有埘代码数据表或视网数据的读取(Select)权限,但对于插入(Insert)、更新(Update)和删除(Delete)权限则需经数据库拥有者授权。

4.结语

综上所述,可知对组织机构代码数据库数据完整性和安全机制进行概述十分重要,这不仅利于人们对组织机构代码数据库更加的了解,同时也利于各个机关企业正确的应用此种数据库。各个机关单位通过应用代码数据库,不仅达到了社会化管理的方式,同时也实现了统一监管,这对我国企事业单位发展起到了非常重要的作用,尤其为数据的应用提供了条件。 [科]

【参考文献】

[1]张劲男,王霁阳,贺佳.省级组织机构代码监控体系平台分析与设计[J].信息技术与标准化,2014(Z1).

[2]黄文平,高茂庭.Microsoft SQL Server数据完整性实现策略[J].计算机时代,2002(12).

[3]陈灿,李娜.浅析SQL SERVER 2005数据完整性技术控制与实现[J].信息与电脑(理论版),2010(03).

[4]童争雄,刘特.数据完整性检验策略的构建[J].江西科学,2004(03).

篇12:用C语言实现按钮新技术

一、按钮显示原理

按钮一般有按下和弹起两种状态,在3D studio中按钮也有这两种状态,Windows中虽然看到按钮虽是弹起的,但细心的用户不难发现,当选中按钮时,它有短暂的按下状态。实际上,它的原理很简单,其实是利用改变按钮边框的颜色引起人视觉上的错觉而达到立体效果,让人们感到屏幕上真有凸起和凹下的按钮一样,如下图:

@@T5S11500.GIF;图1@@

图1和图2给出了按钮两种状态和图示,图1为按钮弹起时的状态图,其右边及下边的边框色为黑色(0X00),而左边及上边的边框颜色置为亮白(0x0f),而图2则恰恰相反,右边及下边的边框色为亮白,左边及上边为黑色,它反映了按钮被按下的状态。

在程序应用中,设置某一按钮时,显示图1的状态,再选中这个按钮时,则显示出图2的状态,经过短暂的延时后,恢复到图1的状态,给用户的感觉是按钮被按下后又弹起。在Windows中的按钮就是这样的`,3D studio中的部分按钮当被选中时,只显示图2,这时用户可以很清晰地看到凹下的按钮。

二、程序实现

主要包括按钮结构的意义和与它有关的几个函数。

1.结构定义typedef struet Button Def{

short X1;

short Y1;

short X2;

short Y1;

} button

(X1,Y1)和(X2,Y2)分别为按钮左上角和右下角的位置坐标,用于确定按钮的位置和大小。

为了程序需要,须定义几个常用的量。

#define START-X bt→X1

#define START-Y bt→Y1

#define END-X bt→X2

#define END-Y bt→Y2

#define Grap 1(Grap为按钮边框的宽度)

#define Button White 0x0f

#define Button Black 0x00

2.函数定义

(1)void Button Define(button *bt,Short X1,Short Y,short X2,short Y2)该函数用于定义一个名为bt的按钮的大小和位置,其左上角及右下角坐标为(X1,Y1),(X2,Y2)。

START-X=X1;

START-Y=Y1;

END-X=X2;

END-Y=Y2;

(2)Void Release Button(button *bt)

该函数显示按钮弹起时的状态。

(3)Put Down Button(button *bt)该函数显示按钮按下时的状态。

下面列出了以上函数用于定义按钮,显示按钮弹起,按下状态的程序,这个程序在屏幕上显示7个按钮,按下1~7个数字后就弹起某个按钮,非常方便,需要弹起某个数字就按哪个数字,特别需要指出的是,当Gsap大一些时,每个按钮,就如同键盘上的键一样,立体感很强,有兴趣的读者可以实践操作一下,并把这种简明易懂的技术用之于工作,以提高工作效率。

button.c

#include

#include

#include

#include

#include

#include“button.h”

#define START-X bt->x1

#define START-Y bt->y1

#define END-X bt->x2

#define END-Y bt->y2

#define Grap 1

#defile ScreenBkColor 2

#define release-color 7

#define put-color 3

#define ButtonWhite 0x0f

#define ButtonBlack 0x00

#define delay 50000

#define dis 10

void ButtonDefine (button *bt.shout.short.short.short);

void ReleaseButton(button *bt);

void PutDownButton(button *bt);

void delay-time(long int);

main

{

int gdriver=DETECT.gmod

篇13:用C语言证明哥德巴赫猜想

哥德巴赫猜想:任何一个大于6的偶数都可以写成两个素数的和。#include

#include

int main(void)

{

int number,a,b;

char c;

int i,j,k,l;

int sum,m;

system(“cls”);

printf(“enter your number:”);

scanf(“%d”,&number);

for(i=2;i<=number;i++)

{

sum=1;

for(j=2;j

{

if(i%j!=0)

{

sum=sum+1;

}

}

if(sum==(i-1))

{

if((i+1)==number)

{

a=i;

b=1;

printf(“%d=%d+%dn”,number,a,b);

}

else

{

for(k=2;k<=i;k++)

{

m=1;

for(l=2;l

{

if(k%l!=0)

{

m=m+1;

} } if(m==(k-1)){if((i+k)==number&&i!=k){a=i;b=k;printf(“%d=%d+%dn”,number,a,b);

}

}

}

}

system(“pause”);

上一篇:乡关何处读书笔记下一篇:一路风景初二作文