韩信点兵习题
题目
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。
上代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,j;
cin>>a>>b>>c;
for(int i=10;i<=100;i++)
{
if((i-a)%3==0&&(i-b)%5==0&&(i-c)%7==0)
{
cout<<i;
j=1;
}
}
if(j!=1)
cout<<"无解";
return 0;
}
借由j的真假来输出是否有解
pass
输出倒三角问题
题目
输入正整数n,输出一个n层的倒三角形
上代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i = 1;i <= n;i++)//第一个for循环为行,在这一行里进行*和空格的输出
{
for(int k=0;k<i-1;k++)//第一个内层for控制*前空格的个数,保证输出图形的对称性
{
cout<<" ";
}
for(int j = 1;j<=2*(n-i)+1;j++)//第二个内层for控制该行*的个数
{
cout<<"*";
}
cout<<"\n";
}
return 0;
}
易知:输入n后,第一行有2(n-1)+1个*,第二行有2(n-2)+1个*,第三行有2(n-3)+1个*,以此类推
本题重点在于嵌套for循环,需加强理解
知识点
1.语句“a[n++] = x”,它做了两件事:首先赋值a[n] =x,然后执行n++自增 ,可将其改写为a[n] = x;n = n+1;
2.默认情况下,for语句的循环体只有一条语句。即在没有{}的情况下,for只把for的下一行作为循环体。
3.比较大的数组应该尽量声明在main函数外,否则程序可能无法运行。
4.c语言中,数组不能够进行赋值操作,如声明int arr1[5],arr2[5];是不能赋值a = b的。如果要从数组a复制k个元素到数组b,可以这样:memcpy(b,a,sizeof(int) * k)。浮点数就把int改成double。