1.c Դ?码实?ʵ??
2.用C语言写的计算器源代码
3.C语言10个经典开源项目
4.Cè¯è¨çç»å
¸ç¼ç¨ä¾å
c Դ??ʵ??
探索C语言的魅力,让我们以一种独特的码实方式表达爱意。在编程的码实世界里,用代码编织情感,码实可以创造出令人瞩目的码实艺术品。下面是码实c 逆向 源码几个基础的C语言爱心代码展示,让你一窥C语言的码实美学。
首先,码实让我们从简单的码实图案开始。一个简单的码实爱心图案可以用以下代码实现:
c
#include
int main() {
int i, j;
for (i = 0; i <= 5; i++) {
for (j = 0; j <= 5; j++) {
if ((i + j == 5) || (i - j == 3) || (i == j))
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
这段代码通过控制打印星号(*)和空格的输出,形成了一个心形图案。码实你可以在编译器上运行这段代码,码实亲眼见证爱心的码实诞生。
接下来,码实我们尝试更复杂一点的码实动态爱心代码。一个动态爱心可以随着输入参数的变化而变化大小和位置。下面是一个简单的动态爱心实现示例:
c
#include
int main() {
int i, j, n;
printf("请输入爱心的大小: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if ((i + j == n - 1) || (i - j == n - 1) || (i == j))
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
通过输入不同的数值,这个动态爱心可以展现出不同的大小和形状,增添更多的趣味性。
以上展示了几个基础和简单的C语言爱心代码。如果你对C语言充满热情,如何提取源码不妨继续探索更多可能,将爱意以代码的形式传达给世界。从这些代码出发,你可以不断尝试和改进,创造出更多独特的作品。
如果想获取更多C语言爱心源代码,可以访问以下链接:
docs.qq.com/doc/DV0hOY3...
用C语言写的计算器源代码
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
typedef float DataType;
typedef struct
{
DataType *data;
int max;
int top;
}Stack;
void SetStack(Stack *S,int n)
{
S->data=(DataType*)malloc(n*sizeof(DataType));
if(S->data==NULL)
{
printf("overflow");
exit(1);
}
S->max=n;
S->top=-1;
}
void FreeStack(Stack *S)
{
free(S->data);
}
int StackEmpty(Stack *S)
{
if(S->top==-1)
return(1);
return(0);
}
DataType Peek(Stack *S)
{
if(S->top==S->max-1)
{
printf("Stack is empty!\n");
exit(1);
}
return(S->data[S->top]);
}
void Push(Stack *S,DataType item)
{
if(S->top==S->max-1)
{
printf("Stack is full!\n");
exit(1);
}
S->top++;
S->data[S->top]=item;
}
DataType Pop(Stack *S)
{
if(S->top==-1)
{
printf("Pop an empty stack!\n");
exit(1);
}
S->top--;
return(S->data[S->top+1]);
}
typedef struct
{
char op;
int inputprecedence;
int stackprecedence;
}DataType1;
typedef struct
{
DataType1 *data;
int max;
int top;
}Stack1;
void SetStack1(Stack1 *S,int n)
{
S->data=(DataType1*)malloc(n*sizeof(DataType1));
if(S->data==NULL)
{
printf("overflow");
exit(1);
}
S->max=n;
S->top=-1;
}
void FreeStack1(Stack1 *S)
{
free(S->data);
}
int StackEmpty1(Stack1 *S)
{
if(S->top==-1)
return(1);
return(0);
}
DataType1 Peek1(Stack1 *S)
{
if(S->top==S->max-1)
{
printf("Stack1 is empty!\n");
exit(1);
}
return(S->data[S->top]);
}
void Push1(Stack1 *S,DataType1 item)
{
if(S->top==S->max-1)
{
printf("Stack is full!\n");
exit(1);
}
S->top++;
S->data[S->top]=item;
}
DataType1 Pop1(Stack1 *S)
{
if(S->top==-1)
{
printf("Pop an empty stack!\n");
exit(1);
}
S->top--;
return(S->data[S->top+1]);
}
DataType1 MathOptr(char ch)
{
DataType1 optr;
optr.op=ch;
switch(optr.op)
{
case'+':
case'-':
optr.inputprecedence=1;
optr.stackprecedence=1;
break;
case'*':
case'/':
optr.inputprecedence=2;
optr.stackprecedence=2;
break;
case'(':
optr.inputprecedence=3;
optr.stackprecedence=-1;
break;
case')':
optr.inputprecedence=0;
optr.stackprecedence=0;
break;
}
return(optr);
}
void Evaluate(Stack *OpndStack,DataType1 optr)
{
DataType opnd1,opnd2;
opnd1=Pop(OpndStack);
opnd2=Pop(OpndStack);
switch(optr.op)
{
case'+':
Push(OpndStack,opnd2+opnd1);
break;
case'-':
Push(OpndStack,opnd2-opnd1);
break;
case'*':
Push(OpndStack,opnd2*opnd1);
break;
case'/':
Push(OpndStack,opnd2/opnd1);
break;
}
}
int isoptr(char ch)
{
if(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='(')
return(1);
return(0);
}
void Infix(char *str)
{
int i,k,n=strlen(str);
char ch,numstr[];
DataType opnd;
DataType1 optr;
Stack OpndStack;
Stack1 OptrStack;
SetStack(&OpndStack,n);
SetStack1(&OptrStack,n);
k=0;
ch=str[k];
while(ch!='=')
if(isdigit(ch)||ch=='.')
{
for(i=0;isdigit(ch)||ch=='.';i++)
{
numstr[i]=ch;
k++;
ch=str[k];
}
numstr[i]='\0';
opnd= atof(numstr);
Push(&OpndStack,opnd);
}
else
if(isoptr(ch))
{
optr=MathOptr(ch);
while(Peek1(&OptrStack).stackprecedence>=optr.inputprecedence)
Evaluate(&OpndStack,Pop1(&OptrStack));
Push1(&OptrStack,optr);
k++;
ch=str[k];
}
else if(ch==')')
{
optr=MathOptr(ch);
while(Peek1(&OptrStack).stackprecedence>=optr.inputprecedence)
Evaluate(&OpndStack,Pop1(&OptrStack));
Pop1(&OptrStack);
k++;
ch=str[k];
}
while(!StackEmpty1(&OptrStack))
Evaluate(&OpndStack,Pop1(&OptrStack));
opnd=Pop(&OpndStack);
cout<<"你输入表达式的计算结果为"<<endl;
printf("%-6.2f\n",opnd);
FreeStack(&OpndStack);
FreeStack1(&OptrStack);
}
void main()
{
cout<<"请输入你要计算的表达式,并以“=”号结束。"<<endl;
char str[];
gets(str);
Infix(str);
=================================================================
哈哈!给分吧!
C语言个经典开源项目
C语言个经典开源项目
一、文件上传 源码Webbench
Webbench是一款用于linux下的网站压测工具,通过模拟多个客户端并发访问指定URL,测试网站在高负载下的性能。最多支持3万并发连接,代码简洁,总共不到行。
下载链接: home.tiscali.cz/~cz...
二、CMockery
CMockery是Google提供的一款轻量级的C语言单元测试框架,简洁且无需依赖其他开源包,对被测试代码的ping网站源码侵入性低。源代码不到3K行。
主要特点:免费开源、兼容旧版本编译器、无需C标准依赖。
下载链接: code.google.com/p/cmock...
三、Libev
Libev是一个基于epoll、kqueue等OS基础设施的高效事件驱动库,使用Reactor模式处理IO事件、定时器和信号,代码量少至4.版本的昆仑情缘源码多行。
下载链接: software.schmorp.de/pkg...
四、Memcached
Memcached是一个用于动态Web应用的高性能分布式内存对象缓存系统,通过缓存数据和对象减少数据库读取次数,加速动态数据库驱动网站的速度。Memcached-1.4.7版本代码量在K行左右。
下载地址: a distributed memory object caching system
五、SQLite
SQLite是一个开源的嵌入式关系数据库引擎,实现自包容、零配置,支持事务的SQL数据库,代码量约3万行,大小K。
下载地址: SQLite Home Page
六、Redis
Redis是一个使用ANSI C编写的开源数据结构服务器,代码量相对较小(4.5w行),几乎不依赖其他库,大部分为单线程。
下载地址: Redis
七、Nginx
Nginx是一款高性能的HTTP和反向代理服务器,设计简洁、功能丰富,具有低系统资源消耗的特性。已发布多年,获得广泛好评。
下载地址: http://nginx.org/en/download.html
八、UNIXv6内核源代码
UNIX V6内核源代码约为1万行,适合初学者理解。与现代操作系统内核源代码(如Linux的万行)相比,UNIX V6源代码在可理解性上有优势。
下载地址: minnie.tuhs.org/cgi-bin...
九、NetBSD
NetBSD是一个免费的、高度移植性的UNIX-like操作系统,支持多种平台,设计简洁、代码规范,具有多项先进特性,广受好评。
下载地址: The NetBSD Project
十、Tinyhttpd
Tinyhttpd是一个超轻量型HTTP服务器,全部代码仅行(包括注释),附带一个简单的客户端,可用于理解HTTP服务器的基本原理。
下载链接: Tiny HTTPd
Cè¯è¨çç»å ¸ç¼ç¨ä¾å
//æç»å ¸çå½ç¶æ¯HelloWorldäºã
#include "stdio.h"
int main(void)
{
printf("HelloWorld!\r\n");
}