當前位置:首頁 » 編程語言 » c語言編寫的創意程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言編寫的創意程序

發布時間: 2023-06-08 14:48:17

① 經典c語言程序例子

題目01:在一個已知的字元串中查找最長單詞,假定字元串中只含字母和空格,空格用來分隔不同的單詞。

(1)c語言編寫的創意程序擴展閱讀:

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

② 急求,一個簡單的C語言程序,要求至少60行,要有些知識點,最好是有創意的。

顯示年日歷的程序
1、 main1.cpp文件清單:
#include <iostream.h>
#include "head1.h"
#include <iomanip.h>//setw()函數的頭文件
extern int year;//全局變數
void main()
{
int i;
cout<<"請輸入您要查詢的年份:";
cin>>year;
int n=weekday(year);//調用weekday函數
for(i=1;i<=12;i++)//總共的月份 12
{
int lemp=1;
cout<<endl<<year<<"年"<<setw(27)<<i<<"月"<<endl;
cout<<"-----------------------------------"<<endl;
char weekd[7][20]={"Mon","Tue","Wed","Thu","Fri","Sta","Sun"};//記錄星期一到星期日
for(int j=0;j<7;j++)
cout<<setw(5)<<weekd[j];//setw(5)表示緊跟其後的數據項的輸出佔5個字元寬
cout<<endl<<"-----------------------------------"<<endl;
for(int k=1;k<n;k++,lemp++)//輸入每月第一天的起始位置,用空格補充
cout<<setw(5)<<" ";
int m=monthday(i);//調用monthday函數
for(int d=1;d<=m;d++,lemp++) //輸出每月的天數
{
cout<<setw(5)<<d;
if(lemp==7) //控制一行輸出到星期天,如果到星期天則重新計數
{
cout<<endl;
lemp=0;
}
}
n=lemp%7; //當輸出完一個月後,記錄這個月的最後一天在哪,尋找下個月的
if(n==0) //第一天的起始位置
n=7;
cout<<endl<<"-----------------------------------"<<endl<<endl<<endl;
}
}
2、isl.cpp文件清單:
#include <iostream.h>
int isleapyear(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;//閏年返回值為1
else
return 0;
}
3、weekday.cpp文件清單:
#include <iostream.h>
int weekday(int year)
{
int n=year-2007;//已知2007年的元旦剛好是星期一
n=n+(n-1)/4+1;// 判斷,以每年52個整星期計算該年比2007年多出來的天數
n=n%7;
if(n==0)
return 7; //返回輸入的年份的元旦是星期幾
else
return n;
}
4、monthday.cpp文件清單:
#include <iostream.h>
#include "head1.h"//需要調用head1中的函數
int year;
int monthday(int i)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
return 31;
else if(i==2)
{
if(isleapyear(year)==1)//調用isleapyear函數
return 29;
else return 28;
}
else return 30;

}5、head1.h文件清單:
int isleapyear(int year);//函數原型聲明
int weekday(int year);//函數原型聲明
int monthday(int i);//函數原型聲明

③ 用C語言如何編寫一個石頭剪子布的程序

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

void main()

{

int com,user;

char c;

srand((unsigned)time(NULL)); //初始化隨機數,如果沒有這條語句,每次運行電腦產生的隨機數序列都是一樣的

printf("進入游戲 ");

do{

printf("請出拳(1.剪刀、2.石頭、3.布):");

scanf("%d",&user);

com=rand()%3+1; //產生1-3范圍內的隨機數

printf("電腦出%s ",com==1?"剪刀":com==2?"石頭":"布");

switch(com-user) //用電腦產生的數和用戶輸入的數的差值來判斷勝負

{

case 0:

printf("平手 ");

break;

case 1:

case -2:

printf("電腦贏了 ");

break;

case -1:

case 2:

printf("你贏了 ");

}

printf("繼續游戲按Y鍵、其它鍵退出");

getchar();

c=getchar();

}while(c=='y' || c=='Y');

printf("已經退出遊戲");

}

(3)c語言編寫的創意程序擴展閱讀

C++編程: 石頭剪子布

#include<cstdio>

#include<iostream>

using namespace std;

int main()

{

int n;

char a[10],b[10];

cin>>n;

int c[n+3];

for(int i=1;i<=n;i++)

{

cin>>a>>b;

if(a[0]=='R')

{

if(b[0]=='R')

{

c[i]=0;

}

if(b[0]=='S')

{

c[i]=1;

}

if(b[0]=='P')

{

c[i]=2;

}

}

else if(a[0]=='S')

{

if(b[0]=='R')

{

c[i]=2;

}

if(b[0]=='S')

{

c[i]=0;

}

if(b[0]=='P')

{

c[i]=1;

}

}

else if(a[0]=='P')

{

if(b[0]=='R')

{

c[i]=1;

}

if(b[0]=='S')

{

c[i]=2;

}

if(b[0]=='P')

{

c[i]=0;

}

}

}

for(int i=1;i<=n;i++)

switch(c[i])

{

case 0:

{

printf("Tie ");break;

}

case 1:

{

printf("Player1 ");break;

}

case 2:

{

printf("Player2 ");break;

}

}

return 0;

}

④ 超酷的C語言

C語言常常讓人覺得它所能表達的東西非常有限。它不具有類似第一級函數和模式匹配這樣的高級功能。但是C非常簡單,並且仍然有一些非常有用的語法技巧和功能,只是沒有多少人知道罷了。


一、指定的初始化


很多人都知道像這樣來靜態地初始化數組:

C99標准實際上支持一種更為直觀簡單游遲岩的方式來初始化各種不同的集合類數據(如:結構體,聯合體和數組)。


二、數組


我們可以指定數組的元素來進行初始化。這非常有用,特別是當我們需要根據一組#define來保持某種映射關系的同步更新時。來看看一組錯誤碼的定義,如:



現在,假設我們想為每個錯誤碼提供一個錯誤描述的字元串。為了確保數組保持了最新的定義,無論頭文件做了任何修改旦橘或增補,我們都可以用這個數組指定的語法。


這樣就可以靜態分配足夠的空間,且保證最大的索引是合法的,同時將特殊的索引初始化為指定的值,並將剩下的索引初始化為0。

三、結構體與聯合體


用結構體與聯合體的欄位名稱來初始化數據是非常有用的。假設我們定義:

然後我們這樣初始化struct point:

當我們不想將所有欄位都初始化為0時,這種作法可以很容易的在編譯時就生成結構體,而不需要專門調用一個初始化函數。

對聯合體來說,我們可以使用相同的辦法,只是我們只用初始化一個欄位。


四、宏列表


C中的一個慣用方法,是說有一個已命名的實體列表,需要為它們中的每一個建立函數,將它們中的每一個初始化,並在不同的代碼模塊中擴展它們的名字。這在Mozilla的源碼中經常用到,我就是在那時學到這個技巧的。例如,在我去年夏天工作的那個項目中,我們有一個針對每個命令進行標記的宏列表。其工 作方式如下:



它定義了一個FLAG_LIST宏,這個宏有一個參數稱之為 _ ,這個參數本身是一個宏,它能夠調用列表中的每個參數。舉一個實際使用的例子可能更能直觀地說明問題。假設我們定義了一個宏DEFINE_FLAG,如:



對FLAG_LIST(DEFINE_FLAG)做擴展能夠得到如下代碼:



接著,對每個參數都擴展DEFINE_FLAG宏,這樣我們就得到了enum如下:


接著,我們可能要定義一些訪問函數,這樣才能更好的使用flag列表:


一步步的展示其過程是非常有啟發性的,如果對它的使用還有不解神御,可以花一些時間在gcc –E上。


五、編譯時斷言


這其實是使用C語言的宏來實現的非常有「創意」的一個功能。有些時候,特別是在進行內核編程時,在編譯時就能夠進行條件檢查的斷言,而不是在運行時進行,這非常有用。不幸的是, C99標准還不支持任何編譯時的斷言。

但是,我們可以利用預處理來生成代碼,這些代碼只有在某些條件成立時才會通過編譯(最好是那種不做實際功能的命令)。有各種各樣不同的方式都可以做到這一點,通常都是建立一個大小為負的數組或結構體。最常用的方式如下:


如果(condition)計算結果為一個非零值(即C中的真值),即! (condition)為零值,那麼代碼將能順利地編譯,並生成一個大小為零的結構體。如果(condition)結果為0(在C真為假),那麼在試圖生成一個負大小的結構體時,就會產生編譯錯誤。

它的使用非常簡單,如果任何某假設條件能夠靜態地檢查,那麼它就可以在編譯時斷言。例如,在上面提到的標志列表中,標志集合的類型為uint32_t,所以,我們可以做以下斷言:


它擴展為:



現在,假設Total<=32。那麼-!(Total <= 32)等於0,所以這行代碼相當於:



這是一個合法的C代碼。現在假設標志不止32個,那麼-!(Total <= 32)等於-1,所以這時代碼就相當於:



因為位寬為負,所以可以確定,如果標志的數量超過了我們指派的空間,那麼編譯將會失敗。

⑤ C語言編寫閃爍的紅心的程序

1、首先第一步要用在一個項目的spalsh界面,進入應用後彈出這個界面,閃爍完畢後跳入主界面,比純粹的設置背景圖片的splash好看炫酷很多。


⑥ 用c語言編寫一個簡易的抽獎程序,

用data.txt文件保存以下內容:

13725528132 李桂榮
13725528131 李二來
13725528133 張榮剛
13725528130 榮南
13725528137 王三
13725528138 吳立
13725528139 郭德綱
13725528140 周星馳
13725528141 張曼玉
13725528142 張藝謀
13725528152 秦香蓮
13725528162 潘金蓮
13725528172 李大嘴
13725528182 展堂

//源代碼如下
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX_NUM 9999

//定義保存人名和電話的數據結構
struct Person
{
char name[20];
char telno[15];
char award;
};

int num = 0; //統計人數
FILE *fp; //文件指針
Person persons[MAX_NUM]; //定義數組

int awarder_1[1] = {-1}; //一等獎
int awarder_2[2] = {-1, -1}; //二等獎
int awarder_3[5] = {-1, -1, -1, -1, -1};//三等獎

//讀取文件
void readdata()
{
int i = 0; //數組下標
Person person;
//文件打開
fp = fopen("data.txt", "r");
if (fp == NULL)
{
printf("打開文件data.txt失敗!\n");
return;
}
//當文件不為空
while (!feof(fp))
{
num ++;
fscanf(fp, "%s", person.telno);
fscanf(fp, "%s", person.name);
person.award = 'F';
persons[i++] = person;
}
}

//初始化標識
void init()
{
for(int i = 0; i < num; i++)
{
persons[i].award = 'F';
}
}

//顯示單個中獎信息
void info( int i)
{
printf("手機號碼: %s 姓名: %s\n", persons[i].telno, persons[i].name);
}

void main()
{
char again = 'Y';
//讀取文件
readdata();

printf("簡單抽獎程序\n");
srand((long)time(0));

while(again == 'Y' || again == 'y')
{
//初始化標識
init();

printf("\n開始抽第一等獎(1名),按任意鍵開始...\n");
getchar();
awarder_1[0] = abs(rand() % num);
while (persons[awarder_1[0]].award == 'T')
{
awarder_1[0] = rand() % num;
}
persons[awarder_1[0]].award = 'T';

info(awarder_1[0]);

printf("\n開始抽第二等獎(2名)\n");
for (int i = 0; i < 2; i++)
{
printf("\n第%d個二等獎,按任意鍵開始...\n", i+1);
getchar();
awarder_2[i] = rand() % num;
while (persons[awarder_2[i]].award == 'T')
{
awarder_2[i] = rand() % num;
}
persons[awarder_2[i]].award = 'T';
info(awarder_2[i]);
}

printf("\n\n開始抽第三等獎(5名)\n");
for (i = 0; i < 5; i++)
{
printf("\n第%d個三等獎,按任意鍵開始...\n", i + 1);
getchar();

awarder_3[i] = rand() % num;
while (persons[awarder_3[i]].award == 'T')
{
awarder_3[i] = rand() % num;
}
persons[awarder_3[i]].award = 'T';
info(awarder_3[i]);
}

printf("\n是否重新開始抽獎?(Y or N)...\n");
again = getchar();
}

getchar();
return;
}

⑦ 誰有用C語言寫的有創意的軟體麻煩發過來代碼

#include<dcs2012_Hensen.h>
#include<stdio.h>
int day=1;
long long road=0;
long float determination=1, destination=4*365;
float *cindy;
main()
{
for(;road<=destination;road+=day)
{
cindy=&road;
if(determination)*cindy=destination;
destination++;
printf("%f/n",*cindy);
}
}
/*This program shall never end.
Although the destination is moving forward,
if Cindy has determination, she can keep on to the goal.*/

⑧ 用C語言如何編寫一個石頭剪子布的程序

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

void main()

{

int com,user;

char c;

srand((unsigned)time(NULL)); //初始化隨機數,如果沒有這條語句,每次運行電腦產生的隨機數序列都是一樣的

printf("進入游戲 ");

do{

printf("請出拳(1.剪刀、2.石頭、3.布):");

scanf("%d",&user);

com=rand()%3+1; //產生1-3范圍內的隨機數

printf("電腦出%s ",com==1?"剪刀":com==2?"石頭":"布");

switch(com-user) //用電腦產生的數和用戶輸入的數的差值來判斷勝負

{

case 0:

printf("平手 ");

break;

case 1:

case -2:

printf("電腦贏了 ");

break;

case -1:

case 2:

printf("你贏了 ");

}

printf("繼續游戲按Y鍵、其它鍵退出");

getchar();

c=getchar();

}while(c=='y' || c=='Y');

printf("已經退出遊戲");

}

(8)c語言編寫的創意程序擴展閱讀

C++編程: 石頭剪子布

#include<cstdio>

#include<iostream>

using namespace std;

int main()

{

int n;

char a[10],b[10];

cin>>n;

int c[n+3];

for(int i=1;i<=n;i++)

{

cin>>a>>b;

if(a[0]=='R')

{

if(b[0]=='R')

{

c[i]=0;

}

if(b[0]=='S')

{

c[i]=1;

}

if(b[0]=='P')

{

c[i]=2;

}

}

else if(a[0]=='S')

{

if(b[0]=='R')

{

c[i]=2;

}

if(b[0]=='S')

{

c[i]=0;

}

if(b[0]=='P')

{

c[i]=1;

}

}

else if(a[0]=='P')

{

if(b[0]=='R')

{

c[i]=1;

}

if(b[0]=='S')

{

c[i]=2;

}

if(b[0]=='P')

{

c[i]=0;

}

}

}

for(int i=1;i<=n;i++)

switch(c[i])

{

case 0:

{

printf("Tie ");break;

}

case 1:

{

printf("Player1 ");break;

}

case 2:

{

printf("Player2 ");break;

}

}

return 0;

}

⑨ C語言設計一個簡單的圖形動畫,用turboc2運行,怎樣編寫使圖形動起來的代碼

1、首先,打開vc6.0,建立程序編寫頁面,建立C語言環境,聲明兩個整數型變數。