当前位置:首页 » 编程语言 » 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语言环境,声明两个整数型变量。