收藏 分销(赏)

C语言代码大全.pdf

上传人:快乐****生活 文档编号:2492824 上传时间:2024-05-30 格式:PDF 页数:74 大小:213.60KB
下载 相关 举报
C语言代码大全.pdf_第1页
第1页 / 共74页
C语言代码大全.pdf_第2页
第2页 / 共74页
点击查看更多>>
资源描述
-摘自 宋鲁生 程序设计大赛乘法口诀表#include#include void main(void)int i,j,x,y;clrscr();printf(nn*乘法口诀表*nn);x=9;y=5;for(i=1;i=9;i+)gotoxy(x,y);printf(%2d,i);x+=3;x=7;y=6;for(i=1;i=9;i+)gotoxy(x,y);printf(%2d,i);y+;x=9;y=6;for(i=1;i=9;i+)for(j=1;j=9;j+)gotoxy(x,y);printf(%2d,i*j);y+;y-=9;x+=3;printf(nn);用一维数组统计学生成绩#include void main()char SelectKey,CreditMoney,DebitMoney;while(1)doclrscr();puts(=);puts(|Please select key:|);puts(|1.Quary|);puts(|2.Credit|);puts(|3.Debit|);puts(|4.Return|);puts(=);SelectKey=getch();while(SelectKey!=1&SelectKey!=2&SelectKey!=3&SelectKey!=4);switch(SelectKey)case 1:clrscr();puts(=);puts(|Your balance is$1000.|);puts(|Press any key to return.|);puts(=);getch();break;case 2:doclrscr();puts(=);puts(|Please select Credit money:|);puts(|1.$50|);puts(|2.$100|);puts(|3.Return|);puts(=);CreditMoney=getch();while(CreditMoney!=1&CreditMoney!=2&CreditMoney!=3);switch(CreditMoney)case 1:clrscr();puts(=);puts(|Your Credit money is$50,Thank you!|);puts(|Press any key to return.|);puts(=);getch();break;case 2:clrscr();puts(=);puts(|Your Credit money is$100,Thank you!|);puts(|Press any key to return.|);puts(=);getch();break;case 3:break;break;case 3:doclrscr();puts(=);puts(|Please select Debit money:|);puts(|1.$50|);puts(|2.$100|);puts(|3.$500|);puts(|4.$1000|);puts(|5.Return|);puts(=);DebitMoney=getch();while(DebitMoney!=1&DebitMoney!=2&DebitMoney!=3&DebitMoney!=4&DebitMoney!=5);switch(DebitMoney)case 1:clrscr();puts(=);puts(|Your Debit money is$50,Thank you!|);puts(|Press any key to return.|);puts(=);getch();break;case 2:clrscr();puts(=);puts(|Your Debit money is$100,Thank you!|);puts(|Press any key to return.|);puts(=);getch();break;case 3:clrscr();puts(=);puts(|Your Debit money is$500,Thank you!|);puts(|Press any key to return.|);puts(=);getch();break;case 4:clrscr();puts(=);puts(|Your Debit money is$1000,Thank you!|);puts(|Press any key to return.|);puts(=);getch();break;case 5:break;break;case 4:clrscr();puts(=);puts(|Thank you for your using!|);puts(|Good bye!|);puts(=);return;模拟 ATM(自动柜员机)界面#include void main()int Password=0,Number=0,price=58,i=0;while(Password!=1234)if(i=3)return;i+;puts(Please input Password:);scanf(%d,&Password);i=0;while(Number!=price)doputs(Please input a number between 1 and 100:);scanf(%d,&Number);printf(Your input number is%dn,Number);while(!(Number=1&Number=90)printf(Too Bigger!Press any key to try again!n);else if(Number=70&Number=1&Number 30&Number=50)printf(Small!Press any key to try again!n);elseif(Number=price)printf(OK!You are right!Bye Bye!n);else if(Number price)printf(Sorry,Only a little bigger!Press any key to try again!n);getch();用二维数组实现矩阵转置/*用二维数组实现矩阵的转置*/#include#define ROW 3#define COL 4main()int matrixAROWCOL,matrixBCOLROW;int i,j;clrscr();printf(Enter elements of the matrixA,);printf(%d*%d:n,ROW,COL);for(i=0;iROW;i+)for(j=0;jCOL;j+)scanf(%d,&matrixAij);for(i=0;iROW;i+)for(j=0;jCOL;j+)matrixBji=matrixAij;printf(MatrixB,);printf(%d*%d:n,COL,ROW);for(i=0;iCOL;i+)for(j=0;jROW;j+)printf(%8d,matrixBij);printf(n);printf(n Press Any Key to Quit.n);getch();求解二维数组的最大/最小元素#define MAXN 20int aMAXNMAXN;main()int min,/*存储最小值*/max;/*存储最大值*/int row,col,n;clrscr();printf(Please input the order of the matrix:n);/*输入方阵的阶次*/scanf(%d,&n);printf(Please input the elements of the matrix,n from a00 to a%d%d:n,n-1,n-1);for(row=0;rown;row+)for(col=0;coln;col+)scanf(%d,&arowcol);for(min=a00,row=0;rown;row+)/*从每行选出最大数*/for(max=arow0,col=1;coln;col+)/*从 row 行选出最大数*/if(maxmax)/*保存至 row 行的最小数*/min=max;printf(The minimum of maximum number is%dn,min);for(max=a00,row=0;rown;row+)/*每行选出最小数*/for(min=arow0,col=1;colarowcol)min=arowcol;if(maxmin)/*保存至 row 行的最大数*/max=min;printf(The maximum of minimum numbers is%dn,max);printf(nPress any key to quit.n);getch();利用数组求前 n 个质数#define N 50main()int primesN;int pc,m,k;clrscr();printf(n The first%d prime numbers are:n,N);primes0=2;/*2 是第一个质数*/pc=1;/*已有第一个质数*/m=3;/*被测试的数从 3 开始*/while(pcN)/*调整 m 使它为下一个质数*/k=0;while(primesk*primesk=m)if(m%primesk=0)/*m 是合数*/m+=2;/*让 m 取下一个奇数*/k=1;/*不必用 primes0=2 去测试 m,所以 k 从一开始*/elsek+;/*继续用下一个质数去测试*/primespc+=m;m+=2;/*除 2 外,其余质数均是奇数*/*输出 primes0至 primespc-1*/for(k=0;kpc;k+)printf(%4d,primesk);printf(nn Press any key to quit.n);getch();编制万年历#include stdio.hlong int f(int year,int month)/*f(年,月)年1,如月3;否则,f(年,月)年*/if(month3)return year-1;else return year;long int g(int month)/*g(月)月13,如月3;否则,g(月)月1*/if(month3)return month+13;else return month+1;long int n(int year,int month,int day)/*N=1461*f(年、月)/4+153*g(月)/5+日*/return 1461L*f(year,month)/4+153L*g(month)/5+day;int w(int year,int month,int day)/*w=(N-621049)%7(0=w7)*/return(int)(n(year,month,day)%7-621049L%7+7)%7);int date1267;int day_tbl 12=31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31;main()int sw,leap,i,j,k,wd,day;int year;/*年*/char title=SUN MON TUE WED THU FRI SAT;clrscr();printf(Please input the year whose calendar you want to know:);/*输入年*/scanf(%d%*c,&year);/*输入年份值和掠过值后的回车*/sw=w(year,1,1);leap=year%4=0&year%100|year%400=0;/*判闰年*/for(i=0;i12;i+)for(j=0;j6;j+)for(k=0;k7;k+)dateijk=0;/*日期表置 0*/for(i=0;i12;i+)/*一年十二个月*/for(wd=0,day=1;day=day_tblleapi;day+)/*将第 i1 月的日期填入日期表*/dateiwdsw=day;sw=+sw%7;/*每星期七天,以 0 至 6 计数*/if(sw=0)wd+;/*日期表每七天一行,星期天开始新的一行*/printf(n|=The Calendar of Year%d=|n|,year);for(i=0;i6;i+)/*先测算第 i+1 月和第 i+7 月的最大星期数*/for(wd=0,k=0;k7;k+)/*日期表的第六行有日期,则 wd!=0*/wd+=datei5k+datei+65k;wd=wd?6:5;printf(%2d%s%2d%s|n|,i+1,title,i+7,title);for(j=0;jwd;j+)printf();/*输出四个空白符*/*左栏为第 i+1 月,右栏为第 i+7 月*/for(k=0;k7;k+)if(dateijk)printf(%4d,dateijk);else printf();printf();/*输出十个空白符*/for(k=0;k7;k+)if(datei+6jk)printf(%4d,datei+6jk);else printf();printf(|n|);/*scanf(%*c);/*键入回车输出下一个月的日历*/puts(=|);puts(n Press any key to quit.);getch();对数组元素排序rest(int a,int n)int i,low,high,t;for(i=0,low=0,high=n-1;i0)/*ai与 ahigh交换,随之 high 减 1*/t=ai;ai=ahigh;ahigh=t;high-;else if(ai=0)i+;/*掠过该元素*/else/*ai与 alow交换,随之 low 增 1,i 增 1*/t=ai;ai=alow;alow=t;low+;i+;int s=8,4,0,-1,6,0,-5;main()int i;clrscr();printf(n The arry before rest is:n);for(i=0;isizeof(s)/sizeof(s0);i+)printf(%4d,si);rest(s,sizeof(s)/sizeof(s0);printf(n The arry after rest is:n);for(i=0;isizeof(s)/sizeof(s0);i+)printf(%4d,si);printf(n Press any key to quit.n);getch();任意进制数的转换/*函数 trans 将无符号整数 n 翻译成 d(2d16)进制表示的字符串 s*/#define M sizeof(unsigned int)*8int trans(unsigned n,int d,char s)static char digits=0123456789ABCDEF;/*十六进制数字的字符*/char bufM+1;int j,i=M;if(d16)s0=0;/*不合理的进制,置 s 为空字符串*/return 0;/*不合理的进制,函数返回 0*/bufi=0;dobuf-i=digitsn%d;/*译出最低位,对应字符存入对应工作数组中*/n/=d;while(n);/*将译出在工作数组中的字符串复制到 s*/for(j=0;(sj=bufi)!=0;j+,i+);/*其中控制条件可简写成 sj=bufi*/return j;/*主函数用于测试函数 trans()*/main()unsigned int num=253;int scale=2,3,10,16,1;char str33;int i;clrscr();for(i=0;i(%d)Error!n,num,scalei);printf(n Press any key to quit.n);getch();判断回文数/*函数 circle 用于判断正整数 n 的 d 进制数表示形式是否是回文数*/int circle(int n,int d)int s=0,m=n;while(m)s=s*d+m%d;m/=d;return s=n;/*main 函数用于测试 circle 函数*/int num=232,27,851;int scale=2,10,16;main()int i,j;clrscr();for(i=0;isizeof(num)/sizeof(num0);i+)for(j=0;j(%d)is a Circle Number!n,numi,scalej);elseprintf(%d-(%d)is not a Circle Number!n,numi,scalej);printf(n Press any key to quit.n);getch();求解钢材切割的最佳订单#include#define N 20#define DELTA 2int bestlen;int bestseleN;int seleN;int n;int orderlenN;int total;main()int i;clrscr();printf(n Please enter total length of the steel:n);/*输入钢材总长*/scanf(%d,&total);printf(n Please enter number of order:n);/*输入定单数*/scanf(%d,&n);printf(n Please enter the orders:n);/*输入各定单*/for(i=0;in;i+)scanf(%d,&orderleni);bestlen=0;/*最佳解用料的初值*/for(i=0;in;i+)selei=bestselei=0;/*置当前选择和最佳选择初值*/try();/*调用函数求解*/for(i=0;in;i+)/*输出结果*/if(bestselei)printf(order%d length=%dn,i+1,orderleni);printf(n Press any key to quit.);getch();try()int i,len;for(len=i=0;in;i+)/*求当前选中的用料量*/if(selei)len+=orderleni+DELTA;if(len-DELTA=total)/*注意最后一段可能不需要切割*/if(bestlen len)/*找到一个更好的解*/bestlen=len;for(i=0;in;i+)bestselei=selei;for(i=0;i*yp)/*通过指向变量的指针引用变量的值*/t=*xp;/*通过指向变量的指针引用变量的值*/*xp=*yp;/*通过指向变量 x 的指针 xp,引用变量 x 的值*/*yp=t;/*通过指向变量 y 的指针 yp,引用变量 y 的值*/if(*xp*zp)/*通过指向变量的指针,引用变量的值*/t=*xp;/*通过指向变量 x 的指针 xp,引用变量 x 的值*/*xp=*zp;/*通过指向变量 x 的指针 xp,引用变量 x 的值*/*zp=t;/*通过指向变量 z 的指针 zp,引用变量 z 的值*/if(*yp*zp)/*通过指向变量的指针,引用变量的值*/t=*yp;/*通过指向变量的指针,引用变量的值*/*yp=*zp;/*通过指向变量 y 的指针 yp,引用变量 y 的值*/*zp=t;/*通过指向变量 z 的指针 zp,引用变量 z 的值*/printf(x=%dty=%dtz=%dn,x,y,z);printf(nPress any key to quit.n);getch();阿拉伯数字转换为罗马数字#include#define ROWS 4#define COLS 4int numsROWSCOLS=1000,1000,1000,1000,900,500,400,100,90,50,40,10,9,5,4,1;char*romsROWSCOLS=m,m,m,m,cm,d,cd,c,xc,l,xl,x,ix,v,iv,i;main(int argc,char*argv)int low,high;char roman25;if(argc2)/*带两个参数*/high=atoi(argv2);checknum(high);if(lowhigh)low=high;high=atoi(argv1);elselow=1;for(;low=high;low+)to_roman(low,roman);printf(%dt%sn,low,roman);checknum(int val)/*检查参数合理性*/if(val9999)printf(The number must be in range 1.9999.n);exit(0);to_roman(int decimal,char roman)/*将整数转换成罗马数字表示*/int power,index;roman0=0;for(power=0;powerROWS;power+)for(index=0;index=numspowerindex)strcat(roman,romspowerindex);decimal-=numspowerindex;通讯录的输入输出#include#define ZIPLEN 10#define PHONLEN 15/*struct addr 类型定义*/struct addrchar*name;/*姓名*/char*address;/*地址*/char zipZIPLEN;/*邮政编码*/char phonePHONLEN;/*电话号码*/;main()/*本主函数示意上述输入输出函数的用法*/struct addr p100;int i,j;clrscr();for(i=0;readaddr(p+i);i+);for(j=0;jname=(char*)malloc(len+1);/*申请存贮姓名的空间*/strcpy(dpt-name,buf);else return 0;/*Ctrl+Z 结束输入*/printf(Please input the Address:n);/*输入地址*/if(scanf(%s,buf)=1)len=strlen(buf);dpt-address=(char*)malloc(len+1);/*申请存贮地址的空间*/strcpy(dpt-address,buf);else/*Ctrl+Z 结束输入*/free(dpt-name);/*释放存贮姓名的空间*/return 0;printf(Please input the Zip code:n);/*输入邮编*/if(scanf(%s,buf)=1)strncpy(dpt-zip,buf,ZIPLEN-1);elsefree(dpt-name);/*释放存贮姓名的空间*/free(dpt-address);/*释放存贮地址的空间*/return 0;/*Ctrl+Z 结束输入*/printf(Please input the Phone number:n);/*输入电话号码*/if(scanf(%s,buf)=1)strncpy(dpt-phone,buf,PHONLEN-1);elsefree(dpt-name);free(dpt-address);return 0;/*Ctrl+Z 结束输入*/return 1;/*函数 writeaddr 用于输出通讯录*/int writeaddr(struct addr*dpt)printf(Name:%sn,dpt-name);/*输出姓名*/printf(Address:%sn,dpt-address);/*输出地址*/printf(Zip:%sn,dpt-zip);/*输出邮编*/printf(Phone:%snn,dpt-phone);/*输出电话号码*/扑克牌的结构表示enum suitsCLUBS,DIAMONDS,HEARTS,SPADES;struct cardenum suits suit;char value3;struct card deck52;char cardval3=A,2,3,4,5,6,7,8,9,10,J,Q,K;char suitsname9=CLUBS,DIAMONDS,HEARTS,SPADES;main()int i,j;enum suits s;clrscr();for(i=0;i=12;i+)for(s=CLUBS;s=SPADES;s+)j=i*4+s;deckj.suit=s;strcpy(deckj.value,cardvali);for(j=0;j52;j+)printf(%s%3s)%c,suitsnamedeckj.suit,deckj.value,j%4=3?n:t);puts(nPress any key to quit.);getch();用“结构”统计学生成绩#include#define N 200#define SCORES 5#define NUMLEN 10struct std_typechar noNUMLEN;/*学号*/char*name;/*名字符串指针*/int scoresSCORES;/*五门功课的成绩*/;struct std_type studentsN;int orderN;int totalN;/*函数输入一个学生信息函数*/int readastu(struct std_type*spt)int len,j;char buf120;/*输入字符串的缓冲区*/printf(nNumber:);/*输入学号*/if(scanf(%s,buf)=1)strncpy(spt-no,buf,NUMLEN-1);elsereturn 0;/*Ctrl+Z 结束输入*/printf(Name:);/*输入姓名*/if(scanf(%s,buf)=1)len=strlen(buf);spt-name=(char*)malloc(len+1);/*申请存贮姓名的空间*/strcpy(spt-name,buf);else return 0;/*Ctrl+Z 结束输入*/printf(Scores:);/*输入成绩*/for(j=0;jscores+j)!=1)break;if(j=0)/*一个成绩也未输入*/free(spt-name);/*释放存贮姓名的空间*/return 0;for(;jscoresj=0;return 1;/*函数输出一个学生信息的函数*/int writeastu(struct std_type*spt)int i;printf(Number:%sn,spt-no);/*输出学号*/printf(Name:%sn,spt-name);/*输出姓名*/printf(Scores:);/*输出成绩*/for(i=0;iscoresi);printf(nn);main()int n,i,j,t;clrscr();for(n=0;readastu(students+n);n+);/*采用冒泡法对学生信息数组排序*/for(i=0;in;i+)orderi=i;/*预置第 i 个输入的学生*/for(t=0,j=0;jSCORES;j+)/*求第 i 个学生的总分*/t+=studentsi.scoresj;totali=t;/*冒泡排序*/for(i=0;in-1;i+)/*共扫视 n-1 遍*/for(j=0;jn-1-i;j+)if(totalorderjtotalorderj+1)/*交换名次*/t=orderj;orderj=orderj+1;orderj+1=t;for(j=0;jn;j+)/*输出*/writeastu(students+orderj);printf(n Press any key to quit.n);getch();报数游戏#include struct eleint no;struct ele*link;main()int n,m,i;struct ele*h,*u,*p;clrscr();printf(Please input n&m:n);scanf(%d%d,&n,&m);/*输入 n 和 m*/h=u=(struct ele*)malloc(sizeof(struct ele);/*形成首表元*/h-no=1;for(i=2;ilink=(struct ele*)malloc(sizeof(struct ele);u=u-link;u-no=i;/*第 i 个表元置编号 i*/u-link=h;/*末表元后继首表元,形成环*/puts(nThe numbers of who will quit the cycle in turn are:);while(n)for(i=1;ilink;p=u-link;/*p 指向第 m 个表元*/u-link=p-link;/*第 m 个表元从环中脱钩*/printf(%4d,p-no);free(p);/*释放第 m 个表元占用的空间*/n-;printf(nn Press any key to quit.n);getch();学生成绩管理程序/*学生成绩管理程序编制一个统计学生考试分数的管理程序。设学生成绩已以一个学生一个记录的形式存储在文件中,每位学生记录包含的信息有:姓名,学号和各门功课的成绩。程序具有以下几项功能:求出各门课程的总分,平均分,按姓名,按学号寻找其记录并显示,浏览全部学生成绩和按总分由高到低显示学生信息等。*/#include#define SWN 3/*课程数*/#define NAMELEN 20/*姓名最大字符数*/#define CODELEN 10/*学号最大字符数*/#define FNAMELEN 80/*文件名最大字符数*/#define BUFLEN 80/*缓冲区最大字符数*/*课程名称表*/char schoolworkSWNNAMELEN+1=Chinese,Mathematic,English;struct recordchar nameNAMELEN+1;/*姓名*/char codeCODELEN+1;/*学号*/int marksSWN;/*各课程成绩*/int total;/*总分*/stu;struct nodechar nameNAMELEN+1;/*姓名*/char codeCODELEN+1;/*学号*/int marksSWN;/*各课程成绩*/int total;/*总分*/struct node*next;/*后续表元指针*/*head;/*链表首指针*/int totalSWN;/*各课程总分*/FILE*stfpt;/*文件指针*/char stufFNAMELEN;/*文件名*/*从指定文件读入一个记录*/int readrecord(FILE*fpt,struct record*rpt)char buf;int i;if(fscanf(fpt,%s,buf)!=1)return 0;/*文件结束*/strncpy(rpt-name,buf,NAMELEN);fscanf(fpt,%s,buf);strncpy(rpt-code,buf,CODELEN);for(i=0;imarksi);for(rpt-total=0,i=0;itotal+=rpt-marksi;return 1;/*对指定文件写入一个记录*/writerecord(FILE*fpt,struct record*rpt)int i;fprintf(fpt,%sn,rpt-name);fprintf(fpt,%sn,rpt-code);for(i=0;imarksi);return;/*显示学生记录*/displaystu(struct record*rpt)int i;printf(nName:%sn,rpt-name);printf(Code:%sn,rpt-code);printf(Marks:n);for(i=0;imarksi);printf(Total:%4dn,rpt-total);/*计算各单科总分*/int totalmark(char*fname)FILE*fp;struct record s;int count,i;if(fp=fopen(fname,r)=NULL)printf(Cant open file%s.n,fname);return 0;for(i=0;iSWN;i+)totali=0;count=0;while(readrecord(fp,&s)!=0)for(i=0;itotaltotal)u=v;v=v-next;if(v=h)h=p;elseu-next=p;p-next=v;p=(struct node*)malloc(sizeof(struct node);free(p);fclose(fp);return h;/*顺序显示链表各表元*/void displaylist(struct node*h)while(h!=NULL)displaystu(struct record*)h);printf(n Press ENTER to continue.n);while(getchar()!=n);h=h-next;return;/*按学生姓名查找学生记录*/int retrievebyn(char*fname,char*key)FILE*fp;int c;struct record s;if(fp=fopen(fname,r)=NULL)printf(Cant open file%s.n,fname);return 0;c=0;while(readrecord(fp,&s)!=0)if(strcmp(s.name,key)=0)displaystu(&s);c+;fclose(fp);if(c=0)printf(The student%s is not in the file%s.n,key,fname);return 1;/*按学生学号查找学生记录*/int retrievebyc(char*fname,char*key)FILE*fp;int c;struct record s;if(fp=fopen(fname,r)=NULL)printf(Cant open file%s.n,fname);return 0;c=0;while(readrecord(fp,&s)!=0)if(strcmp(s.code,key)=0)displaystu(&s);c+;break;fclose(fp);if(c=0)printf(The student%s is not in the file%s.n,key,fname);return 1;main()int i,j,n;char c;char buf;FILE*fp;struct record s;clrscr();printf(Please input the students marks record files name:);scanf(%s,stuf);if(fp=fopen(stuf,r)=NULL)printf(The file%s doesnt exit,do you want to creat it?(Y/N),stuf);getchar();c=getchar();if(c=Y|c=y)fp=fopen(stuf,w);printf(Please input the record number you want to write to the
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服