收藏 分销(赏)

C语言代码大全.doc

上传人:快乐****生活 文档编号:10820063 上传时间:2025-06-18 格式:DOC 页数:74 大小:306.05KB 下载积分:16 金币
下载 相关 举报
C语言代码大全.doc_第1页
第1页 / 共74页
C语言代码大全.doc_第2页
第2页 / 共74页


点击查看更多>>
资源描述
------------------------------------------------------------------------摘自 宋鲁生 程序设计大赛 乘法口诀表 #include <stdio.h> #include <conio.h> void main(void) { int i,j,x,y; clrscr(); printf("\n\n * * * 乘法口诀表 * * * \n\n"); 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("\n\n"); } 用一维数组统计学生成绩 #include <stdio.h> void main() { char SelectKey,CreditMoney,DebitMoney; while(1) { do{ clrscr(); 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': do{ clrscr(); 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': do{ clrscr(); 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 <stdio.h> 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 ) { do{ puts("Please input a number between 1 and 100: "); scanf("%d",&Number); printf("Your input number is %d\n",Number); }while( !(Number>=1 && Number<=100) ); if( Number >= 90 ) { printf("Too Bigger! Press any key to try again!\n"); } else if( Number >= 70 && Number < 90 ) { printf("Bigger!\n"); } else if( Number >= 1 && Number <= 30 ) { printf("Too Small! Press any key to try again!\n"); } else if( Number > 30 && Number <= 50 ) { printf("Small! Press any key to try again!\n"); } else { if( Number == price ) { printf("OK! You are right! Bye Bye!\n"); } else if( Number < price ) { printf("Sorry,Only a little smaller! Press any key to try again!\n"); } else if( Number > price ) { printf(" Sorry, Only a little bigger! Press any key to try again!\n"); } getch(); } } 用二维数组实现矩阵转置 /* 用二维数组实现矩阵的转置 */ #include <stdio.h> #define ROW 3 #define COL 4 main() { int matrixA[ROW][COL],matrixB[COL][ROW]; int i,j; clrscr(); printf("Enter elements of the matrixA,"); printf("%d*%d:\n",ROW,COL); for( i=0; i<ROW; i++ ) { for( j=0; j<COL; j++ ) { scanf("%d",&matrixA[i][j]); } } for( i=0; i<ROW; i++ ) { for( j=0; j<COL; j++ ) { matrixB[j][i] = matrixA[i][j]; } } printf("MatrixB,"); printf("%d*%d:\n",COL,ROW); for( i=0; i<COL; i++ ) { for( j=0; j<ROW; j++ ) { printf("%8d",matrixB[i][j]); } printf("\n"); } printf("\n Press Any Key to Quit... \n"); getch(); } 求解二维数组的最大/最小元素 #define MAXN 20 int a[MAXN][MAXN]; 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 a[0][0] to a [%d][%d]:\n",n-1,n-1); for(row=0;row<n;row++) for(col=0;col<n;col++) scanf("%d",&a[row][col]); for(min=a[0][0],row=0;row<n;row++) { /* 从每行选出最大数 */ for(max=a[row][0],col=1;col<n;col++)/*从row行选出最大数 */ if(max<a[row][col]) max=a[row][col]; if(min>max)/* 保存至row行的最小数 */ min=max; } printf("The minimum of maximum number is %d\n",min); for(max=a[0][0],row=0;row<n;row++) { /* 每行选出最小数 */ for(min=a[row][0],col=1;col<n;col++)/* 从row行选出最小数 */ if(min>a[row][col]) min=a[row][col]; if(max<min)/*保存至row行的最大数 */ max=min; } printf("The maximum of minimum numbers is %d\n",max); printf("\nPress any key to quit...\n"); getch(); } 利用数组求前n个质数 #define N 50 main() { int primes[N]; int pc,m,k; clrscr(); printf("\n The first %d prime numbers are:\n",N); primes[0]=2;/*2是第一个质数*/ pc =1;/*已有第一个质数*/ m =3;/*被测试的数从3开始*/ while(pc<N) { /*调整m使它为下一个质数*/ k=0; while(primes[k]*primes[k]<=m) if(m%primes[k]==0) {/*m是合数*/ m+=2;/*让m取下一个奇数*/ k=1;/*不必用primes[0]=2去测试m,所以k从一开始*/ } else k++;/*继续用下一个质数去测试*/ primes[pc++]=m; m+=2;/*除2外,其余质数均是奇数*/ } /*输出primes[0]至primes[pc-1]*/ for(k=0;k<pc;k++) printf("%4d",primes[k]); printf("\n\n Press any key to quit...\n "); getch(); } 编制万年历 #include "stdio.h" long int f(int year,int month) {/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/ if(month<3) return year-1; else return year; } long int g(int month) {/*g(月)=月+13,如月<3;否则,g(月)=月+1*/ if(month<3) 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<=w<7)*/ return(int)((n(year,month,day)%7-621049L%7+7)%7); } int date[12][6][7]; 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;i<12;i++) for(j=0;j<6;j++) for(k=0;k<7;k++) date[i][j][k]=0;/*日期表置0*/ for(i=0;i<12;i++)/*一年十二个月*/ for(wd=0,day=1;day<=day_tbl[leap][i];day++) {/*将第i+1月的日期填入日期表*/ date[i][wd][sw]=day; sw=++sw%7;/*每星期七天,以0至6计数*/ if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/ } printf("\n|==================The Calendar of Year %d =====================|\n|",year); for(i=0;i<6;i++) {/*先测算第i+1月和第i+7月的最大星期数*/ for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/ wd+=date[i][5][k]+date[i+6][5][k]; wd=wd?6:5; printf("%2d %s %2d %s |\n|",i+1,title,i+7,title); for(j=0;j<wd;j++) { printf(" ");/*输出四个空白符*/ /*左栏为第i+1月,右栏为第i+7月*/ for(k=0;k<7;k++) if(date[i][j][k]) printf("%4d",date[i][j][k]); else printf(" "); printf(" ");/*输出十个空白符*/ for(k=0;k<7;k++) if(date[i+6][j][k]) printf("%4d",date[i+6][j][k]); 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;i<=high;) { if(a[i]>0) { /*a[i]与a[high]交换,随之high减1*/ t=a[i]; a[i]=a[high]; a[high]=t; high--; } else if(a[i]==0) i++; /* 掠过该元素 */ else { /*a[i]与a[low]交换,随之low增1, i增1*/ t=a[i]; a[i]=a[low]; a[low]=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;i<sizeof(s)/sizeof(s[0]);i++) printf("%4d",s[i]); rest(s,sizeof(s)/sizeof(s[0])); printf("\n The arry after rest is:\n"); for(i=0;i<sizeof(s)/sizeof(s[0]);i++) printf("%4d",s[i]); printf("\n Press any key to quit...\n"); getch(); } 任意进制数的转换 /* 函数trans将无符号整数n翻译成d(2<=d<=16)进制表示的字符串s */ #define M sizeof(unsigned int)*8 int trans(unsigned n, int d, char s[]) { static char digits[] ="0123456789ABCDEF"; /* 十六进制数字的字符 */ char buf[M+1]; int j, i = M; if(d<2||d>16) { s[0]='\0'; /* 不合理的进制,置s为空字符串 */ return 0; /* 不合理的进制,函数返回0 */ } buf[i]='\0'; do { buf[--i]=digits[n%d]; /*译出最低位,对应字符存入对应工作数组中*/ n/=d; }while(n); /* 将译出在工作数组中的字符串复制到s */ for(j=0;(s[j]=buf[i])!='\0';j++,i++); /* 其中控制条件可简写成s[j]=buf[i] */ return j; } /* 主函数用于测试函数 trans() */ main() { unsigned int num = 253; int scale[]={2,3,10,16,1}; char str[33]; int i; clrscr(); for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++) { if(trans(num,scale[i],str)) printf("%5d = %s(%d)\n",num,str,scale[i]); else printf("%5d => (%d) Error! \n",num,scale[i]); } 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;i<sizeof(num)/sizeof(num[0]);i++) for(j=0;j<sizeof(scale)/sizeof(scale[0]);j++) if(circle(num[i],scale[j])) printf("%d -> (%d) is a Circle Number!\n",num[i],scale[j]); else printf("%d -> (%d) is not a Circle Number!\n",num[i],scale[j]); printf("\n Press any key to quit...\n"); getch(); } 求解钢材切割的最佳订单 #include <stdio.h> #define N 20 #define DELTA 2 int bestlen; int bestsele[N]; int sele[N]; int n; int orderlen[N]; 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;i<n;i++) scanf("%d",&orderlen[i]); bestlen=0; /*最佳解用料的初值 */ for(i=0;i<n;i++) sele[i]=bestsele[i]=0; /*置当前选择和最佳选择初值 */ try(); /* 调用函数求解 */ for(i=0;i<n;i++) /* 输出结果 */ if(bestsele[i]) printf("order %d length = %d\n",i+1,orderlen[i]); printf("\n Press any key to quit..."); getch(); } try() { int i,len; for(len=i=0;i<n;i++) /* 求当前选中的用料量 */ if(sele[i]) len+=orderlen[i]+DELTA; if(len-DELTA<=total) /* 注意最后一段可能不需要切割 */ { if(bestlen < len) { /* 找到一个更好的解 */ bestlen = len; for(i=0;i<n;i++) bestsele[i]=sele[i]; } for(i=0;i<n;i++) /* 对所有未选定单逐一作选中尝试循环 */ if(!sele[i]) { sele[i]=1; /* 做选中尝试*/ try(); sele[i]=0; } } } 指向数组的指针 main() { int x,y,z; /* 定义三个int型变量 */ int *xp = &x, /* 定义指针变量xp,并赋值为x的地址,使xp指向x */ *yp = &y, /* 定义指针变量yp,并赋值为y的地址,使yp指向y */ *zp = &z; /* 定义指针变量zp,并赋值为z的地址,使zp指向z */ int t; clrscr(); printf("\nPlease input x,y,z:\n"); scanf("%d%d%d",xp,yp,zp); /* 通过变量的指针,为变量输入值 */ if(*xp>*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 = %d\ty = %d\tz = %d\n",x,y,z); printf("\nPress any key to quit...\n"); getch(); } 阿拉伯数字转换为罗马数字 #include <stdio.h> #define ROWS 4 #define COLS 4 int nums[ROWS][COLS]={{1000,1000,1000,1000}, {900,500,400,100}, {90,50,40,10}, {9,5,4,1}}; char *roms[ROWS][COLS]={{"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 roman[25]; if(argc<2) { printf("Usage:roman decimal_number\n");/*运行程序需带整数参数*/ exit(0); } high=low=atoi(argv[1]);/*将第一个参数转换成整数*/ checknum(low); if(argc>2) {/*带两个参数*/ high=atoi(argv[2]); checknum(high); if(low>high) { low=high; high=atoi(argv[1]); } } else low=1; for(;low<=high;low++) { to_roman(low,roman); printf("%d\t%s\n",low,roman); } } checknum(int val)/*检查参数合理性*/ { if(val<1||val>9999) { printf("The number must be in range 1..9999.\n"); exit(0); } } to_roman(int decimal,char roman[ ])/*将整数转换成罗马数字表示*/ { int power,index; roman[0]='\0'; for(power=0;power<ROWS;power++) for(index=0;index<COLS;index++) while(decimal>=nums[power][index]) { strcat(roman,roms[power][index]); decimal-=nums[power][index]; } } 通讯录的输入输出 #include <stdio.h> #define ZIPLEN 10 #define PHONLEN 15 /*struct addr类型定义*/ struct addr { char *name;/*姓名*/ char *address;/*地址*/ char zip[ZIPLEN];/*邮政编码*/ char phone[PHONLEN];/*电话号码*/ }; main()/*本主函数示意上述输入输出函数的用法*/ { struct addr p[100]; int i,j; clrscr(); for(i=0;readaddr(p+i);i++); for(j=0;j<i;j++) writeaddr(p+j); puts("\n Press any key to quit..."); getch(); } /* 函数readaddr用于输入一个通信录函数 */ int readaddr(struct addr *dpt) { int len; char buf[120];/*输入字符串的缓冲区*/ printf("\nPlease input the Name:\n");/*输入姓名*/ if(scanf("%s",buf)==1) { len=strlen(buf); dpt->name=(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); else { free(dpt->name);/*释放存贮姓名的空间*/ free(dpt->address);/*释
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服