循环
#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;
}