分析:使用输入和输出,再用取余号即可
参考代码:
#include
using namespace std;
int main() {
int n;
cin>>n;
if(n%3==0)cout<<"Yes";
else cout<<"NO";
return 0;
}
分析:使用输入和输出+for循环即可
#include
using namespace std;
int main() {
int n;
for(int i=1;i<=n;i++)cout<<i<<endl;
return 0;
}
分析:使用for输入和输出,使用数组存储数据/输入一个输出一个
参考代码1:
#include
using namespace std;
int main() {
int n,a[1009];//不建议,题目没说n的范围
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
for(int i=0;i<n;i++)cout<<a[i]<<endl;
return 0;
}
参考代码2:
/*这种方法虽然能解决很多情况,但在DEVC++运行时有可能看起来不好看:
2 //n
2 //a
2 //cout
3 //a
3 //cout
就是说,输入元素a时会立刻输出
*/
#include
using namespace std;
int main() {
int n,a;
cin>>n;
for(int i=0;i<n;i++) {
cin>>a;
cout<<a<<endl;
}
return 0;
}
在前面已经提到了很多种类型,如int
,long long
等.通常简单的程序我们都会使用int
,因为int
打起来很方便.可是,当题目数据大时,再用int,就可能会爆精度,也就是数据越界,所也要注意每个数据的大小.
数据范围表(signed
表正负皆可
,unsigned
表自然数
)
类型 | 范围 |
---|---|
char字符型 | 不能确定 ,需根据编译器环境而定 |
bool布尔类型(是否 ) |
0~1 |
signed char有符号字符型 | -128~127 |
unsigned char无符号字符型 | 0~255 |
short短整型(默认为signed short) | -32768~32767 |
unsigned short无符号短整型 | 0~65,535 |
int整形(默认为signed int) | -2147483648~2147483647 |
unsigned int无符号整形 | 0~4294967295 |
long long长整型(默认为(signed long long) | -9,223,372,036,854,775,808~9,223,372,036,854,775,807 |
unsigned long long long无符号长整型 | 0~18,446,744,073,709,551,615 |
float浮点精度型 | +/- 3.4e +/- 38 (~7 个数字) |
double浮点双精度型 | +/- 1.7e +/- 308 (~15 个数字) |
long double浮点长双精度型 | 可提供18-19位有效数字 |
__int128 128字节超长整形此类型不能用cin,cout,scanf,printf |
约-170141183460469231731687303715884105727~约170141183460469231731687303715884105727 |
前面提到了数据范围,有些人会认为,遇到事就立刻用最大精度
,但是,这样真的对吗?有风险.
每一个类型都是有空间限制的(以字节为单位),如果你定义了太多变量,就可能会导致爆空间
,程序将无法运行.
以win64为标准的数据大小表(加上signed/unsigned所占空间不会不一样,所以就直接是变量了)
类型 | 大小(字节) |
---|---|
char | 1 |
bool | 1 |
short | 2 |
int | 4 |
long long | 8 |
float | 4 |
double | 8 |
long double | 16 |
__int128 | 16 |
其实,if括号里的东东就是bool
类型的.
对于bool类型,0表示false
(if不执行),1表示true
(if执行).
true
就是为真,false
就是为假.
比方说:
10>2==true
3>=10==false
还有:
4==true
0==false
-5==true
我们都知道,数
分为三部分:正数
,负数
和0
.
当bool
的值直接被赋值为
正数
或负数
,它会变成1,也就是true
;
当bool
的值直接被赋值为
0
,它就是0,也就是false
.
这就是bool的越界
其他类型越界会自动减掉其unsigned模式下的最大值
(即可能会变成负数
)
额,扯得远了
if(5)cout<<5;
这种情况会输出5
if(0)cout<<0;
这种情况不会输出0
如果输入的n既是奇数也是三的倍数,则输出1,否则输出0
按照已有知识可以这样写:
if(n%2==1)
if(n%3==0)cout<<1;
else cout<<0;//否则1
else cout<<0;//否则2
额,是不是有点麻烦 TAT
怎么办呢?
可以使用并且&&
来完成(注意是两个&
)
if(n&2==1&&n%3==0)cout<<1;
else cout<<0;
怎么样,是不是方便多了呢?
再来一种情况:如果n是3的倍数或7的倍数,输出1,否则输出0
bool ans=0;
if(n%3==0)ans=1;
if(n%7==0)ans=1;
cout<<ans;
也好麻烦啊!!!
使用||
,表示或,可以解决这个问题~
if(n%3==0||n%7==0)cout<<1;
else cout<<0;
假设能同时被1~n整除的数叫做 神奇数 ,输入n和m,如果m是神奇数,输出1;否则,输出0
(提示:此题用 || 解有点麻烦,甚至不能完成)
答案请见下期
输入a和b(可能是小数,和最大可能会出现15个数字),输出他们的和
答案请见下期
输入一个数n,输出n是( 正/负 整数/小数 ).
答案请见下期
输入正整数x和y(0≤10e200≤a,b),输出他们的和
此题下期不会
公布答案,会在后面讲到(高精度-大数加法
)