用C语言和数据结构编写一个简单的程序(求源代码)

作者&投稿:酉沾 (若有异议请与网页底部的电邮联系)
用C语言和数据结构编写一个简单的程序~

这个涉及到的数据结构二叉 具体算法应该先对输入进来的数字进行二叉树的构造,然后再用同一种遍历方式对所有构造的二叉树进行遍历输出。

c语言是函数语言,所以画图也离不开各种图形函数:下面举几个简单的例子:
=======================================
1./*学用circle画圆形*/
#include "graphics.h"
main()
{int driver,mode,i;
float j=1,k=1;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
for(i=0;i<=25;i++)
{
setcolor(8);
circle(310,250,k);
k=k+j;
j=j+0.3;
}
getch();
}
2.//line画直线
#include "graphics.h"
main()
{int driver,mode,i;
float x0,y0,y1,x1;
float j=12,k;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(GREEN);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(5);
line(x0,y0,x0,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
j=j+10;
}
x0=263;y1=275;y0=263;
for(i=0;i<=20;i++)
{
setcolor(5);
line(x0,y0,x0,y1);
x0=x0+5;
y0=y0+5;
y1=y1-5;
}
getch();
}
3.//用rectangle画方形
#include "graphics.h"
main()
{int x0,y0,y1,x1,driver,mode,i;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(1);
rectangle(x0,y0,x1,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
}
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(150,40,"How beautiful it is!");
line(130,60,480,60);
setcolor(2);
circle(269,269,137);
}
===================================
更多有关c语言图形方面的函数及用法请参考c语言图形学的相关知识。

/*使用递归,理论上说可以对任意多位数组合,但位数太多了,可能发生堆栈溢出.
以下程序在VC++6.0中编译通过.
*/
#include <stdio.h>
#include <string.h>

#define MAX_NUMBER 6 //修改这个参数来允许最大的位数,现设为6位

void GetZhe (const char * preStr,const char * strNum)
{
char newPreStr[MAX_NUMBER];
char tmpStr[MAX_NUMBER];
int i,j,k,iCnt;

k = strlen(strNum);
if (k>MAX_NUMBER) {
printf("超过最大允许的位数:%d!",MAX_NUMBER);
return ;
}

switch(k)
{
case 0:
return;
case 1:
strcpy(tmpStr,preStr);
strcat(tmpStr,strNum);
printf("%s\r\n",tmpStr);
break;
default:
tmpStr[0] = 0;
for (i=0;i<k;i++)
{
strcpy(newPreStr,preStr);
j = strlen(newPreStr);
newPreStr[j] = strNum[i];
newPreStr[j+1] = 0;

iCnt = 0;
for (j=0;j<k;j++)
{
if(j != i)
{
tmpStr[iCnt] = strNum[j];
iCnt ++ ;
}
}
tmpStr[iCnt] = 0;

GetZhe(newPreStr,tmpStr);
}
}
}

int main(int argc, char* argv[])
{
GetZhe("","123456");
return 0;
}

排列不对,如果有0呢?

我是用递归写的
代码如下
如果合适的话我可以添加注释

#include <stdio.h>
 
void Combinate(char* str, char* strHead)
{
        int i;
        char _tmp[100] = {NULL}, _tmp2[100] = {NULL}, _ch[2] = {NULL};
        if(!str)
                return;
        if(strlen(str) == 1)
        {
                strcpy(_tmp, strHead);
                strcat(_tmp, str);
                printf("%s\n", _tmp);
                return;
        }
        strcpy(_tmp, "");
        for(i = 0; i < strlen(str); i++)
        {
                strcpy(_tmp, str);
                _tmp[i] = NULL;
                strcat(_tmp, _tmp + i + 1);
                _ch[0] = str[i];
                strcpy(_tmp2, strHead);
                strcat(_tmp2, _ch);
                Combinate(_tmp, _tmp2);
        }
}
 
int main()
{
        char str[100] = {NULL};
        scanf("%s", str);
        str[6] = NULL;
        printf("You have typed %s\nAnd the result is:\n\n", str);
        Combinate(str, "");
}

比如当输入123时
输出为
You have typed 123
And the result is:

123
132
213
231
312
321

输入1234
输出为
You have typed 1234
And the result is:

1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321

#include "stdio.h"
void main()
{
char a[6];
int i=0,j,k,s,p;
printf("please intput num:\n");
while((ch=getch())!='\r')
{
a[++i]=ch;
if(i==6)
{ printf("only can input 6 wei shu!\n"); break;}
}
for(i=0;i<6;i++)
for(j=0;j!=i;j++)
for(k=0;k!=i&&k!=j;k++)
for(s=0;s!=i&&s!=j&&s!=k;s++)
for(p=0;p!=i&&p!=j&&p!=k&&p!=s;p++)
printf("%d%d%d%d%d%d ",a[i],a[j],a[k],a[s],a[p]);
}

/*
使用单链表
输入时数字以空格隔开,以回车结束
*/
#include"stdio.h"
typedef struct node
{
int num;
node *next;
int checked;
}lnode,*llist;
void main()
{
char ch;
llist l=NULL;
lnode *t;
int checkedcount,rcount;
int a[6],i,j,k,record[1000]={0},n=1;
int b[6]={1,10,100,1000,10000,100000};
ch=' ';
i=0;
printf("输入数字:");
while(ch!='\n')
{
lnode *p=new lnode;
scanf("%d",&p->num);
p->next=l;
l=p;
i++;
ch=getchar();
}
rcount=0;
for(j=1;j<i;j++)
n*=10;
for(j=n;j<10*n;j++)
{
checkedcount=0;
for(t=l;t!=NULL;t=t->next)
t->checked=0;
for(k=0;k<i;k++)
{
a[k]=(j/b[k])%10;
for(t=l;t!=NULL;t=t->next)
if(t->num==a[k]&&t->checked==0)
{
t->checked=1;
checkedcount++;
break;
}
}
if(checkedcount==i)
{
record[rcount]=j;
rcount++;
}
}
for(j=0;j<rcount;j++)
printf("%-6d ",record[j]);
printf("\n");
}

有难度


c语言数据结构是什么
“数据结构”在计算机科学中是一门综合性的专业基础课。数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序的重要基础。计算机是一门研究用计算机进行信息表示和处理的科学。在...

我现在基本上学完了C语言,要继续学数据结构,请问是数据结构有没有C语...
我现在正在学习数据结构,比起C语言当然要难一些,不过它是以C语言作为基础的,它可以引导你把C程序编的更有水平,是相当重要的一门课程,但它比C语言更容易入门,如果你以前学过离散数学,那学习数据结构就更相对容易多了.

C语言和数据结构这两门课相比,哪个比较简单好学一点?
肯定是c语言了 数据结构要一种高级语言做基础的 也就是说你要学了c语言 或c++ 之类的高级语言 再来学数据结构了 否则的话 学数据结构将会相当困难!为什么这么说呢?数据结构=数据+结构,即数据元素之间的逻辑关系咯,要把这种逻辑关系在物理存储上进行表示 必须要借助一门高级语言啦 综上所述 先学c...

数据结构和C语言数据结构有什么区别
C语言是一种编程的语言,编程的语言有很多种。而数据结构则是讲的是关于一些数据的理论知识。可以说不管什么编程语言都能用到数据结构的知识,数据结构是程序设计基础又核心的知识。可以将c语言想象为一种语言,那么数据结构就是一种说话的技巧,如何让你说话更简洁,有逻辑,容易让人听懂,这表达技巧不管...

C语言编写数据结构查找算法
1、建立一个线性表,对表中数据元素存放的先后次序没有任何要求。输入待查数据元素的关键字进行查找。为了简化算法,数据元素只含一个整型关键字字段,数据元素的其余数据部分忽略不考虑。建议采用前哨的作用,以提高查找效率。2、查找表的存储结构为有序表,输入待查数据元素的关键字利用折半查找方法进行...

求高手用c语言编写两个程序(数据结构)
include"stdio.h"typedef struct la { int *data;int l;}La;typedef struct lb { int *data;int l;}Lb;typedef struct lc { int *data;int l;}Lc;void chushihua(La &a,Lb &b,Lc &c){ int i=0;a.data=new int[100];a.l=0;b.data=new int[100];b.l=0;c.data=new int...

c语言的数据结构有哪些
C语言的数据结构主要有:数组、结构体、联合体、枚举类型。1. 数组(Array):数组是一种线性数据结构,用于存储相同类型的元素。在C语言中,数组是一种基本的数据结构,可以用来存储整数、字符、浮点数等多种数据类型。数组的每个元素都可以通过索引进行访问,索引从0开始。数组的大小是固定的,一旦创建...

数据结构算法与c语言的关系?
C语言是工具,数据结构是基础,算法是核心且有难有易,初级的编程只要懂编程语言和一般算法即可,至于数据结构可作一般了解;中级的编程要对数据结构和算法有深入的理解和掌握;高级的编程就需要完全理解各种数据结构以及自己编写算法了!不过现在的很多程序员都是在中级阶段的居多吧!

请问是先学数据结构还是先学C?
很显然你首先需要会一门编程语言。数据结构可以在不同的语言下实现,你可以看常用的数据结构教材,有的基于C有的基于cpp有的基于JAVA,先学会一门语言(不一定非要是C)再看数据结构,有助理解各种算法、结构是怎样实现的。 其实编程这东西刚入门的时候我就当作在学一门新的语言,和学英语可以跟外国人...

没学过C语言可以学C语言数据结构与算法吗?
没有学过C语言或者C++的话,学数据结构(C语言版、C++版) 是非常困难的。因为数据结构是建立在对应的语言上的,所以说首先要学语言。建议学C语言,它是计算机语言的基础,C++、java 都是从C上发展过来的。学过C后 在学 C++\/java的话,你会发现事半功倍,而且对你 介入程序员行当很又帮助,而且...

海沧区15855559021: 用C语言和数据结构编写一个简单的程序(求源代码) -
佐甘小儿: /*使用递归,理论上说可以对任意多位数组合,但位数太多了,可能发生堆栈溢出. 以下程序在VC++6.0中编译通过. */ #include <stdio.h> #include <string.h>#define MAX_NUMBER 6 //修改这个参数来允许最大的位数,现设为6位void GetZhe ...

海沧区15855559021: 帮忙用C语言写个简单的小程序,题目如下:利用结构体数据类型编程 -
佐甘小儿: 先定义学生结构体:123456 structstudent { string name; string number; floatc_score; }; 定义学生数组:1234 constintstu_amount= 20;//学生人数 student stu[stu_amount]; for(intindex =0; index <stu_amount; index++) {/*一个个录入成绩*/} 汇总...

海沧区15855559021: 用数据结构(C语言版)编一程序能实现先序、中序、后序遍历二叉树并能打印出运行结果. -
佐甘小儿: #include <stdio.h> #include <stdlib.h> #define STACK_MAX_SIZE 30 #define QUEUE_MAX_SIZE 30 #ifndef elemType typedef char elemType; #endif /************************************************************************/ /* 以下是关于二叉树操作的11...

海沧区15855559021: c语言简单编程 -
佐甘小儿: 1.选择排序:sort(int a[10]) { int temp; int i,j; for(i=0;i<9;i++) { for(j=i;j<=9;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } } }2.也是选择排序:sort(int a[],int n) { int temp; int i,j; for(i=0;i<n-1;i++) { for(j=i;j<=n;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=...

海沧区15855559021: 帮忙用C语言编一个简单的程序 -
佐甘小儿: #include <stdio.h>#define N 3 /*只输入了三组数据,如果需要可以改成1016*/void sort(int *a, int m) {int i, j, temp;for (i = 0; i < m - 1; ++i)for (j = 0; j < m - i - 1; ++j)if (a[j] > a[j+1]){temp = a[j];a[j] = a[j+1];a[j+1] = temp;}return; }int main() {...

海沧区15855559021: 如何用c语言解决:编写一个简单的计算机程序,可以实现简单的加,减,乘,除运算. -
佐甘小儿: #include<stdio.h> void main() {double a,b;double result; //因为相除的结果不一定是整数char op;scanf("%f%f%c",&a,&b,&op);switch (op) {case '+': result=a+b;break;case '-': result=a-b;break;case '*': result=a*b;break;case '/': result=a/b;...

海沧区15855559021: 怎样用c语言来编程
佐甘小儿: 数据结构和算法就是程序,数据结构+算法=程序,给你一个最简单的程序:#include<stdio.h> void mian() { printf("holle world!\n"); }这是一个简单基础的输出程序

海沧区15855559021: 数据结构C语言简单小程序,求注解,本人菜鸟入门. -
佐甘小儿: #include int main() { int a[10],i,max; scanf("%d",&a[0]); max = a[0]; for ( i = 0 ; imax ) max = a[i]; } printf("the max one is %d\n",max); return 0; }

海沧区15855559021: 帮忙写一个程序啊,C语言或者数据结构的,急啊 -
佐甘小儿: # include<iostream.h> # include<string.h> # include<stdio.h> # include<stdlib.h> # include<fstream.h> //*****定义一个学生原子的的数据结构*****// struct stuatom {char *name;int id;char sex;float math, eng, comp, totll, aver;void show();void ...

海沧区15855559021: 用C语言帮我编一个程呀大侠们,很简单的
佐甘小儿: #inlcude <iostream> using namespace std; void main() {cout<<"输入一个数";int a;cin >>a;if ( a>=1 && a<=5 )cout<<a<<endl;elsecout<<"输入错误"<<endl; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网