[用简单的C语言实现带括号的四则运算]#include/*库文件包含*/ #include/*用于字符串操作*/ #include/*用于exit函数*/ /************************************************************************** int check...+阅读
1. 能够实现基本的加减乘除
2.能够实现乘方计算
3.能够实现求余#include
霍夫曼编码用c语言实现
以前写的,证明最优子结构,随便一本算法书上就有. #include#include#define NIL -2 #define Size_Max_bm 30 #define left(i) (2*(i)+1) #define right(i) (2*(i)+2) #define swap(a,b) {cjys t;t=(a);(a)=(b);(b)=t;} #define parent(i) ((i)%2?((i)-1)/2:((i)-2)/2) typedef struct cjys { char sj; int pl; struct cjys *left; struct cjys *right; }cjys; typedef struct cjdl { int size; int leapsize; cjys *p; }cjdl; cjys *fpnn(void); void input(cjdl *p); cjys *fpnn(void); void zxdwh(cjys *p, int i, int leapsize); void rd(cjdl *p, cjys tp); cjys cd(cjdl *p); void hbs(cjdl *p); cjys *cjs(cjdl *p); void bls(cjys *p,int *jl, int i); void disp(char *tp, cjys *p); int main() { cjdl p; char x[255]; cjys *re=NULL; int jl[Size_Max_bm]; input(&p); re=cjs(&p); printf("对照编码图为:\n"); bls(re,jl,0); freopen("CON","r",stdin); printf("输入Huffman码(VLC):"); scanf("%s",x); disp(x,re); system("pause"); } void input(cjdl *p) { int i; cjys *tp; tp=fpnn(); printf("输入字母个数:"); scanf("%d", &p->size); p->p=malloc(sizeof(cjys)*p->size); p->leapsize=0; for(i = 0; isize;i++) { printf("输入第%d字母:",i+1),scanf(" %c",&tp->sj); printf("输入出现次数(频率整数):"),scanf("%d",&tp->pl); rd(p,*tp); } free(tp); } cjys *fpnn(void) { cjys *p=NULL; p=malloc(sizeof(cjys)); p->left=NULL; p->right=NULL; return p; } void zxdwh(cjys *p, int i, int leapsize) { int l=left(i), r=right(i), mini=i; if(lleapsize]=tp; int j=p->leapsize,k=parent(j); while(k>=0 & p->p[j].plp[k].pl) { swap(p->p[j],p->p[k]); j=k; k=parent(j); } p->leapsize++; } cjys cd(cjdl *p) { if(p->leapsize == 0) { printf("队列已空!"); exit(0); } cjys tp=p->p[0]; p->leapsize--; p->p[0]=p->p[p->leapsize]; zxdwh(p->p,0,p->leapsize); return tp; } void hbs(cjdl *p) { cjys *p1=NULL, *p2=NULL; cjys tp; p1=fpnn(); p2=fpnn(); *p1=cd(p); *p2=cd(p); tp.left=p1; tp.right=p2; tp.pl=p1->pl+p2->pl; tp.sj=NIL; rd(p,tp); } cjys *cjs(cjdl *p) { int i, n=p->leapsize; cjys *tp=NULL; tp=fpnn(); for(i = 0; ip[0]; return tp; } void bls(cjys *p, int *jl, int i) { if(p == NULL) return; if(p->sj!=NIL) { int i2; printf("%c:",p->sj); for(i2 = 0; i2left,jl,i+1); jl[i]=1; bls(p->right,jl,i+1); } void disp(char *tp, cjys *p) { cjys *ttp=NULL; int pd=0; while
(1) { ttp=p; while
(1) { if(ttp->sj != NIL) { printf("%c",ttp->sj); break; } if(*tp == '\0') { pd=1; break; } if(*tp++ == '0' ) ttp=ttp->left; else ttp=ttp->right; } if(pd) break; } }
C语言中一个算术练习程序的实现
#include
#include
#include
#include
#include
#define N 99
void sign(char n)
{
int a,b,c;
srand( (unsigned)time( NULL ) );
a=1+(int)(10*rand()/(RAND_MAX+1.0)); //随机数产生
b=1+(int)(10*rand()/(RAND_MAX+1.0));
printf("%d%c%d=",a,n,b);
scanf("%d",&c);
if(n=='+')
{
if(c==a+b) printf("答对了!\n");
else printf("答案是%d\n",a+b);
}
if(n=='-')
{
if(c==a-b) printf("答对了!\n");
else printf("答案是%d\n",a-b);
}
if(n=='*')
{
if(c==a*b) printf("答对了!\n");
else printf("答案是%d\n",a*b);
}
if(n=='/')
{
if(c==a/b) printf("答对了!\n");
else {printf("答案是%d\n",a/b);}
}
}
void menu()
{
printf("1.加法运算\n");
printf("2.减法运算\n");
printf("3.乘法运算\n");
printf("4.除法运算\n");
printf("0.退出程序\n");
}
void main()
{
int num,i;
for(i=0;;i++)
{
while(1){
menu();
printf("\n请选择功能:");
scanf("%d",&num);
switch(num)
{
case 4:sign('/');break;
case 3:sign('*');break;
case 2:sign('-');break;
case 1:sign('+');break;
case 0:return ;
}
printf("按任意键返回菜单\n");
getch();
system("cls"); //清屏
}
}
}
用c语言做一个产生加法算术题的程序
#include
以下为关联文档:
C语言定义一个函数实现两个集合的相加运算#include #include #include #define N 7 typedef enum { add, nul, sub, div1, yu, l, r }OP; int a[N][N] = { { 0, 0, -1, -1, -1, 1, 2 }, { 0, 0, -1, -1, -1, 1, 2 },...
c语言离散数学集合复合运算的代码 R//说明:输入的格式需要提示按输入,因为要获取正确的有序对才能进行复合运算/**************输入格式如:a b, #,# 退出*************** 输入:a b 输入:b t 输入:t d 输入:s j 输入:j i...
用C编程集合运算及实现详细c代码:#include#include#define MAX_SET_NUM 5#define YES 1#define NO 0typedef struct data_set{ int arr_A[MAX_SET_NUM]; int arr_B[MAX_SET_NUM]; int Intersection...
可进行四则运算的仿windows计算器c语言代码#include <stdio.h> void main() { double a,b; char c; scanf("%lf",&a); while((c=getchar())==' '); scanf("%lf",&b); switch(c) { case '+': { printf("%lf\n",a+b); break;...
自己用代码实现C语言库函数memcpy代码如下: void *memccpy(void *s1, const void *s2, int c, size_t n) { char *mys1 = (char *) s1; char *mys2 = (char *) s2; while (--n >= 0) if ((*mys1++ = *mys2++)...
用c语言编写一个程序实现以下功能1 2 3 4 5 6 7 8 9 10 #include "stdio.h" intmain(intargc,char*argv[]){ 5261int a,b; doublex,y; charch1,ch2; printf("Please enter the data...\n"); scanf("%d%d%lf%lf %c...
帮我随便写下用C语言实现并归排序的代码int a[100]; void Merge(int head,int mid,int tail) { int temp[tail-head+1]; int top=-1; int i=head,j=mid+1; while (i<=mid && j<=tail) { if (a[i]>a[j]) te...
求解一个C语言调用递归函数实现5个数字反序打印的代码#include <stdio.h> #include <math.h> int reverse(int value); void main() { int a,value; scanf("%d",&value); a=reverse(value); printf("\n%d",a); } int reverse(int va...
计算机初级C语言程序设计就是设计一个简单程序的源代码#include<stdio.h> void main ( ) { double a,b,c,s,v; printf("input a,b,c:");//要有引号,不要回车 scanf("%lf%lf%lf",&a,&b,&c);//double对应%lf long float s=a*b; v=a*b*c; p...