當前位置:首頁 » 編程語言 » 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 」才有效。

熱點內容
計算機代碼經典編程 發布:2025-02-05 19:25:09 瀏覽:756
安卓抖音怎麼換不了白色背景 發布:2025-02-05 19:11:16 瀏覽:810
安卓手機如何變成手寫 發布:2025-02-05 19:11:14 瀏覽:979
esp32搭建自己的伺服器 發布:2025-02-05 18:58:00 瀏覽:318
wampphp升級 發布:2025-02-05 18:50:53 瀏覽:920
源碼地帶 發布:2025-02-05 18:46:37 瀏覽:615
我的世界伺服器怎麼騎別人的頭 發布:2025-02-05 18:46:32 瀏覽:90
怎麼卸載ftp賬號 發布:2025-02-05 18:41:52 瀏覽:63
SQL指定的服務並未以 發布:2025-02-05 18:40:09 瀏覽:974
電腦連接不了伺服器什麼意思 發布:2025-02-05 18:34:46 瀏覽:356