加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数字雨+大数加法+割圆术求π+冒泡排序+快速排序+栈练习+链表练习

发布时间:2021-01-27 10:36:09 所属栏目:大数据 来源:网络整理
导读:数字雨 #include "stdafx.h"#include "windows.h"int _tmain(int argc,_TCHAR* argv[]){system("color 0a");register short i;while (1){i = rand() % 200;printf("%c",(i 50 ? (i % 2 ? '0' : '1') : ' '));if (i16)// 数字越小速度越快Sleep(i);}return

数字雨

#include "stdafx.h"
#include "windows.h"

int _tmain(int argc,_TCHAR* argv[])
{
	system("color 0a");
	register short i;
	while (1){
		i = rand() % 200;
		printf("%c",(i < 50 ? (i % 2 ? '0' : '1') : ' '));
		if (i<16)	// 数字越小速度越快
			Sleep(i);
	}
	return 0;
}

大数加法

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "string"

void savetoint(char *s,int *a,int weizhi)
{
	for (int j = 0; weizhi >= 0; j++,weizhi--)
	{
		a[j] = s[weizhi] - '0';
	}
}
void savetochar(int *a,char *s,int weizhi)
{
	int j = 0;
	for (; weizhi >= 0; j++,weizhi--)
	{
		s[j] = a[weizhi] + '0' ;
	}
	s[j] = '';
}
int plus(int *a,int *b,int size)
{
	for (int i=0; i <= size;i++)
	{
		b[i] += a[i];
		if (b[i] >= 10){
			b[i + 1] += b[i] / 10;
			b[i] %= 10;
		}
	}
	if (b[size + 1] != 0)
	{
		return size + 1;
	}
	else
	{
		return size;
	}
}
int _tmain(int argc,_TCHAR* argv[])
{
	int a[200] = { 0 },b[201]={0};
	char sa[201],sb[202];
	scanf_s("%s%s",sa,200,sb,200);
	int lena = strlen(sa) - 1,lenb = strlen(sb) - 1;
	savetoint(sa,a,lena);
	savetoint(sb,b,lenb);
	if (lena >= lenb)
	{
		savetochar(b,plus(a,lena));
	}
	else
	{
		savetochar(a,plus(b,lenb));
	}
	printf("%sn",sb);
	_wsystem(_T("PAUSE"));
	return 0;
}

割圆术求π

// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "math.h"
#include "stdlib.h"
#include "time.h"

double MonteCarlo(int n)
{
	// 蒙特卡罗法
	double x,y,pi;	// 记录坐标
	int sum=0;		// 统计满足条件的颗粒数量

	srand(time(NULL));	// 获取随机种子
	for (int i = 1; i<n; i++){
		x = (double)rand() / RAND_MAX;	// 产生0-1之间的随机数
		y = (double)rand() / RAND_MAX;	// 产生0-1之间的随机数
		if (x*x + y*y <= 1)
			sum++;		// 符合条件,数量+1
	}
	pi = 4.0*sum / n;	// 计算π
	return pi;
}

void cyclotomic(int n)
{
	// 割圆术
	int i;	// 计数器
	int N;	// 内接正N边形的边数
	double y1;	// 内接正N边形的边长
	double y2;	// 内接正2N边形的边长

	i = 0;
	N = 6;	// 从内接正6边形开始
	y1 = 1;	// 正6边形初始边长为1

	while (i<n){
		y2 = sqrt(2 - sqrt(4 - y1*y1));
		N = N * 2;	// 边数翻倍
		printf_s("第%2d次切割,为正%5d边形,PI=%.24fn",i+1,N,N*y2/2);
		y1 = y2;
		i++;
	}
}

int _tmain(int argc,_TCHAR* argv[])
{
	/*
	int n = 6;//正六边形开始
	double m = 1;//正六边形的边长为1
	double Pi = m*n*0.5;

	for (int i = 0; i < 20; ++i)
	{
		printf("第%2d次切割,为正%7d边形,π为:%.16fn",i,n,Pi);
		double t = 1 - sqrt((double)(1 - m*m*0.25));
		t *= t;
		n *= 2;//边数翻倍
		m = sqrt((double)(t + m*m*0.25));
		Pi = m*n*0.5;
	}
	*/
	
	printf_s("%fn",MonteCarlo(50000));
	getchar();
	return 0;
}


冒泡排序

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "time.h"
#include "stdlib.h"

inline void swap(int &a,int &b){
	int temp;
	temp = a;
	a = b;
	b = temp;
}

void BBsort(int *a,int m)
{
	int i,j,k;
	for (i = m-1; i > 0; i--)
	{
		for (j = 0; j < i; j++)
		{
			if (a[j] > a[j + 1])
			{
				swap(a[j],a[j + 1]);
			}
		}
		printf("第%d步排序结果为:",m - i);
		for (k = 0; k < m; k++)
		{
			printf("%d ",a[k]);
		}
		printf("n");
	}
}

int _tmain(int argc,_TCHAR* argv[])
{
	int arr[10];
	srand(time(NULL));
	for (int i = 0; i < 10; i++)
	{
		arr[i] = rand() / 1000 + 10;
		printf("%d ",arr[i]);
	}
	printf("nn");
	BBsort(arr,10);
	system("PAUSE");
	return 0;
}

快速排序

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "time.h"
#include "stdlib.h"
#define SIZE 20

inline void swap(int &a,int &b){
	int temp;
	temp = a;
	a = b;
	b = temp;
}

void quicksort(int *a,int numsize)/*a是整形数组,numsize是元素个数*/
{
	if (numsize>1)/*确保数组长度至少为2,否则无需排序*/
	{
		int left = 0,right = numsize - 1;
		int val = a[0];/*指定参考值val大小*/

		while (left<right)/*循环结束条件*/
		{
			/*从后向前搜索比val小的元素,找到后填到a[left]中并跳出循环*/
			for (; right>left; right--)
				if (a[right]<val)
				{
					a[left] = a[right];
					break;
				}
			/*从前往后搜索比val大的元素,找到后填到a[right]中并跳出循环*/
			for (; left<right; left++)
				if (a[left]>val)
				{
					a[right] = a[left];
					break;
				}
		}
		a[left] = val;/*将保存在val中的数放到a[left]中*/
		quicksort(a,left);/*递归,对前left个数排序*/
		quicksort(a + left + 1,numsize - 1 - left);/*对i+1到numsize-1这numsize-1-i个数排序*/
	}
}
int cmp(const void * a,const void * b)
{
	return(*(int *)a - *(int *)b);
}
int _tmain(int argc,_TCHAR* argv[])
{
	there:
	srand(time(NULL));
	int arr[SIZE];
	for (int i = 0; i < SIZE; i++)
	{
		arr[i] = rand() / 1000 + 10;
		printf("%d ",arr[i]);
	}
	printf("nQuickSort Result:n");
	quicksort(arr,SIZE);
	// 也可以用math库中写好的的快速排序函数
	// qsort(arr,SIZE,sizeof(int),cmp);
	for (int i = 0; i < SIZE; i++)
	{
		printf("%d ",arr[i]);
	}
	printf("nn");
	system("PAUSE");
	goto there;
	return 0;
}

栈练习

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include "string.h"
typedef struct data
{
	char name[20];
	int age;
}; 
class mystack
{
public:
	data dt[100];
	int top;
	mystack(){ top = 0; }
};

void cleanall(mystack *st)
{
	st->top = 0;
}

bool push(mystack *st,data dt)
{
	if (st->top >= 100)
	{
		return false;
	}
	else
	{
		st->dt[++st->top] = dt;
		return true;
	}	
}

data pop(mystack *st)
{
	if (st->top != 0)
	{
		return st->dt[st->top--];
	}
}

data peek(mystack *st)
{
	if (st->top != 0)
	{
		return st->dt[st->top];
	}
}

int _tmain(int argc,_TCHAR* argv[])
{
	printf("Look at this!n");
	mystack st;
	data dt;
	data tdata;
	for (int i = 0; i < 3; i++)
	{ 
		printf("nPlease input your name:");
		scanf_s("%s",dt.name,20);
		printf("Please input your age:");
		scanf_s("%d",&dt.age);
		push(&st,dt);
	}
	printf("nPrint out!n");
	for (int i = 0; i < 3; i++)
	{
		tdata = pop(&st);
		printf("name:%s,age:%dn",tdata.name,tdata.age);
	}
	_wsystem(_T("pause"));
	return 0;
}

链表练习

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "MyLinkType.h"


#include <string.h>
typedef struct Data
{
		char name[20];
		int age;
};

typedef struct theOneLink
{
	Data data;
	theOneLink *NEXT;
}aLink;

bool Clean(aLink* LK)//清空链表
{
	aLink *p;
	if (LK == NULL)//如果这是链表末尾
	{
		return true;
	}
	else//否则释放
	{
		p = LK->NEXT;
		delete LK;
		Clean(p);//递归地清除下一个
		return true;
	}
}

aLink *Add(aLink* LK,Data data)//添加节点
{
	aLink *p;
	if (LK == NULL)//如果是空链表
	{
		p = new aLink;
		p->data = data;
		p->NEXT = NULL;
		return p;//添加完成
	}
	else//若不是空链表
	{
		p = LK;
		while ((p->NEXT)!= NULL)//查找链表末端
		{
			p = p->NEXT;
		}
		//找到末尾
		p->NEXT = new aLink;
		(p->NEXT)->data = data;
		(p->NEXT)->NEXT = NULL;
		//添加完成
		return (LK);
	}
}

aLink *DelNode(aLink* LK,char* name)//删除节点
{
	if (LK == NULL)//如果是空链表
	{
		return NULL;//没东西可以删
	}
	else//若不是空链表
	{
		aLink *p;
		p = LK;
		Data tdata;

		tdata = (p->data);
		if (strcmp(tdata.name,name) == 0)
		{
			//如果是第一个
			aLink *thenext;
			thenext = p->NEXT;
			delete p;
			return thenext;
		}
		do
		{
			tdata = (p->NEXT->data);
			if (strcmp(tdata.name,name) == 0)
			{
				//找到了,释放它!
				aLink *tp;
				tp = p->NEXT;
				p->NEXT = p->NEXT->NEXT;
				delete tp;
				return LK;
			}
			else
			{
				//没找到,下一个
				p = p->NEXT;
			}
		} while (p->NEXT != NULL);//没到末尾,继续查找
		//到了末尾仍未发现
		return NULL;
	}
}

aLink *InsertNode(aLink* LK,char* name,Data data)//插入节点
{
	if (LK == NULL)//如果是空链表
	{
		return Add(LK,data);//调用Add函数插入
	}
	else//若不是空链表
	{
		aLink *p;
		p = LK;
		Data tdata;
		do
		{
			tdata = (p->data);
			if (strcmp(tdata.name,name)==0)
			{
				//找到了
				aLink *tp;
				tp = p->NEXT;
				p->NEXT = new aLink;
				p->NEXT->data = data;
				p->NEXT->NEXT = tp;
				return LK;
			}
			else
			{
				//没找到,下一个
				p = p->NEXT;
			}
		} while (p != NULL);//一直查找,直到末尾
		return Add(LK,data);//调用Add函数追加末尾
	}
}

void ShowAll(aLink* LK)//显示全部
{
	aLink *p;
	p = LK;
	while (p != NULL)
	{
		//输出data
		printf("nname:%s age:%d",(p->data.name),(p->data.age));
		//下一个
		p = p->NEXT;
	}
}
aLink *head;

int _tmain(int argc,_TCHAR* argv[])
{
	Data tdata;
	head = NULL;
	there://标记
	printf("n============================================n");
	printf("Please choose a function to cotinue.n");
	printf("1.Add sth n");
	printf("2.Insert sth n");
	printf("3.DEL sth n");
	printf("4.Show ALL n");
	printf("5.Clean ALL n");
	printf("6.Exit n");
	int f;
	scanf_s("%d",&f);
	char name[20];
	switch (f)
	{
	case 1://添加
		printf("name:");
		scanf_s("%s",20);
		printf("age:");
		scanf_s("%d",&tdata.age);
		head = Add(head,tdata);
		break;
	case 2://插入
		printf("findBYname:");
		scanf_s("%s",name,20);
		printf("name:");
		scanf_s("%s",&tdata.age);
		head = InsertNode(head,tdata);
		break;
	case 3://删除
		printf("DelBYname:");
		scanf_s("%s",20);
		head = DelNode(head,name);
		break;
	case 4://显示
		ShowAll(head);
		break;
	case 5://清空
		if (Clean(head))
		{
			printf("nsuccess!");
		}
		else
		{
			printf("nfailed!");
		}
		head = NULL;
		break;
	case 6://退出
		return 0;
		break;
	default:
		break;
	}
	goto there;//返回
	return 0;
}

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读