C语言源代码(精心整理).doc
剪刀石头布源代码#include<stdio.h>#include<stdlib.h>main() int d,x; printf("请输入:1是剪刀,2是石头,3是布"); scanf("%d",&d); x=rand()%3; if(d=x) printf("双方平局"); else if(d=1&&x=2)|(d=2&&x=3)|(d=3&&x=1) printf("你赢了"); else printf("电脑赢了"); 简单计算器#include<stdio.h>main()int a,b,d=0;char c;while(d=0) printf("请开始计算,请输入需要运算的数字和运算法则,数字 符号 数字:"); scanf("%d%c%d",&a,&c,&b); switch(c) case'+': printf("%d+%d=%dn",a,b,a+b); break; case'-': printf("%d-%d=%dn",a,b,a-b); break; case'*': printf("%d*%d=%dn",a,b,a*b); break; case'/': if(0=b) printf("除法被除数不能为零!n") ; else printf("%d/%d=%dn",a,b,a/b); break; 加油站加油问题#include<stdio.h>int main() double a = 3.25, b = 3.00, c= 2.75; double d = 0.05, e = 0.10, m; int x,y,z; printf("请输入您要的加油量:"); scanf("%d",&x); printf("请输入您要的汽油种类,1-a型汽油售价3.25元/千克, 2-b型汽油售价3.00元/千克, 3-c型汽油售价2.75元/千克:"); scanf("%d",&y); printf("请输入您要的服务类型,1-自己加 服务优惠0.05,2-协助加 服务优惠0.10:"); scanf("%d",&z);switch(y) case 1: y = a;break; case 2: y = b;break; case 3: y = c;break; if(z = 1) m = (1 - d) * y * x; else if(z = 2) m = (1 - e) * y * x; printf("您需要支付:%f 元,谢谢惠顾,欢迎下次再来",m); return 0;猜数字游戏#include<stdio.h>#include<stdlib.h>int main() int d=1,e=0; int a,b,t; printf ("请输入1-10以内的整数,n "); while(d=1) printf("玩家的选择: "); scanf("%d",&a);do if(a>=0)&&(a<11)break; else printf("错误"); scanf("%d",&a); while(e=0);b=rand()%10+1;printf("npc:%d",b);t=a-b; if(t=0) printf("nRight!n"); else if(t<0) printf("n Wrong !太小了 n"); else if(t>0) printf("n Wrong !太大了 n"); return 0; 万年历#include<stdio.h>#include<stdlib.h>void setmonth(int r);void main(void)int year,month,day,a,b,i,j,d,x,mon,k;doprintf("-n");printf(" 查全年,输入 1!n");printf(" 查月份,输入 2!n");printf(" 查日期,输入 3!n");printf(" 继续?输入 4!n");printf(" 退出,输入 5!n");printf("-n");printf("请输入:");scanf("%d",&x);if(x=1) month=12; printf("输入年份:");scanf("%d",&year);if(x=2) printf("输入年份:");scanf("%d",&year);printf("输入月份:");scanf("%d",&month);if(x=3) printf("输入年份:");scanf("%d",&year);printf("输入月份:");scanf("%d",&mon);printf("输入日期:");scanf("%d",&day);month=mon-1;if(x=5) exit(100);a=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400)%7; for(i=1,d=0;i<=month;i+)switch(i)case 1:case 3:case 5:case 7:case 8:case 10:case 12:d=31;break;case 2:if(!(year%4)&&(year%100)|!(year%400) d=29;else d=28;break;case 4:case 6:case 9:case 11:d=30;b=a%7; a+=d; if(x=1) printf("=n");setmonth(i); printf("*n");printf("=n");printf(" 星期一 星期二 星期三 星期四 星期五 星期六 星期天n");for(j=1;j<=b;j+)printf("%8c",' ');for(j=1;j<=d;j+)printf("%8d",j);if(j+b)%7=0)printf("n");if(x=1) printf("n");if(x=2) printf("=n");setmonth(i-1); printf("*n");printf("=n");printf(" 星期一 星期二 星期三 星期四 星期五 星期六 星期天n");for(j=1;j<=b;j+)printf("%8c",' ');for(j=1;j<=d;j+) printf("%8d",j);if(j+b)%7=0)printf("n");printf("n");if(x=3) a+=day;a%=7;switch(a)case 0:printf("%d.%d.%d 星期一!",year,mon,day);break;case 1:printf("%d.%d.%d 星期二!",year,mon,day);break;case 2:printf("%d.%d.%d 星期三!",year,mon,day);break;case 3:printf("%d.%d.%d 星期四!",year,mon,day);break;case 4:printf("%d.%d.%d 星期五!",year,mon,day);break;case 5:printf("%d.%d.%d 星期六!",year,mon,day);break;default:printf("%d.%d.%d 星期天!",year,mon,day);printf("n");printf("是否继续?输入4继续,输入5退出:"); scanf("%d",&k);while(k=4);if(k=5)exit(100);void setmonth(int r)switch(r)case 1:printf("%4c 一月份",' ');break;case 2:printf("%4c 二月份",' ');break;case 3:printf("%4c 三月份",' ');break;case 4:printf("%4c 四月份",' ');break;case 5:printf("%4c 五月份",' ');break;case 6:printf("%4c 六月份",' ');break;case 7:printf("%4c 七月份",' ');break;case 8:printf("%4c 八月份",' ');break;case 9:printf("%4c 九月份",' ');break;case 10:printf("%4c 十月份",' ');break;case 11:printf("%2c 十一月份",' ');break;default:printf("%2c 十二月份",' ');ATM机# include<stdio.h># include<stdlib.h># define Password 123456main ()int a,i,b,q,c;float m;m=3000.00;for (i=0;i<=2;i+)printf("请输入密码n"); scanf("%d",&a); if(a=Password)printf("密码正确,欢迎使用n");break;elseprintf("密码错误,请重新输入n");if (a!=Password)printf("您的操作错误超过3次,请取回卡n");else system("cls");printf("1.取款n2.存款n3.查询余额n4.退出n");while(b!=4)scanf("%d",&b); switch(b) case 1: system("cls");printf("请输入你要取款的金额n"); scanf(" %d",&q); printf("取款成功,请选择你要进行的操作n");m=m-q;break;case 2: system("cls");printf("请输入你要存入的金额n");scanf(" %d",&c);m=m+c; ;printf("存款成功,请选择你要进行的操作n");break;case 3: system("cls");printf("您的余额为%.2fn",m);break;case 4: system("cls");printf("谢谢使用");break;return 0;学生成绩#include <stdio.h>#include <stdlib.h>float s34;int r=0,c=0;void pjf(void) int i,j,cour = 0; for(j=0;j<4;j+) for(i=0;i<3;i+) cour+=sij; printf("第%d课的平均分是%dn",(j+1),cour/3); cour = 0; void dkzg(void) int i,j,high=0; for(j=0;j<4;j+) for(i=0;i<3;i+) if(sij>high) high=sij; r=i+1; c=j+1; printf("最高分是%d,学生是%d,课程是%dn",high,r,c);r=0;c = 0;high = 0; int main() int i,j; float score=0; for(i=0;i<3;i+) printf("enter NO.%d scoren",i+1); for(j=0;j<4;j+) scanf("%f",&sij);score += sij; printf("第%d个学生的平均分是%fn",(i+1),score/4); score = 0; pjf(); dkzg(); return 0;选票问题#include <stdio.h>void main()int i=1;char j;int num4=0,0,0,0;printf("3位候选人,分别为A,B,C D为无效票,开始投票n");while(i<=10)printf("请输入第%d个的选票",i);scanf("%c",&j);switch(j)case 'A':num0+;i+;break;case 'B':num1+;i+;break;case 'C':num2+;i+;break;case 'D':num3+;i+;break;getchar();printf("A获得%d张选票n",num0);printf("B获得%d张选票n",num1);printf("C获得%d张选票n",num2);printf("无效票为%d张 n",num3);打字母游戏#include <graphics.h>#include <conio.h>#include <time.h>#include <stdlib.h>#include <dos.h>#include <stdio.h>/ 欢迎界面void welcome()/ 输出屏幕提示cleardevice(); /清除屏幕内容,用当前背景色清空屏幕,并将当前点移至 (0, 0)。setcolor(RED); /设置当前绘图前景色为红色,字体颜色为红色setfont(64, 0, "黑体");/设置当前字体样式为黑体,大小为64outtextxy(160, 50, "打字母游戏");/在指定位置输出字符串。setcolor(GREEN);/设置当前绘图前景色为绿色,即文字颜色为绿色setfont(16, 0, "宋体");/设置当前字体样式为宋体outtextxy(200, 200, "本游戏是一个简单传统的游戏");/在指定位置输出字符串。outtextxy(200, 240, "就是随机出现些字母然后游戏");/在指定位置输出字符串。outtextxy(200, 280, "者敲键盘把它消除用以锻炼游");/在指定位置输出字符串。outtextxy(200, 320, "者的反应能力,来试试吧");/在指定位置输出字符串。/ 实现闪烁的"按任意键继续"int c=255;while(!kbhit() /没有按键时循环继续setcolor(RGB(c, 0, 0);/设置当前绘图前景色为红色色outtextxy(280, 400, "按任意键继续");/在指定位置输出字符串c -= 8; /变量c的值自减去8if (c < 0) c = 255;Sleep(20);/调用Sleep()函数延时20毫秒getch();/等待用户从键盘按任意一个键,退出循环cleardevice();/用当前背景色清空屏幕,并将当前点移至 (0, 0)。/ 难度界面int welcome2()int i;/ 输出屏幕提示cleardevice(); /清除屏幕内容,用当前背景色清空屏幕,并将当前点移至 (0, 0)。setcolor(YELLOW); /设置当前绘图前景色为黄色,字体颜色为黄色setfont(64, 0, "黑体");/设置当前字体样式为黑体,大小为64outtextxy(160, 50, "难度选择");/在指定位置输出字符串。setcolor(GREEN);/设置当前绘图前景色为绿色,即文字颜色为绿色setfont(16, 0, "宋体");/设置当前字体样式为宋体outtextxy(100, 160, "初级");/在指定位置输出字符串。outtextxy(100, 200, "中级");/在指定位置输出字符串。outtextxy(100, 240, "高级");/在指定位置输出字符串。outtextxy(100, 280, "终极");/在指定位置输出字符串。 outtextxy(100, 380, "初级选择1,中级选择2,高级选择3,终极4,退出5");scanf("%d",&i);return i;/过关界面void ok()cleardevice();setcolor(YELLOW);setfont(48, 0, "黑体");outtextxy(104, 180, "恭喜过关,再接再厉");getch();/未过界面void gameover()cleardevice();setcolor(YELLOW);setfont(48, 0, "黑体");outtextxy(104, 180, " GAME OVER");getch();/ 退出界面void goodbye()cleardevice();/用当前背景色清空屏幕,并将当前点移至 (0, 0)。setcolor(BLUE);/设置当前绘图前景色为蓝色setfont(48, 0, "黑体");/设置输出字符串的字体为黑体,大小为48outtextxy(40, 180, "其实游戏可以适当玩玩的!");getch();/等待用户从键盘按任意一个键/ 主函数void main()int a;initgraph(640, 480);/ 初始化屏幕为 640x480welcome();/ 显示欢迎界面 bb:a=welcome2(); cleardevice(); /清除屏幕内容,用当前背景色清空屏幕,并将当前点移至 (0, 0)。srand(time(NULL);/ 设置随机种子setfont(20, 0, "黑体");/ 设置字母的字体和大小setfillstyle(BLACK);/ 设置清除字母的填充区域颜色char target,target1;/ 目标字母char key;/ 用户的按键int x, y,b=51,c=48;/ 字母的位置 switch(a) case 1: while(true) target = 65 + rand() % 26; / 产生任意大写字母 x = rand() % 550;/ 产生任意下落位置 for (y=0; y<460; y+) setcolor(GREEN);/ 设置字母的颜色 outtextxy(x, y, target);setcolor(RED); outtextxy(550, 80, "生t命t值"); outtextxy(600, 120, b); setcolor(GREEN); outtextxy(560, 450, "分值"); outtextxy(600, 450, c); if(kbhit() key = getch(); / 获取用户按键 if(key != target) && (key != target + 32) b=b-1; if(key = target) | (key = target + 32) / 按键正确,"击落"字母(画黑色方块擦除) bar(x, y, x + 20, y + 20); c=c+1; break;/ 跳出循环,进行下一个字母 else if (key = 27) goto EXIT;/ 如果按 ESC,退出游戏主循环 if(y=459) b=b-1; if(b=48) goto over; if(c=57) goto win; Sleep(10); bar(x, y, x + 20, y + 20); break; case 2: while(true) target = 65 + rand() % 26; / 产生任意大写字母 x = rand() % 550; / 产生任意下落位置 for (y=0; y<460; y=y+2) setcolor(GREEN);/ 设置字母的颜色 outtextxy(x, y, target);outtextxy(x+160,y,target1);/ 显示字母setcolor(RED); / 显示字母 outtextxy(550, 80, "生命值"); outtextxy(600, 120, b); setcolor(GREEN); outtextxy(560, 450, "分值"); outtextxy(600, 450, c); if(kbhit() key = getch();/ 获取用户按键 if(key != target) && (key != target + 32) b=b-1; if(key = target) | (key = target + 32) bar(x, y, x + 20, y + 20); c=c+1; break; else if (key = 27) goto EXIT;/ 如果按 ESC,退出游戏主循环 if(y=459) b=b-1; if(b=48) goto over; if(c=57) goto win; Sleep(1); bar(x, y, x + 20, y + 20); break; case 3: while(true) target = 65 + rand() % 26; / 产生任意大写字母 x = rand() % 550;/ 产生任意下落位置 for (y=0; y<460; y=y+1) setcolor(GREEN);/ 设置字母的颜色 outtextxy(x, y, target);setcolor(RED); / 显示字母 outtextxy(550, 80, "生t命t值"); outtextxy(600, 120, b); setcolor(GREEN); outtextxy(560, 450, "分值"); outtextxy(600, 450, c); if(kbhit() key = getch(); / 获取用户按键 if(key != target) && (key != target + 32) b=b-1; if(key = target) | (key = target + 32) / 按键正确,"击落"字母(画黑色方块擦除) bar(x, y, x + 20, y + 20); c=c+1; break;/ 跳出循环,进行下一个字母 else if (key = 27) goto EXIT;/ 如果按 ESC,退出游戏主循环 if(y=459) b=b-1; if(b=48) goto over;if(c=57) goto win;int i; for(i=0;i<1000000;i+); bar(x, y, x + 20, y + 20); break; case 4: while(true) target = 65 + rand() % 26; / 产生任意大写字母 x = rand() % 550; / 产生任意下落位置 for (y=0; y<460; y+) setcolor(GREEN);/ 设置字母的颜色 outtextxy(x, y, target);outtextxy(x+160,y,target1);/ 显示字母setcolor(RED); / 显示字母 outtextxy(550, 80, "生命值"); outtextxy(600, 120, b); setcolor(GREEN); outtextxy(560, 450, "分值"); outtextxy(600, 450, c); if(kbhit() key = getch();/ 获取用户按键 if(key != target) && (key != target + 32) b=b-1; if(key = target) | (key = target + 32) bar(x, y, x + 20, y + 20); c=c+1; break; else if (key = 27) goto EXIT;/ 如果按 ESC,退出游戏主循环 if(y=459) b=b-1; if(b=48) goto over; if(c=57) goto win; int i; for(i=0;i<1000000;i=i+2); bar(x, y, x + 16, y + 16); break; case 5: goto EXIT;break; over: gameover(); goto bb; win: ok(); goto bb; EXIT: goodbye(); closegraph(); / 关闭图形界面17