在学习了选择和循环结构以及vector的简单使用后,可以进行下面一些题目的简单应用
1.//编写猜数游戏程序 系统随机一个1000以内数,猜出这个数
int n; //输入数
int num = 1; //随机数
int count = 1; //次数
srand(time(NULL));
num = rand() % 1000; //随机1000以内数
do
{
cout << "猜一个数" << endl;
cin >> n;
count++;
if (n == num)
{
break;
}
else if(n>num)
{
cout << "大了" << endl;
}
else if (n < num)
{
cout << "小了" << endl;
}
} while (true);
cout << count << "次后成功" << endl;2.//找出0-100之间所有素数 (素数:除了1和他本身以外不能再被其他数整除)
bool isPrime = 1; //标识符
vector<int> primes; //存放素数
for (int i = 2; i < 101; i++) //素数最小为2
{
isPrime = 1;
for (int j = 2; j < i; j++) //遍历小于i的数
{
if (i % j == 0) //取余,能整除则不是素数
{
isPrime = 0;
}
}
if (isPrime == 1)
{
primes.push_back(i); //放入vector
}
}
for (int i = 0;i < primes.size();i++)
{
cout << primes[i] << endl;
}
//已知1997年7月1日周二,香港回归
//1.定义遍历
int day = 31; //7月共有31天
int dayOfWeek = 2; //周二
cout << "一\t二\t三\t四\t五\t六\t日" << endl;
//先打印\t 周几就打印几个 每个月第一天要打印\t来表示1号是周几
for (int i = 0; i < dayOfWeek-1; i++)
{
cout << "\t";
}
//循环打印日子
//cout << 1 << endl;
for (int i = 1; i <= day; i++)
{
cout << i ;
if ((i + dayOfWeek - 1)%7==0) //判断是否是周日 则换行 dayOfWeek=2
{
cout << "\n";
}
else
{
cout << "\t";
}
}4.//一个古老的传说,国王感谢发明了国际象棋的人,答应他一个要求,发明人提出:棋盘第一个格子放1粒米,第二个格子放2粒米,第三个格子放4粒,以此类推,直到放满64个格子。计算一下至少放1000000000粒米需要多少个格子
unsigned int i = 1; //当前格子米数
int count = 1; //当前所处格子数
int total = 0; //之前所有米数
for (count = 1;count<=33;count++)
{
cout << count<<"\t"; //打印当前格子数
i = 1 << (count-1); //左移变大
total += i;
cout << "i:" << i << "\t"<<"total:" << total << endl;
if (total >= 1000000000)
{
break;
}
}
//输入数据
double a; //a!=0
double b;
double c;
//输出结果数据
double x1;
double x2;
cout << "Enter a b c (a!=0)";
cin >> a >> b >> c;
double temp = b*b - 4 * a*c;
if (temp<0) //无解
{
cout << "No Root" << endl;
}
else if(temp == 0) //x1==x2
{
x1 = x2 = (-b ) / (2 * a);
cout << "X1=" << x1 << "\tX2=" << x2 << endl;
}
else
{
x1 = (-b + sqrt(temp)) / (2 * a);
x2 = (-b - sqrt(temp)) / (2 * a);
cout << "X1=" << x1 << "\tX2=" << x2 << endl;
}6.//编写一个简单的包含加减乘除的计算器程序
cout << "Enter expression(can handle +,-,*,/)\n";
cout << "Enter x to end expression(e.g.,1+2*3x):";
int lval = 0; //最左边的操作数
int rval;
cin >> lval;
if (!cin) //判断输入流是否正常
{
perror("no first operand");
}
for (char op;cin>>op;) //读入运算符和右操作符
{ //重复该过程
if (op != 'x') //输入x时结束
{
cin >> rval;
}
if (!cin)
{
perror("no second operand");
}
switch (op)
{
case'+':
lval += rval;
break;
case'-':
lval -= rval;
break;
case'*':
lval *= rval;
break;
case'/':
lval /= rval;
break;
default: //当没有运算符时输出计算结果
cout << "Result:" << lval << endl;
return 0;
}
} //值得注意的是 当输入5-4*2时,结果为2,而并不是-3,因为本程序并没有判断操作符的优先级
本文提供了一系列C++编程练习题目,包括猜数游戏、素数查找、日历打印等,帮助初学者掌握选择和循环结构及vector的使用。
935

被折叠的 条评论
为什么被折叠?



