C++运用

 循环

#include<iostream>
using namespace std;
int main() {
	for (int i = 1; i <= 999999; i = i+1) {
		cout << i << endl;
	}
	return 0;
}

2048 

#include <iostream>
using namespace std;
#include <conio.h> //console input/ouput
#include <ctime>
#include <cstdlib>

int randNum();                        //产生2/4随机数
int randPosition();                   //产生随机位置
void printArr(int *mainArr, int len); //打印数组
void upPile(int *mainArr, int len);   //上移操作
void moveUp(int *mainArr, int len, int *score);
void downPile(int *mainArr, int len); //下移操作
void moveDown(int *mainArr, int len, int *score);
void leftPile(int *mainArr, int len); //左移操作
void moveLeft(int *mainArr, int len, int *score);
void rightPile(int *mainArr, int len); //右移操作
void moveRight(int *mainArr, int len, int *score);
void generateNum(int *mainArr, int len); //在随机位置上放置随机数
int checkResult(int *mainArr, int len);  //通过返回值判断游戏状态(赢、输、继续)

int randNum()
{
    srand((int)time(0));
    return (rand() % 2 + 1) * 2;
}

int randPosition()
{
    srand((int)time(0));
    return rand() % 16;
}

void printArr(int *mainArr, int len)
{
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            cout << mainArr[i * 4 + j] << "\t";
        }
        cout << endl;
        cout << endl;
    }
}

void upPile(int *mainArr, int len)
{
    for (int i = 1; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            for (int x = i - 1; x > 0; x--)
            {
                if (mainArr[x * 4 + j] == 0)
                {
                    mainArr[x * 4 + j] = mainArr[(x + 1) * 4 + j];
                    mainArr[(x + 1) * 4 + j] = 0;
                }
            }
        }
    }
}

void moveUp(int *mainArr, int len, int *score)
{
    upPile(mainArr, len);
    for (int i = 1; i < 4; i++) //从第2行开始
    {
        for (int j = 0; j < 4; j++)
        {
            if (mainArr[i * 4 + j] == mainArr[(i - 1) * 4 + j] || mainArr[(i - 1) * 4 + j] == 0)
            {
                mainArr[(i - 1) * 4 + j] += mainArr[i * 4 + j];
                mainArr[i * 4 + j] = 0;
                *score += mainArr[(i - 1) * 4 + j];
            }
        }
    }
}

void downPile(int *mainArr, int len)
{
    for (int i = 3; i > -1; i--)
    {
        for (int j = 0; j < 4; j++)
        {
            for (int x = i + 1; x < 4; x++)
            {
                if (mainArr[x * 4 + j] == 0)
                {
                    mainArr[x * 4 + j] = mainArr[(x - 1) * 4 + j];
                    mainArr[(x - 1) * 4 + j] = 0;
                }
            }
        }
    }
}

void moveDown(int *mainArr, int len, int *score)
{
    downPile(mainArr, len);
    for (int i = 3; i > 0; i--) //从最后一行开始
    {
        for (int j = 0; j < 4; j++)
        {
            if (mainArr[i * 4 + j] == mainArr[(i - 1) * 4 + j] || mainArr[i * 4 + j] == 0)
            {
                mainArr[i * 4 + j] += mainArr[(i - 1) * 4 + j];
                mainArr[(i - 1) * 4 + j] = 0;
                *score += mainArr[i * 4 + j];
            }
        }
    }
}

void leftPile(int *mainArr, int len)
{
    for (int j = 1; j < 4; j++)
    {
        for (int i = 0; i < 4; i++)
        {
            for (int x = j - 1; x > -1; x--)
            {
                if (mainArr[i * 4 + x] == 0)
                {
                    mainArr[i * 4 + x] = mainArr[i * 4 + x + 1];
                    mainArr[i * 4 + x + 1] = 0;
                }
            }
        }
    }
}

void moveLeft(int *mainArr, int len, int *score)
{
    leftPile(mainArr, len);
    for (int j = 1; j < 4; j++) //从第二列开始
    {
        for (int i = 0; i < 4; i++)
        {
            if (mainArr[i * 4 + j] == mainArr[i * 4 + j - 1] || mainArr[i * 4 + j - 1] == 0)
            {
                mainArr[i * 4 + j - 1] += mainArr[i * 4 + j];
                mainArr[i * 4 + j] = 0;
                *score += mainArr[i * 4 + j - 1];
            }
        }
    }
}

void rightPile(int *mainArr, int len)
{
    for (int j = 2; j > -1; j--)
    {
        for (int i = 0; i < 4; i++)
        {
            for (int x = j + 1; x < 4; x++)
            {
                if (mainArr[i * 4 + x] == 0)
                {
                    mainArr[i * 4 + x] = mainArr[i * 4 + x - 1];
                    mainArr[i * 4 + x - 1] = 0;
                }
            }
        }
    }
}

void moveRight(int *mainArr, int len, int *score)
{
    rightPile(mainArr, len);
    for (int j = 3; j > 0; j--) //从最后一列开始
    {
        for (int i = 0; i < 4; i++)
        {
            if (mainArr[i * 4 + j] == mainArr[i * 4 + j - 1] || mainArr[i * 4 + j] == 0)
            {
                mainArr[i * 4 + j] += mainArr[i * 4 + j - 1];
                mainArr[i * 4 + j - 1] = 0;
                *score += mainArr[i * 4 + j];
            }
        }
    }
}

void generateNum(int *mainArr, int len)
{
    while (1)
    {
        int p = randPosition();
        if (mainArr[p] == 0)
        {
            mainArr[p] = randNum();
            break;
        }
    }
}

int checkResult(int *mainArr, int len)
{
    int count = 0;
    for (int i = 0; i < len; i++)
    {
        if (mainArr[i] == 2048) //赢的条件
        {
            return 1; //赢了
        }
        else if (mainArr[i] == 0)
        {
            count = count;
        }
        else
        {
            count++;
        }
    }
    if (count == 16) //输的条件
    {
        return 0; //输了
    }
    else
    {
        return 2; //继续
    }
}

int main()
{
    int mainArr[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int len = sizeof(mainArr) / sizeof(mainArr[0]); //行数
    int score = 0;
    char choice = ' ';
    system("color 02");
    cout << "按w上,s下,a左,d右。" << endl;
    cout << endl;
    generateNum(mainArr, len);
    printArr(mainArr, len);
    cout << "您的上一步操作是:" << choice << endl;
    cout << "得分:" << score << endl;
    while (1)
    {
        if (_kbhit())
        {
            switch (_getch())
            {
            case 119: // W
                choice = 'W';
                moveUp(mainArr, len, &score);
                break;
            case 115: // S
                choice = 'S';
                moveDown(mainArr, len, &score);
                break;
            case 97: // A
                choice = 'A';
                moveLeft(mainArr, len, &score);
                break;
            case 100: // D
                choice = 'D';
                moveRight(mainArr, len, &score);
                break;
            default:
                choice = 'N';
            }
            if (choice != 'N')
            {
                generateNum(mainArr, len);
                switch (checkResult(mainArr, len))
                {
                case 0:
                    system("cls");
                    cout << "您输了!" << endl;
                    cout << "得分:" << score << endl;
                    break;

                case 1:
                    system("cls");
                    cout << "您赢了!" << endl;
                    cout << "得分:" << score << endl;
                    break;

                case 2:
                    system("cls");
                    cout << "按w上,s下,a左,d右。" << endl;
                    cout << endl;
                    printArr(mainArr, len);
                    cout << "您的上一步操作是:" << choice << endl;
                    cout << "得分:" << score << endl;
                    break;
                }
            }
            else
            {
                system("cls");
                cout << "按w上,s下,a左,d右。" << endl;
                cout << endl;
                printArr(mainArr, len);
                cout << "您的上一步操作不合法!" << endl;
                cout << "得分:" << score << endl;
            }
        }
    }
    return 0;
}

推箱子

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int  map[2][7][8] =
{
	//0:空的 1:■ :墙
	//3:☆ 4:★  //目的地和箱子
	//5:※		  //人
	//7:⊙		  //目的(3)和箱子(4)在一起
	//8:※		  //人(5)和目的(3)在一起
	//为让多种情况使用一种算法
 
	{
	1, 1, 1, 1, 1, 1, 1, 1,
	1, 0, 0, 0, 0, 0, 0, 1,
	1, 3, 1, 0, 1, 1, 3, 1,
	1, 4, 0, 0, 4, 0, 3, 1,
	1, 0, 1, 0, 1, 1, 4, 1,
	1, 0, 0, 5, 0, 0, 0, 1,
	1, 1, 1, 1, 1, 1, 1, 1
	},
	{
		1, 1, 1, 1, 1, 1, 1, 1,
		1, 0, 0, 0, 0, 0, 0, 1,
		1, 3, 1, 0, 1, 1, 3, 1,
		1, 3, 4, 5, 4, 0, 3, 1,
		1, 4, 1, 0, 1, 1, 4, 1,
		1, 0, 0, 0, 0, 0, 0, 1,
		1, 1, 1, 1, 1, 1, 1, 1
	}
};
int cas = 0;	//为0表示第一关
//记录每一关的箱子数 或者是项目和目的在一起的总数
int boxSum[2] = {3,4};
//地图绘图
void drawMap()
{
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < 8; j++)
		{
			if (j == 0)
				printf("\t\t");
			switch (map[cas][i][j])
			{
				//	//0:空的 1:■ :墙
			case 0:
				printf("  ");
				break;
			case 1:
				printf("■");
				break;
				//3:☆ 4:★  //目的地和箱子
			case 3:
				printf("☆");
				break;
			case 4:
				printf("★");
				break;
				//5:※		  //人
			case 5:
			case 8:
				printf("※");
				break;
			case 7:
				printf("⊙");
				break;
				//7:⊙		  //目的(3)和箱子(4)在一起
				//8:※		  //人(5)和目的(3)在一起
			}
		}
		printf("\n");
	}
}
//按键处理
void keyDown()
{
	//分析按键过程
	//定位人在哪里
	//人有两种情况:第一个是:人,第二个:人站在目的上
	int i, j;
	for (i = 0; i < 7; i++)
	{
		for (j = 0; j < 8; j++)
		{
			if (map[cas][i][j] == 5 || map[cas][i][j] == 8)
			{
				break;
			}
		}
		if (map[cas][i][j] == 5 || map[cas][i][j] == 8)
		{
			break;
		}
	}
 
	char ch = _getch();	//看不见的字符输入,+头文件 conio.h
	switch (ch)
	{
		//72 80   75 77
	case 'w':
	case 'W':
	case 72:
		//下一个地方等于空地或者是目的 能走
		if (map[cas][i - 1][j] == 0 || map[cas][i - 1][j] == 3)
		{
			//3+5=8 :表示目的和人在一起
			//新地方(map[i-1][j])人(5)来了
			map[cas][i - 1][j] += 5;
			//老地方(map[i][j])人(5)走了
			map[cas][i][j] -= 5;
		}
		//如果下一个是箱子,要进一步判断能走
		//注意点:箱子两种状态:箱子,箱子和目的在一起
		else if (map[cas][i - 1][j] == 4 || map[cas][i - 1][j] == 7)
		{
			//做箱子的下一个地方判断能不能走
			if (map[cas][i - 2][j] == 0 || map[cas][i - 2][j] == 3)
			{
				//新的地方箱子来了
				map[cas][i - 2][j] += 4;
				//箱子的位置:箱子(-4)走了 人来(+5)
				map[cas][i - 1][j] += 1;
				//原来的地方人走了
				map[cas][i][j] -= 5;
			}
 
		}
 
		break;
	case 's':
	case 'S':
	case 80:
		//下一个地方等于空地或者是目的 能走
		if (map[cas][i + 1][j] == 0 || map[cas][i + 1][j] == 3)
		{
			//3+5=8 :表示目的和人在一起
			//新地方(map[i-1][j])人(5)来了
			map[cas][i + 1][j] += 5;
			//老地方(map[i][j])人(5)走了
			map[cas][i][j] -= 5;
		}
		else if (map[cas][i + 1][j] == 4 || map[cas][i + 1][j] == 7)
		{
			//做箱子的下一个地方判断能不能走
			if (map[cas][i + 2][j] == 0 || map[cas][i + 2][j] == 3)
			{
				//新的地方箱子来了
				map[cas][i + 2][j] += 4;
				//箱子的位置:箱子(-4)走了 人来(+5)
				map[cas][i + 1][j] += 1;
				//原来的地方人走了
				map[cas][i][j] -= 5;
			}
 
		}
		break;
 
	case 'a':
	case 'A':
	case 75:
		//下一个地方等于空地或者是目的 能走
		if (map[cas][i][j - 1] == 0 || map[cas][i][j - 1] == 3)
		{
			//3+5=8 :表示目的和人在一起
			//新地方(map[i-1][j])人(5)来了
			map[cas][i][j - 1] = map[cas][i][j - 1] + 5;
			//老地方(map[i][j])人(5)走了
			map[cas][i][j] = map[cas][i][j] - 5;
			//j+=5  j=j+5
 
		}
		else if (map[cas][i][j - 1] == 4 || map[cas][i][j - 1] == 7)
		{
			//做箱子的下一个地方判断能不能走
			if (map[cas][i][j - 2] == 0 || map[cas][i][j - 2] == 3)
			{
				//新的地方箱子来了
				map[cas][i][j - 2] += 4;
				//箱子的位置:箱子(-4)走了 人来(+5)
				map[cas][i][j - 1] += 1;
				//原来的地方人走了
				map[cas][i][j] -= 5;
			}
 
		}
 
		break;
	case 'D':
	case 'd':
	case 77:
		//下一个地方等于空地或者是目的 能走
		if (map[cas][i][j + 1] == 0 || map[cas][i][j + 1] == 3)
		{
			//3+5=8 :表示目的和人在一起
			//新地方(map[i-1][j])人(5)来了
			map[cas][i][j + 1] += 5;
			//老地方(map[i][j])人(5)走了
			map[cas][i][j] -= 5;
		}
		
		//下一个地方是箱子,判断箱子的下一个地方是不是目的和空地
		else if (map[cas][i][j + 1] == 4 || map[cas][i][j + 1] == 7)
		{
			//做箱子的下一个地方判断能不能走
			if (map[cas][i][j + 2] == 0 || map[cas][i][j + 2] == 3)
			{
				//新的地方箱子来了
				map[cas][i][j + 2] += 4;
				//箱子的位置:箱子(-4)走了 人来(+5)
				map[cas][i][j + 1] += 1;
				//原来的地方人走了
				map[cas][i][j] -= 5;
			}
 
		}
		break;
	}
}
//胜负判断
//用什么判断胜负: 箱子到达目的的个数
int gameOver()
{
	int count = 0;
	//所有的地方找一遍
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < 8; j++)
		{
			if (map[cas][i][j] == 7)
				count++;
		}
	}
	return count;
}
//箱子数是零的时候也是胜利
int gameOver2()
{
	int count = 3;
	//所有的地方找一遍
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < 8; j++)
		{
			if (map[cas][i][j] == 3)
				count--;
		}
	}
	return count;
}
 
int main()
{
	while (1)
	{
		printf("\n\t用方向键或w a s d键移动※推动★进入☆\n",cas+1);
		printf("\n\t\t 共两关 第 %d 关\n",cas+1);
		drawMap();
		if (gameOver() == boxSum[cas])
		{
			cas++;
			if (cas == 2)
				break;
			else
			    printf("\n\t\t 该关 OK!按任一键进继续\n");	
		}
		keyDown();
		system("cls");
	}
	printf("游戏结束!");
	printf("\n");
	system("pause");
	return 0;
}

计算机

#include<iostream>
using namespace std;
int main() {
	int first, second;
	char op;
	cin >> first >> op >> second;
	if (op == '+') {
		cout << first + second << endl;
	} else if (op == '-') {
		cout << first - second << endl;
	} else if (op == '*') {
		cout << first * second << endl;
	} else if (op == '/') {
		cout << first / second << endl;
	} else if (op == '%') {
		cout << first % second << endl;
	} 
    return 0;
}

猜数字

#include <iostream>
 
#include <cstdlib>
 
#include <cstring>
 
#include <ctime>                 
 
using namespace std;
 
#define MAXN 10			
 
int main()
{
    
	int label;
		
	int mark, count;
	
	int number, answer;
	
	char character[MAXN];
	
	label:                      
	
	memset( character, 0, sizeof( character ) );	 
	
	srand(time(0));             
	
	answer = rand()%1000;            
	
	count = 0;
	
	while( true )
	{
	    cout << "请输入一个1到1000之间的数 : ";
	    
		cin >> number;
		
		cout << endl; 
		
		if( number == answer )
		{
		    break;
		}	
		
		else if( number > answer )
		{
			cout << "你输入的数字有点大 , 请输小点儿 。";
			
			cout << endl; 
			
			cout << endl;
		}
		
		else if( number < answer )
		{
			cout << "你输入的数字有点小 , 请输大点儿 。";
			
			cout << endl;
			
			cout<<endl; 
		}
		
		count++;                
		 
	}
	
	cout << "你用了" << count;		
	
	cout << "次答对了。";
	
	cout << endl;
	 
	cout << endl;
	
	count = 0; 
	
	cout << "你想再来一次吗 ? 想请输入 yes , 不想请输入 no 。" << endl;
	
	mark:
		
	cin >> character;
	
	if( ( character[0] == 'y' || character[0] == 'Y' ) && ( character[0] == 'e' || character[0] == 'E' ) && ( character[0] == 's' || character[0] == 'S' ) )
	{
		goto label;                            
	}
	
	else if( ( character[0] == 'n' || character[0] == 'N' ) && ( character[0] == 'o' || character[0] == 'O' ) )
	{
	    return 0;	
	}
	 
	else
	{
		cout << "输入的不正确 , 请再输一次 :";	 
		
		goto mark;
	}
} 

利用勾股定理验证直角三角形

#include<iostream>
using namespace std;
int main() {
    int a, b, c;
    cin >> a >> b >> c;
    if (a * a + b * b == c * c) {
        cout << "It can make a Right Triangle";
    }else{
        cout << "It can't make a Right Triangle";
    } 
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值