C语言学生编程.docx
- 文档编号:11845212
- 上传时间:2023-04-05
- 格式:DOCX
- 页数:10
- 大小:18.44KB
C语言学生编程.docx
《C语言学生编程.docx》由会员分享,可在线阅读,更多相关《C语言学生编程.docx(10页珍藏版)》请在冰豆网上搜索。
C语言学生编程
四个数中求最值方法
这个程 序先分别在两两个数中找出大值,然后这两个大数再作比较,思路比较清楚*/
#include"stdio.h"
#include"conio.h"
main()
{
intiA,iB,iC,iD,iM,iN;
scanf("%d%d%d%d",&iA,&iB,&iC,&iD);
iM=iB>iA?
iB:
iA;
iN=iC>iD?
iC:
iD;
if(iM>iN)
printf("%d",iM);
else
printf("%d",iN);
getch();
}
采用数组保存四个数,然后找出最大数的下标,输出该元素,方法不错,
需要指出的是程序中变量的命名方式,比如IMax,若改为iMax则比较好*/
#include"Stdio.h"
#include"Conio.h"
#defineSIZE4
intmain(void)
{
intINumber[SIZE]={0},II=0,IMax=0;
printf("inputthenumber:
\n");
for(II=0;II scanf("%d",&INumber[II]); for(II=0;II if(INumber[II]>INumber[IMax]) IMax=II; printf("IMax=%d",INumber[IMax]); getch(); return0; } 使用数组来找出最大值,这个方法通用性好, 比如说任意个数中找最大数都可以这样做了,建议以后可以去从事工具软件的开发工作,呵呵*/ #include"stdio.h" #include"conio.h" main() {intiA[4],i,iMax; for(i=0;i<4;i++) {scanf("%d",&iA[i]); } iMax=iA[0]; for(i=0;i<4;i++) {if(iA[i]>iA[0]) iMax=iA[i]; } printf("%d",iMax); getch(); } 迷宫游戏 #include"stdio.h" #include"bios.h" #defineLEFT75 #defineRIGHT77 #defineUPPER72 #defineDOWN80 #defineESC27 unionkeyboard /*定义读取键盘码的共用体类型*/ { unsignedintiKeyInfo; charchKeyBit[2]; }; intfnGetKey(void) /*定义读取键盘码的函数*/ { unionkeyboarduniKey1; /*定义读取键盘码的共用体变量*/ while(bioskey (1)==0); /*检测用户是否按键*/ uniKey1.iKeyInfo=bioskey(0); /*读取按键信息*/ return(uniKey1.chKeyBit[0]==0? uniKey1.chKeyBit[1]: uniKey1.chKeyBit[0]); /*返回ASCII码或扩充码*/ } voidmain() { intiKey,x=11,y=6; /*x,y为人物移动后坐标*/ intchMap[10][10]={ /*用二维数组定义地图*/ {0,0,0,0,0,0,0,0,0,0}, /*0表示墙1表示路2表示出口*/ {0,1,0,0,1,1,1,1,1,0}, {0,1,1,0,1,0,1,0,1,0}, {0,0,1,0,1,0,1,0,1,0}, {0,0,1,1,1,0,0,0,1,0}, {0,0,0,0,0,0,1,1,1,0}, {0,1,0,0,1,1,1,0,0,0}, {0,1,1,1,1,0,0,0,2,0}, {0,1,0,0,1,1,1,1,1,0}, {0,0,0,0,0,0,0,0,0,0}, }; inti,j; /*反复进行求移动的坐标运算*/ while (1) { for(i=0;i<10;i++) /*输出新地图(刷新地图)*/ { gotoxy(10,5+i); for(j=0;j<10;j++) { if(chMap[i][j]==0) printf("#"); if(chMap[i][j]==1) printf(""); if(chMap[i][j]==2) printf("E"); } } if(chMap[y-5][x-10]==2) /*如果如果人的坐标和目标坐标重合输出"YOUWIN! "退出*/ { clrscr(); printf("YouWin! "); break; } /*在起始(或移动后)的坐标输出人*/ gotoxy(x,y); printf("*\b"); iKey=fnGetKey(); /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/ if(iKey==LEFT&&chMap[y-5][x-1-10]! =0) x--; if(iKey==RIGHT&&chMap[y-5][x+1-10]! =0) x++; if(iKey==UPPER&&chMap[y-1-5][x-10]! =0) y--; if(iKey==DOWN&&chMap[y+1-5][x-10]! =0) y++; if(iKey==ESC) /*输入ESC退出并输出"YOULOST"*/ { clrscr(); printf("YouLost"); break; } clrscr(); } getch(); } 推箱子游戏 #include"stdio.h" #include"bios.h" #defineLEFT75 #defineRIGHT77 #defineUPPER72 #defineDOWN80 #defineESC27 structBoxss /*定义箱子结构体,其中包含坐标属性*/ { intx,y; }; unionkeyboard /*定义读取键盘码的共用体类型*/ { unsignedintiKeyInfo; charchKeyBit[2]; }; intfnGetKey(void) /*定义读取键盘码的函数*/ { unionkeyboarduniKey1; /*定义读取键盘码的共用体变量*/ while(bioskey (1)==0); /*检测用户是否按键*/ uniKey1.iKeyInfo=bioskey(0); /*读取按键信息*/ return(uniKey1.chKeyBit[0]==0? uniKey1.chKeyBit[1]: uniKey1.chKeyBit[0]); /*返回ASCII码或扩充码*/ } voidmain() { intiKey,x=11,y=6,tx=11,ty=6; /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/ structBoxssBox[4]; /*定义箱子数量*/ intchMap[10][10]={ /*用二维数组定义地图*/ {0,0,0,0,0,0,0,0,0,0}, /*0表示墙1表示路2表示目标*/ {0,1,0,0,0,0,1,1,1,0}, {0,1,0,2,0,0,1,0,1,0}, {0,1,0,1,0,0,1,0,1,0}, {0,1,1,1,0,0,1,0,1,0}, {0,1,0,0,0,0,1,0,1,0}, {0,1,1,1,1,1,1,0,1,0}, {0,1,0,1,0,0,0,0,2,0}, {0,2,0,1,1,1,1,2,0,0}, {0,0,0,0,0,0,0,0,0,0}, }; inti,j; Box[0].x=13; /*定义箱子的坐标属性*/ Box[1].x=11; Box[2].x=14; Box[3].x=18; Box[0].y=8; Box[1].y=7; Box[2].y=13; Box[3].y=7; while (1) /*反复进行求移动的坐标运算*/ { for(i=0;i<10;i++) /*输出新地图(刷新地图)*/ { gotoxy(10,5+i); for(j=0;j<10;j++) { if(chMap[i][j]==0) printf("#"); if(chMap[i][j]==1) printf(""); if(chMap[i][j]==2) printf("X"); } } j=0; /*判断是否所有箱子都在目标坐标上*/ for(i=0;i<4;i++) if(chMap[Box[i].y-5][Box[i].x-10]==2) j++; if(j==4) /*如果所有箱子都就位输出"YOUWIN! "退出*/ { clrscr(); printf("YouWin! "); break; } for(i=0;i<4;i++) /*在起始(或移动后)的坐标输出箱子*/ { gotoxy(Box[i].x,Box[i].y); printf("0"); } gotoxy(x,y); /*在起始(或移动后)的坐标输出人*/ printf("*\b"); tx=x; /*记录本次移动前的坐标*/ ty=y; iKey=fnGetKey(); if(iKey==LEFT&&chMap[y-5][x-1-10]! =0) /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/ x--; if(iKey==RIGHT&&chMap[y-5][x+1-10]! =0) x++; if(iKey==UPPER&&chMap[y-1-5][x-10]! =0) y--; if(iKey==DOWN&&chMap[y+1-5][x-10]! =0) y++; /*输入ESC退出并输出"YOULOST"*/ if(iKey==ESC) { clrscr(); printf("YouLost"); break; } for(i=0;i<4;i++) /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/ if(Box[i].x==x&&Box[i].y==y) { Box[i].x+=(x-tx); Box[i].y+=(y-ty); if(chMap[Box[i].y-5][Box[i].x-10]==0) /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/ { Box[i].x-=(x-tx); Box[i].y-=(y-ty); x=tx; y=ty; } break; } clrscr(); } getch(); } 数组排序、插入、删除、输出等操作的模块化实现方法 #include"stdio.h" #defineN10 menu(void); choose(void); intput(intx,intiNum[]); main() { menu();/*目录*/ choose();/*选择操作*/ } menu(void) { printf("\n\t\t\t***************************"); printf("\n\t\t\t** Welcome to user **"); printf("\n\t\t\t***************************"); printf("\n\t\t\t***************************"); printf("\n\n\n1.Input10numandtaxis"); printf("\n\n2.AddNum"); printf("\n\n3.DelNum"); printf("\n\n4.SearchNum"); printf("\n\n5.OutputNum"); printf("\n\n6.Menu"); printf("\n\n7.Exit\n\n"); } choose(void) { charchClose; intiNum[N],i,j,t,iNo,iDel,iFind,iFlag=-1,o=N,iChoice; do{ printf("\n\nPleasechoice: "); scanf("%s",&iChoice); switch(iChoice) { case'1': /*输入10个数和排序*/ printf("\nInputNum: "); for(i=0;i scanf("%d",&iNum[i]); for(j=0;j { for(i=N-1;i>j;i--) if(iNum[i] {t=iNum[i]; iNum[i]=iNum[i-1]; iNum[i-1]=t; } } put(N,iNum); break; case'2': /*增加一个数再排序*/ printf("\nAddNum: ");/*增加的数*/ scanf("%d",&iNum[N]); printf("NO.");/*插入第几位*/ scanf("%d",&iNo); for(i=N;i>=iNo;i--)/*排序*/ { t=iNum[i]; iNum[i]=iNum[i-1]; iNum[i-1]=t; } put(N+1,iNum); break; case'3': /*删除一个数*/ printf("\nDelNum: "); scanf("%d",&iDel); for(i=0;i<=o;i++) if(iDel==iNum[i])/*删除后排序并减少一位*/ { for(i;i<=o;i++) iNum[i]=iNum[i+1]; o--; } put(o,iNum); break; case'4': /*查找有无输入的数*/ printf("\nSearchNum: "); scanf("%d",&iFind); for(i=0;i { if(iFind==iNum[i]) { iFlag=i;/*判断是否找到该数*/ printf("found,thenumin%d\n",iFlag+1); } } if(iFind>=N||iFind<0) printf("Notfound\n"); break; case'5': /*输出数*/ put(o,iNum); break; case'6': /*返回目录*/ clrscr();/*清屏*/ menu(); break; case'7': /*是否关闭*/ printf("\nClose? Y/N\t"); for(;;)/*检查输入的数是否为Y或N*/ { scanf("%s",&chClose); if(chClose=='Y'||chClose=='y'||chClose=='N'||chClose=='n') break; else { printf("\n\tpleaseinputYorN! \n\n "); continue; } } if(chClose=='Y'||chClose=='y') { exit(); } elseif(chClose=='N'||chClose=='n') clrscr(); menu(); break;/*返回重新选择*/ default: /*选择输入,当不在选择范围会提示错误*/ printf("\n\tWrong! ! Pleaseinput1~5num! Please
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 编程