当前位置:首页 » 编程语言 » c语言小程序100例

c语言小程序100例

发布时间: 2022-06-22 12:47:04

Ⅰ 跪求一个c语言小程序,100行左右,最好独特一点

1,输入十个职工的姓名和职工号
2,按职工号从小到大顺序排序,姓名顺序随之调整
3,输入一个职工号,用折半法找出该职工姓名,从主函数输入要查找的职工号,输出该职工姓名

#include<iostream>
#include <string>
#include<conio.h>
using namespace std;

struct Employee
{
long int EID;
string Name;
};

//设置信息
void SetInfo(Employee *p)
{
cout<<"员工编号:";
cin>>p->EID;
cout<<"姓名:";
cin>>p->Name;
}
//显示信息
void Display(Employee *p)
{
cout<<"编号:"<<p->EID<<endl;
cout<<"姓名:"<<p->Name<<endl;
}
//使用快速排序方法按职工号排序
void QuickSort(Employee *A,int s,int t) //对A[s]至A[t]之间的元素进行快速排序
{
int i = s,j = t;
Employee tmp;
if(s<t) //至少有2个元素的情况
{
Employee tmp;
tmp.EID = A[s].EID; tmp.Name = A[s].Name; //区间第一个记录作为基准
while(i != j) //两端向中间扫描至 i = j
{
while(j>i && A[j].EID>tmp.EID) //从右往左,找第一个小于tmp.key的A[j]
j--;
A[i].EID = A[j].EID; A[i].Name = A[j].Name; //找到A[j],将A[i]与A[j]交换
while(i<j && A[i].EID<tmp.EID) //从左往右,找第一个大于tmp.key的A[i]
i++;
A[j].EID = A[i].EID; A[j].Name = A[i].Name; //找到A[i],将A[i]与A[j]交换
}
A[i].EID = tmp.EID; A[i].Name = tmp.Name; //将基准放到A[i]中

QuickSort(A,s,i-1); //对左区间递归排序
QuickSort(A,i+1,t); //对右区间递归排序
}
}
//按职工号折半查找
int BinSearch(Employee *A,int n,long k) //数组A[n]必须是有序数组
{
int low = 0,high = n-1,mid;
while(low<=high)
{
mid = (low+high)/2;
if(A[mid].EID == k)return mid; //找到
if(A[mid].EID > k) high = mid-1;
else low = mid+1;
}
return -1; //没有找到
}

int main()
{
int i,n,op;
long int op2;
cout<<"请输入员工数:";
cin>>n;
Employee *pEmp = new Employee [n];
for(i=0;i<n;i++)
{
cout<<"输入第"<<i+1<<"个员工信息:\n";
SetInfo(pEmp+i);
}
system("cls");
while(1)
{
cout<<"请选择:\n1.显示员工信息\n2.修改员工信息\n3.按职工号排序\n4.查找职工\n5.退出"<<endl;
cin>>op;
switch(op)
{
case 1:
for(i=0;i<n;i++)
{
Display(pEmp+i);
cout<<endl;
}
getch();
system("cls");
break;

case 2:
cout<<"请输入要修改姓名的员工的编号:";
cin>>op2;
for(i=0;i<n;i++)
{
if((pEmp+i)->EID==op2)
{
SetInfo(pEmp+i);
break;
}
}
if(i>=n)cout<<"错误,无此编号!";
getch();
system("cls");
break;
case 3:
QuickSort(pEmp,0,n-1);
cout<<"排序完毕!"<<endl;
getch();
system("cls");
break;
case 4:
cout<<"请输入职工号进行查找:";
cin>>op2;
QuickSort(pEmp,0,n-1); //折半查找要求数组有序,在此先进行排序
i = BinSearch(pEmp,n,op2);
if(i == -1)cout<<"没有找到该编号的职工!"<<endl;
else cout<<"该编号职工的姓名是:"<<(pEmp+i)->Name<<endl;
getch();
system("cls");
break;
case 5:
delete [] pEmp;
return 0;
default:
cout<<"选择有误!\n";
break;
}
}
}

Ⅱ c语言能写出什么样有意思的小程序

  1. C语言是一门通用计算机编程语言,应用广泛。

  2. C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

  3. C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

  4. 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

程序源代码:

main()

{int i,j,k;printf( );for(i=1;i<5;i++)/*以下为三重循环*/for(j=1;j<5;j++)

for (k=1;k<5;k++),{f (i!=ki!=jj!=k) /*确保i、j、k三位互不相同*/printf(%d,%d,%d ,i,j,k); }}

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

程序源代码:

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf(%ld,i);

bonus1=100000*0.1;bonus2=bonus1+100000*0.75;

bonus4=bonus2+200000*0.5;

bonus6=bonus4+200000*0.3;

bonus10=bonus6+400000*0.15;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

printf(bonus=%d,bonus);

}

6.题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果。

程序源代码:

#include math.h

main()

{

long int i,x,y,z;

for (i=1;i<100000;i++)

{ x=sqrt(i+100); /*x为加上100后开方后的结果*/

y=sqrt(i+268); /*y为再加上168后开方后的结果*/

if(x*x==i+100y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

printf( %ld ,i);

}

}

7.题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

程序源代码:

main()

{

int day,month,year,sum,leap;

printf( please input year,month,day );

scanf(%d,%d,%d,year,month,day);

switch(month)/*先计算某月以前月份的总天数*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

defaultrintf(data error);break;

}

sum=sum+day; /*再加上某天的天数*/

if(year%400==0||(year%4==0year%100!=0))/*判断是不是闰年*/

leap=1;

else

leap=0;

if(leap==1month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf(It is the %dth day.,sum); }

8.题目:输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

程序源代码:

main()

{

int x,y,z,t;

scanf(%d%d%d,x,y,z);

if (x>y)

/*交换x,y的值*/

if(x>z)

/*交换x,z的值*/

if(y>z)

/*交换z,y的值*/

printf(small to big: %d %d %d ,x,y,z);

}

9.题目:用*号输出字母C的图案。

程序分析:可先用<|>*<|>号在纸上写出字母C,再分行输出。

程序源代码:

#include stdio.h

main()

{

printf(Hello C-world! );

printf( **** );

printf( * );

printf( * );

printf( **** );

}

10.题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

程序分析:字符共有256个。不同字符,图形不一样。

程序源代码:

#include stdio.h

main()

{

char a=176,b=219;

printf(%c%c%c%c%c ,b,a,a,a,b);

printf(%c%c%c%c%c ,a,b,a,b,a);

printf(%c%c%c%c%c ,a,a,b,a,a);

printf(%c%c%c%c%c ,a,b,a,b,a);

printf(%c%c%c%c%c ,b,a,a,a,b); }

11.题目:输出9*9口诀。

程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

程序源代码:

#include stdio.h

main()

{

int i,j,result;

printf( );

for (i=1;i<10;i++)

{ for(j=1;j<10;j++)

{

result=i*j;

printf(%d*%d=%-3d,i,j,result);/*-3d表示左对齐,占3位*/

}

printf( );/*每一行后换行*/

}

}

12.题目:要求输出国际象棋棋盘。

程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。

程序源代码:

#include stdio.h

main()

{

int i,j;

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

if((i+j)%2==0)

printf(%c%c,219,219);

else

printf( );

printf( );

}

}

13.题目:打印楼梯,同时在楼梯上方打印两个笑脸。

程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。

程序源代码:

#include stdio.h

main()

{

int i,j;

printf( );/*输出两个笑脸*/

for(i=1;i<11;i++)

{

for(j=1;j<=i;j++)

printf(%c%c,219,219);

printf( );

}

Ⅲ 就是C语言经典c程序100例(1--10)

三层循环三个for语句之间是没有分号的 把第一个和第二个for后面的;去掉

Ⅳ 用C语言写一个小程序,麻烦大家了

//记得多给点分哦,很难写的。
//C
#include<stdio.h>
intstrnmerge(char*str,intn,charconst*s1,charconst*s2){
while(n>0){
if(!(*s1)&&!(*s2))break;
if(*s1&&n>0){
*str++=*s1++;
--n;
}
if(*s2&&n>0){
*str++=*s2++;
--n;
}
}
*str='';
}
intmain(){
chars1[]="aaaa";
chars2[]="bbbbbbbbb";
charstr[100];
strnmerge(str,10,s1,s2);
printf("s1=%s ",s1);
printf("s2=%s ",s2);
printf("str=%s ",str);
return0;
}

//C++
#include<iostream>
usingnamespacestd;
intstrnmerge(char*str,intn,charconst*s1,charconst*s2){
while(n>0){
if(!(*s1)&&!(*s2))break;
if(*s1&&n>0){
*str++=*s1++;
--n;
}
if(*s2&&n>0){
*str++=*s2++;
--n;
}
}
*str='';
}
intmain(){
chars1[]="aaaa";
chars2[]="bbbbbbbbb";
charstr[100];
strnmerge(str,10,s1,s2);
cout<<"s1="<<s1<<endl;
cout<<"s2="<<s2<<endl;
cout<<"str="<<str<<endl;
return0;
}

Ⅳ C语言的小程序100行

while(count!=8)
{
i=0;j=0;

printf("请输入四位数字:");
gets(ss); pp=ss; --输入字符如果用数组来装比较好
for(kk=0;*pp!='\0';kk++) pp++;控制你到底输入多少个
if(kk!=4) biao=1;else biao=0; 如果你输入不够4个
for(kk=0;kk<4;kk++) if((*(ss+kk)<48)||(*(ss+kk))>=58)控制你有没{biao=1;break;} 有输入超过1-9的数~他只随机生成1-9的数
while (biao)上面如果你输入超过9的数要你重输入
{
printf("****输错啦吧?难道你想忽悠老夫??\n");
printf("请输入四位数字:");
gets(ss); pp=ss;
for(kk=0;*pp!='\0';kk++) pp++;
if(kk!=4) biao=1;else biao=0;
for(kk=0;kk<4;kk++) if((*(ss+kk)<48)||(*(ss+kk))>=58)biao=1;
}
b=(*ss-48)*1000+(*(ss+1)-48)*100+(*(ss+2)-48)*10+(*(ss+3)-48);
a=b; 就是这里代码比较差~分解来~分解去~用int数组就没有那么麻烦
for(k=3;k>=0;k--)
{
if((a%10)==p[k]) 分解出位数
j++; 如果成立J++求A 和B
a/=10;
}
for(k=3;k>=0;k--)
{
a=b;
for(n=0;n<4;n++)
{
if(p[k]==(a%10)) 求A 和B代表猜对的数字个数但不要求顺序也正确
i++;
a/=10;
}
}
设计优点:没什么优点就是好笑
设计缺点:代码差~就是一托屎

Ⅵ 求C语言编程实例100行以上,要有文字大概解释一下

下面是一个用C语言显示一个简单的WIndows窗口的小程序。用C语言对Windows编程的基础。

//+---------------------------------------------------------------------------
//
//HELLO_WIN.C-WindowsGUI'HelloWorld!'示例
//
//+---------------------------------------------------------------------------

#include<windows.h>

#defineAPPNAME"HELLO_WIN"

charszAppName[]=APPNAME;//当前有用程序的名称
charszTitle[]=APPNAME;//标题行显示的文字
constchar*pWindowText;

voidCenterWindow(HWNDhWnd);

//+---------------------------------------------------------------------------
//
//Function:WndProc
//
//Synopsis:处理Windows消息的函数
//
//Arguments:sameasalways.
//----------------------------------------------------------------------------

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
switch(message){

//-----------------------firstandlast
caseWM_CREATE:
CenterWindow(hwnd);
break;

caseWM_DESTROY:
PostQuitMessage(0);
break;

//-----------------------getoutofit...
caseWM_RBUTTONUP:
DestroyWindow(hwnd);
break;

caseWM_KEYDOWN:
if(VK_ESCAPE==wParam)
DestroyWindow(hwnd);
break;

//-----------------------displayourminimalinfo
caseWM_PAINT:
{
PAINTSTRUCTps;
HDChdc;
RECTrc;
hdc=BeginPaint(hwnd,&ps);

GetClientRect(hwnd,&rc);
SetTextColor(hdc,RGB(240,240,96));
SetBkMode(hdc,TRANSPARENT);
DrawText(hdc,pWindowText,-1,&rc,DT_CENTER|DT_SINGLELINE|DT_VCENTER);

EndPaint(hwnd,&ps);
break;
}

//-----------------------letwindowsdoallotherstuff
default:
returnDefWindowProc(hwnd,message,wParam,lParam);
}
return0;
}

//+---------------------------------------------------------------------------
//
//Function:WinMain
//
//Synopsis:
//
//----------------------------------------------------------------------------
intAPIENTRYWinMain(
HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow
)
{
MSGmsg;
WNDCLASSwc;
HWNDhwnd;

pWindowText=lpCmdLine[0]?lpCmdLine:"HelloWindows!";

//
//themainwindow.

ZeroMemory(&wc,sizeofwc);
wc.hInstance=hInstance;
wc.lpszClassName=szAppName;
wc.lpfnWndProc=(WNDPROC)WndProc;
wc.style=CS_DBLCLKS|CS_VREDRAW|CS_HREDRAW;
wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);

if(FALSE==RegisterClass(&wc))
return0;

//createthebrowser
hwnd=CreateWindow(
szAppName,
szTitle,
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
360,//CW_USEDEFAULT,
240,//CW_USEDEFAULT,
0,
0,
hInstance,
0);

if(NULL==hwnd)
return0;

//Mainmessageloop:
while(GetMessage(&msg,NULL,0,0)>0){
TranslateMessage(&msg);
DispatchMessage(&msg);
}

returnmsg.wParam;
}

//+---------------------------------------------------------------------------

//+---------------------------------------------------------------------------

voidCenterWindow(HWNDhwnd_self)
{
HWNDhwnd_parent;
RECTrw_self,rc_parent,rw_parent;
intxpos,ypos;

hwnd_parent=GetParent(hwnd_self);
if(NULL==hwnd_parent)
hwnd_parent=GetDesktopWindow();

GetWindowRect(hwnd_parent,&rw_parent);
GetClientRect(hwnd_parent,&rc_parent);
GetWindowRect(hwnd_self,&rw_self);

xpos=rw_parent.left+(rc_parent.right+rw_self.left-rw_self.right)/2;
ypos=rw_parent.top+(rc_parent.bottom+rw_self.top-rw_self.bottom)/2;

SetWindowPos(
hwnd_self,NULL,
xpos,ypos,0,0,
SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE
);
}

//+---------------------------------------------------------------------------

Ⅶ 利用C语言做一个小程序

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void main( void )
{
int i;

/* Seed the random-number generator with current time so that
* the numbers will be different every time we run.
*/
srand( (unsigned)time( NULL ) );

/* Display 10 numbers. */
for( i = 0; i < 10;i++ )
printf( " %6d\n", rand() );
}
以上是产生随机数例子

void main( void )
{
FILE *stream;
char list[30];
int i, numread, numwritten;

/* Open file in text mode: */
if( (stream = fopen( "fread.out", "w+t" )) != NULL )
{
for ( i = 0; i < 25; i++ )
list[i] = (char)('z' - i);
/* Write 25 characters to stream */
numwritten = fwrite( list, sizeof( char ), 25, stream );
printf( "Wrote %d items\n", numwritten );
fclose( stream );

}
else
printf( "Problem opening the file\n" );

if( (stream = fopen( "fread.out", "r+t" )) != NULL )
{
/* Attempt to read in 25 characters */
numread = fread( list, sizeof( char ), 25, stream );
printf( "Number of items read = %d\n", numread );
printf( "Contents of buffer = %.25s\n", list );
fclose( stream );
}
else
printf( "File could not be opened\n" );
}
写入文件例子。。。
组合一下总会吧。。。俺就不细改了,MSDN随处可见

Ⅷ c语言小程序

黑白棋游戏#include"graphics.h"/*图形系统头文件*/#defineLEFT0x4b00/*光标左键值*/#defineRIGHT0x4d00/*光标右键值*/#defineDOWN0x5000/*光标下键值*/#defineUP0x4800/*光标上键值*/#defineESC0x011b/*ESC键值*/#defineENTER0x1c0d/*回车键值*/inta[8][8]={0},key,score1,score2;/*具体分数以及按键与存放棋子的变量*/charplayone[3],playtwo[3];/*两个人的得分转换成字符串输出*/voidplaytoplay(void);/*人人对战函数*/voidDrawQp(void);/*画棋盘函数*/voidSetPlayColor(intx);/*设置棋子第一次的颜色*/voidMoveColor(intx,inty);/*恢复原来棋盘状态*/intQpChange(intx,inty,intz);/*判断棋盘的变化*/voidDoScore(void);/*处理分数*/voidPrintScore(intn);/*输出成绩*/voidplayWin(void);/*输出胜利者信息*//******主函数*********/voidmain(void){intgd=DETECT,gr;initgraph(&gd,&gr,"c:\\tc");/*初始化图形系统*/DrawQp();/*画棋盘*/playtoplay();/*人人对战*/getch();closegraph();/*关闭图形系统*/}voidDrawQp()/*画棋盘*/{inti,j;score1=score2=0;/*棋手一开始得分都为0*/setbkcolor(BLUE);for(i=100;i=64-score1-score2)/*如果尝试超过空格数则停步*/{MoveColor(x,y);fillellipse(x,y,15,15);break;}elsecontinue;/*如果按键无效*/}DoScore();/*分数的改变*/break;/*棋盘变化了,则轮对方走棋*/}else/*已经有棋子就继续按键*/continue;}else/*四个方向按键的判断*/if(key==LEFT&&x>120)/*左方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x-=40;fillellipse(x,y,15,15);}elseif(key==RIGHT&&x80)/*右方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);x+=40;fillellipse(x,y,15,15);}elseif(key==UP&&y>120)/*上方向键*/{MoveColor(x,y);fillellipse(x,y,15,15);SetPlayColor(t);y-=40;fillellipse(x,y,15,15);}elseif(key==DOWN&&y1)/*判断左边*/{for(k=j-1;k>=0;k--)if(a[i][k]==a[i][j]||!a[i][k])break;if(a[i][k]!=0&&k>=0){for(kk=j-1;kk>k&&k>=0;kk--){a[i][kk]=a[i][j];fillellipse(120+i*40,120+kk*40,15,15);}if(kk!=j-1)yes=1;}}if(i1)/*判断上边*/{for(k=i-1;k>=0;k--)if(a[k][j]==a[i][j]||!a[k][j])break;if(a[k][j]!=0&&k>=0){for(kk=i-1;kk>k&&k>=0;kk--){a[kk][j]=a[i][j];fillellipse(120+kk*40,120+j*40,15,15);}if(kk!=i-1)yes=1;}}if(i>1&&j=0&&kk=0&&kkk&&k>=0;ii--,jj++){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i-1)yes=1;}}if(i1)/*左下*/{for(k=i+1,kk=j-1;k=0;k++,kk--)if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]!=0&&k=0){for(ii=i+1,jj=j-1;ii1&&j>1)/*左上*/{for(k=i-1,kk=j-1;k>=0&&kk>=0;k--,kk--)if(a[k][kk]==a[i][j]||!a[k][kk])break;if(a[k][kk]!=0&&k>=0&&kk>=0){for(ii=i-1,jj=j-1;ii>k&&k>=0;ii--,jj--){a[ii][jj]=a[i][j];fillellipse(120+ii*40,120+jj*40,15,15);}if(ii!=i-1)yes=1;}}if(iscore1)/*开始判断最后的结果*/outtextxy(100,50,"blackwin!");elseif(score2#include#include#include#include#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000#defineUP0x4800#defineESC0x011b#defineSPACE0x3920#defineBILI20#defineJZ4#defineJS3#defineN19intbox[N][N];intstep_x,step_y;intkey;intflag=1;voiddraw_box();voiddraw_cicle(intx,inty,intcolor);voidchange();voidjudgewho(intx,inty);voidjudgekey();intjudgeresult(intx,inty);voidattentoin();voidattention(){charch;window(1,1,80,25);textbackground(LIGHTBLUE);textcolor(YELLOW);clrscr();gotoxy(15,2);printf("游戏操作规则:");gotoxy(15,4);printf("PlayRules:");gotoxy(15,6);printf("1、按左右上下方向键移动棋子");gotoxy(15,8);printf("1.PressLeft,Right,Up,DownKeytomovePiece");gotoxy(15,10);printf("2、按空格确定落棋子");gotoxy(15,12);printf("2.PressSpacetoplacethePiece");gotoxy(15,14);printf("3、禁止在棋盘外按空格");gotoxy(15,16);printf("3.");gotoxy(15,18);printf("你是否接受上述的游戏规则(Y/N)");gotoxy(15,20);printf("?[Y/N]:");while(1){gotoxy(60,20);ch=getche();if(ch=='Y'||ch=='y')break;elseif(ch=='N'||ch=='n'){window(1,1,80,25);textbackground(BLACK);textcolor(LIGHTGRAY);clrscr();exit(0);}gotoxy(51,12);printf("");}}voiddraw_box(){intx1,x2,y1,y2;setbkcolor(LIGHTBLUE);setcolor(YELLOW);gotoxy(7,2);printf("Left,Right,Up,DownKEYtomove,Spacetoput,ESC-quit.");for(x1=1,y1=1,y2=18;x1=1;i--)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;}if(i18)break;else{for(i=step_x+1,j=step_y;i18)break;step_x=i;judgewho(step_x,step_y);break;}caseDOWN:if((step_y+1)>18)break;else{for(i=step_x,j=step_y+1;j18)break;step_y=j;judgewho(step_x,step_y);break;}caseUP:if((step_y-1)=1;j--)if(box[i][j]==0){draw_circle(step_x,step_y,LIGHTBLUE);break;}if(j=1&&step_x=1&&step_y=1;j--){if(box[j][k]==flag)n1++;elsebreak;}/*水平向右数*/for(j=x,k=y;j=5){return(1);break;}/*垂直向上数*/n1=0;n2=0;for(j=x,k=y;k>=1;k--){if(box[j][k]==flag)n1++;elsebreak;}/*垂直向下数*/for(j=x,k=y;k=5){return(1);break;}/*向左上方数*/n1=0;n2=0;for(j=x,k=y;j>=1,k>=1;j--,k--){if(box[j][k]==flag)n1++;elsebreak;}/*向右下方数*/for(j=x,k=y;j=5){return(1);break;}/*向右上方数*/n1=0;n2=0;for(j=x,k=y;j=1;j++,k--){if(box[j][k]==flag)n1++;elsebreak;}/*向左下方数*/for(j=x,k=y;j>=1,k=5){return(1);break;}return(0);break;}}voidmain(){intgdriver=VGA,gmode=VGAHI;clrscr();attention();initgraph(&gdriver,&gmode,"c:\\tc");/*setwritemode(XOR_PUT);*/flag=1;draw_box();do{step_x=0;step_y=0;/*draw_circle(step_x,step_y,8);*/judgewho(step_x-1,step_y-1);do{while(bioskey(1)==0);key=bioskey(0);judgekey();}while(key!=SPACE&&key!=ESC);}while(key!=ESC);closegraph();}

Ⅸ 经典C语言程序例子

题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。

(9)c语言小程序100例扩展阅读:

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

Ⅹ 有什么好玩的C语言小程序

一个“歼灭敌机”的小游戏,DEVc++编译通过:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <windows.h>

#include <time.h>

#define zlx 10 //增量坐标(x)让游戏框不靠边

#define zly 3 //增量坐标(y)让游戏框不靠边

#define W 26 //游戏框的宽度

#define H 24 //游戏框的高度

int jiem[22][22]={0}, wj=10; //界面数组, 我机位置(初值为10)

int speed=4,density=30, score=0,death=0; //敌机速度, 敌机密度, 玩家成绩,死亡次数

int m=0,n=0; // m,n是控制敌机的变量

void gtxy (int x, int y) //控制光标位置的函数

{ COORD pos;

pos.X = x; pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

voidColor(inta) //设定颜色的函数(a应为1-15)

{ SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), a ); }

void yinc(int x=1,int y=0) //隐藏光标的函数

{ CONSOLE_CURSOR_INFO gb={x,y}; //y设为0即隐藏

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &gb);

}

void csh( ) //初始化函数

{ int i;

Color(7);

gtxy(zlx,zly); printf("╔"); gtxy(zlx+W-2,zly); printf("╗"); //左上角和右上角的框角

gtxy(zlx,zly+H-1); printf("╚"); gtxy(zlx+W-2,zly+H-1); printf("╝"); //下边两框角

for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly); printf("═"); } //打印上横框

for(i=2;i<W-2;i+=2) {gtxy(zlx+i,zly+H-1); printf("═"); } //打印下横框

for(i=1;i<H-1;i++) { gtxy(zlx,zly+i); printf("║"); } //打印左竖框

for(i=1;i<H-1;i++) {gtxy(zlx+W-2,zly+i); printf("║"); } //打印右竖框

Color(14);gtxy(19,2); printf("歼灭敌机"); Color(10);

gtxy(37,5); printf("设置:Esc ");

gtxy(37,7); printf("发射:↑ ");

gtxy(37,9); printf("控制:← → ");

gtxy(37,11);printf("得分:%d",score);

gtxy(37,13); printf("死亡:%d",death);

yinc(1,0);

}

void qcjm( ) //清除界面函数

{int i,j;

for(i=0;i<H-2;i++)

for(j=0;j<W-4;j++){gtxy(zlx+2+j,zly+1+i);printf(" ");}

}

void feiji( ) //飞机移动函数

{int i,j;

for(i=21;i>=0;i--) //从底行往上是为了避免敌机直接冲出数组

for(j=0;j<22;j++)

{if(i==21&&jiem[i][j]==3)jiem[i][j]=0; //底行赋值0 以免越界

if(jiem[i][j]==3)jiem[i][j]=0, jiem[i+1][j]=3;

}

if(jiem[20][wj]==3&&jiem[21][wj]==1) death++;

}

void zidan( ) //子弹移动函数

{ int i,j;

for(i=0;i<22;i++)

for(j=0;j<22;j++)

{if(i==0&&jiem[i][j]==2) jiem[i][j]=0;

if(jiem[i][j]==2) {if(jiem[i-1][j]==3) score+=100,printf("7");

jiem[i][j]=0,jiem[i-1][j]=2; }

}

}

void print( ) //输出界面函数

{int i,j;

qcjm( );

for(i=0;i<22;i++)

for(j=0;j<22;j++)

{ gtxy(12+j,4+i);

if(jiem[i][j]==3) {Color(13);printf("□");}

if(jiem[i][j]==2) {Color(10);printf(".");}

if(jiem[i][j]==1) {Color(10);printf("■");}

}

gtxy(37,11); Color(10);printf("得分:%d",score);

gtxy(37,13); printf("死亡:%d",death);

}

void setting( ) //游戏设置函数

{ qcjm( );

gtxy(12,4);printf("选择敌机速度:");

gtxy(12,5);printf(" 1.快 2.中 3.慢>>");

switch(getche( ))

{case '1': speed=2; break;

case '2': speed=4; break;

case '3': speed=5; break;

default: gtxy(12,6);printf(" 错误!默认值");

}

gtxy(12,7);printf("选择敌机密度:");

gtxy(12,8);printf(" 1.大 2.中 3.小>>");

switch(getche( ))

{case '1': density=20; break;

case '2': density=30;break;

case '3': density=40; break;

default: gtxy(12,9);printf(" 错误!默认值");

}

for(int i=0;i<22;i++)

for(int j=0;j<22;j++)jiem[i][j]=0;

jiem[21][wj=10]=1; jiem[0][5]=3;

gtxy(12,10);printf(" 按任意键保存...");

getch( );

qcjm( );

}

void run( ) //游戏运行函数

{ jiem[21][wj]=1; //值为1代表我机(2则为子弹)

jiem[0][5]=3; //值为3代表敌机

SetConsoleTitle("歼灭敌机"); //设置窗口标题

while(1)

{if (kbhit( )) //如有键按下,控制我机左右移动、发射或进行设定

{int key;

if((key=getch( ))==224) key=getch( );

switch(key)

{ case 75: if(wj>0) jiem[21][wj]=0,jiem[21][--wj]=1; break;

case 77: if(wj<20)jiem[21][wj]=0,jiem[21][++wj]=1;break;

case 72: jiem[20][wj]=2; break;

case 27: setting( );

}

}

if(++n%density==0) //控制产生敌机的速度

{ n=0;srand((unsigned)time(NULL));

jiem[0][rand( )%20+1]=3;

}

if(++m%speed==0) {feiji( ); m=0;} //控制敌机移动速度(相对子弹而言)

zidan( );

print( );

Sleep(120); //延时120毫秒

}

}

int main( )

{csh( );

run( );

return 0;

}

新手要方便写代码,可以收藏下面几个自编函数:

  • SetConsoleTitle("俄罗斯方块"); //设置窗口左上角标题栏处出现"俄罗斯方块"5个字

  • srand( (unsigned) time(NULL) ); //初始化随机数发生器

  • n= rand( ) % 20; //产生随机数0-19中的一个. 如 rand( )%5 就产生0-4中的一个数

    SetConsoleTitle( )函数在<windows.h>里,srand( )函数与rand( )函数要配合用,

    就是同时要用,在<stdlib.h>里。如果 rand( )%10+1 就产生1-10之中的一个数。

  • Sleep(300); //延时300毫秒(就是程序暂停300毫秒后继续运行)

  • system("cls"); //清屏(把窗口里的内容全部清除,光标定于(0,0)位置处)

    这两个函数都在<windows.h>里。开头4个自编函数 编写如下:

  • void gtxy (int x, int y) //控制光标位置的函数

    { COORD pos;

    pos.X = x;

    pos.Y = y;

    SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

    }

    void Color (int a) //设定颜色的函数

    { SetConsoleTextAttribute ( GetStdHandle ( STD_OUTPUT_HANDLE ),a ); }

    void yinc (int x,int y) //隐藏光标的函数

    { CONSOLE_CURSOR_INFO gb={ x , y }; //gb代表光标

    SetConsoleCursorInfo ( GetStdHandle(STD_OUTPUT_HANDLE), &gb );

    }

    void kou(int w,int h) //设置窗口大小的函数

    {HANDLE hl=GetStdHandle ( STD_OUTPUT_HANDLE ) ;

    COORD size={ w , h };

    SetConsoleScreenBufferSize( hl , size );

    SMALL_RECT rc={ 0, 0, w, h };

    SetConsoleWindowInfo( hl, 1, &rc );

    }

    最后这个函数,参数w是宽h是高。里边5行中第一行定义了句柄型变量hl,并给它赋值。

    第二行定义了坐标型结构体变量size,它的取值决定了缓冲区的大小。第三行就是使用

    size的值设置好缓冲区大小。第四行定义了变量rc,它的值决定当前窗口显示的位置与

    大小(不得超过缓冲区的大小)。前两个0,0是从缓冲区左上角0列0行位置处开始,后两

    个参数可以小于w和h.比如rc={0,0,w-10,h-5}; 最后一行使用rc的值设置好窗口,中间

    那个参数要为" 1 "或写“ true ”才有效。

热点内容
python3graphics 发布:2025-02-05 21:36:57 浏览:511
为什么英雄联盟一个服务器进不去 发布:2025-02-05 21:36:12 浏览:182
服务器搭建网站开发教材 发布:2025-02-05 21:31:57 浏览:567
pythonrose 发布:2025-02-05 21:31:46 浏览:923
php数组从小到大排序 发布:2025-02-05 21:26:01 浏览:324
单片机存储器扩展 发布:2025-02-05 21:17:35 浏览:966
sqler图 发布:2025-02-05 21:10:58 浏览:630
网络编程android 发布:2025-02-05 21:05:49 浏览:346
python时间毫秒数 发布:2025-02-05 20:51:32 浏览:331
clash安卓如何切换节点 发布:2025-02-05 20:48:20 浏览:890