首先学会新建源文件
1.打开DEV C++
2.文件—>新建—>源代码
3.编写程序
4.编译并运行(F11)
第一个程序《Hello,World!》
题目描述
编写一个能够输出 Hello,World!
的程序。
提示:
- 使用英文标点符号;
Hello,World!
逗号后面没有空格。H
和W
为大写字母。
样例输出
Hello,World!
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
printf("Hello,World!");
return 0 ;
}
其中
#include<bits/stdc++.h>//万能库
using namespace std;//表示使用命名空间
int main()//主函数
{
return 0 ;//结束程序运行
}
只是使用 C语言
的话,主函数
外只需要写所调用的库即可。
而 主函数
内才是程序所要运行的,比如这个题只需要输出一个 Hello,World!
,所以只有一个 printf
是有用的,在这里 printf
是 输出
的意思,而题中给的 Hello,World!
是个固定的一段字符,所以用 双引号
引起来一个输出即可。
在 C语言
中的代码实现大概是:
#include<stdio.h>
int main()
{
printf("Hello,World!");
return 0 ;
}
什么是库
我们在使用类似 printf
这样的操作时,都需要先调用其所对应的 库
,否则无法正常使用。
而在该代码中使用的是 万能库
,注意 ,这个 库
在 C语言
中无法使用。
输出字符菱形
题目描述
用 *
构造一个对角线长
5
5
5 个字符,倾斜放置的菱形。
样例输入 (无输入)
样例输出 #1
*
***
*****
***
*
不可以直接写为:
#include<bits/stdc++.h>
using namespace std;
int main()
{
printf(" *") ;
printf(" ***") ;
printf("*****") ;
printf(" ***") ;
printf(" *") ;
return 0 ;
}
即使写了很多个 printf
也不能实现 换行 的操作,而是要在双引号之间另外写 KaTeX parse error: Undefined control sequence: \n at position 1: \̲n̲ ,如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
printf(" *\n") ;
printf(" ***\n") ;
printf("*****\n") ;
printf(" ***\n") ;
printf(" *") ;
return 0 ;
}
第二个程序 《A+B Problem》
题目描述
输入两个整数 a , b a, b a,b,输出它们的和( ∣ a ∣ , ∣ b ∣ ≤ 10 9 |a|,|b| \le {10}^9 ∣a∣,∣b∣≤109)。
任何一个伟大的思想,都有一个微不足道的开始。
输入格式
两个以空格分开的整数。
输出格式
一个整数。
样例输入
20 30
样例输出
50
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a , b ;
scanf("%d%d", &a, &b);
printf("%d",a + b);
return 0 ;
}
也可以把 a + b
的值先存到一个 c
上:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a , b , c;
scanf("%d%d", &a, &b);
c = a + b ;
printf("%d", c);
return 0 ;
}
我们每个要使用的 变量
都需要提前声明才能使用,而 int
就是声明 整数型变量
时使用的。
变量的赋值是 从右向左 的,不能写作 a + b = c a + b = c a+b=c ,而是要写成 c = a + b c = a + b c=a+b 。
思考题中为什么a,b的取值范围小于等于1e9
i n t int int 类型声明变量的取值范围是 − 2147483648 ~ 2147483647 -2147483648~2147483647 −2147483648~2147483647 , 即 − 2 31 ~ 2 31 − 1 -2^{31} ~ 2^{31}-1 −231~231−1
因为
i
n
t
int
int 声明的变量是 二进制
下的
32
32
32 位,第一位是符号位,考虑剩余每一位都为
1
1
1 ,第
i
i
i 位表示 十进制
下的
1
∗
2
i
−
1
1 * 2^{i-1}
1∗2i−1 ,则用等比数列求和公式全部相加后得到答案为
2
31
−
1
2^{31} - 1
231−1。
超过此范围则被识别为其他奇怪的数。
对变量的理解
交换两个未知变量
给一个整数型变量 a a a 和 b b b ,交换两个数并输出:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a , b ;
scanf("%d%d", &a, &b) ;
int c = a ;
a = b ;
b = c ;
printf("%d %d",a , b) ;
return 0 ;
}
考虑理解为两饮料, A A A 杯里是可乐, B B B 杯里是雪碧,这时候你拿个空杯子,把 A A A 杯里的可乐先倒 C C C 杯里,然后 B B B 杯的雪碧倒入 A A A 空杯中,此时 A A A 杯是雪碧, C C C 杯是可乐, B B B 杯为空,最后把 C C C 杯中的可乐倒入 B B B 杯中,此时 A A A 杯是雪碧, B B B 杯是可乐。
不声明新的变量:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a , b ;
scanf("%d%d", &a, &b) ;
a = a + b ;
b = a - b ;
a = a - b ;
printf("%d %d",a , b) ;
return 0 ;
}
这个就纯数学,在纸上手推一下即可。
我们把这两个答案用空格隔开 % d \%d %d 用来给 a a a 和 b b b 占位。
浮点型小数
题目描述
一个三角形的三边长分别是 a a a、 b b b、 c c c,那么它的面积为 p ( p − a ) ( p − b ) ( p − c ) \sqrt{p(p-a)(p-b)(p-c)} p(p−a)(p−b)(p−c),其中 p = 1 2 ( a + b + c ) p=\frac{1}{2}(a+b+c) p=21(a+b+c)。输入这三个数字,计算三角形的面积,四舍五入精确到 1 1 1 位小数。
输入格式
第一行输入三个实数 a , b , c a,b,c a,b,c,以空格隔开。
输出格式
输出一个实数,表示三角形面积。精确到小数点后 1 1 1 位。
样例输入
3 4 5
样例输出
6.0
需要用到小数时我们用 d o u b l e double double 声明浮点型变量,占位用 % l f \%lf %lf 注意是小写的 L L L 而不是数字 1 1 1 ,输出时需要保留 x x x 位小数就写成 p r i n t f ( " % . x l f " , s ) ; printf("\%.xlf" ,s); printf("%.xlf",s);
#include <bits/stdc++.h>
using namespace std;
int main()
{
double a,b,c,p,s;
scanf("%lf%lf%lf" ,&a ,&b ,&c) ;
p = ( a + b + c ) / 2.0 ;
s = sqrt(p * (p - a) * (p - b) * (p - c));
printf("%.1lf" ,s);
return 0;
}
提示
数据保证能构成三角形, 0 ≤ a , b , c ≤ 1000 0\leq a,b,c\leq 1000 0≤a,b,c≤1000,每个边长输入时不超过 2 2 2 位小数。
字符类型与ASCII码
题目描述
给定一个字符,用它构造一个底边长 5 5 5 个字符,高 3 3 3 个字符的等腰字符三角形。
输入格式
输入只有一行,包含一个字符。
输出格式
该字符构成的等腰三角形,底边长 5 5 5 个字符,高 3 3 3 个字符。
样例输入
*
样例输出
*
***
*****
提示
对于 100 % 100 \% 100% 的数据,输入的字符是 ASCII 中的可见字符。
这里这个题不像前面那个直接输出 *
的,而是要看人家给你什么字符,输出对应的字符。
#include<bits/stdc++.h>
using namespace std;
int main()
{
char c ;
scanf("%c", &c) ;
printf(" %c\n", c) ;
printf(" %c%c%c\n", c, c, c) ;
printf("%c%c%c%c%c\n", c, c, c, c, c) ;
return 0 ;
}
字符类型变量声明时用 c h a r char char ,占位时用 % c \%c %c
题目描述
输入一个小写字母,输出其对应的大写字母。例如输入 q q q 时,会输出 Q Q Q 。
样例输入
q
样例输出
Q
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a;
scanf("%c", &a) ;
a = a - 32 ;
printf("%c", a) ;
return 0 ;
}
理解这个 32 32 32 的由来
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a;
scanf("%c", &a) ;
a = a - ('a' - 'A');
printf("%c", a) ;
return 0 ;
}
选择结构
if(判断条件) //优先判断是否成立
{
执行操作1 ;
操作2 ;
}
else if(其他分支) 执行操作 ;//如果前面的if没有成立,则判断该条件是否能成立
else 执行操作 ;//上面的if和若干else if都没有成立,执行else里的操作
其中每个小括号里面的判断条件中,如果需要判断相等,例如判断
a
a
a 是否等于
b
b
b ,需要写成
i
f
(
a
=
=
b
)
if(a == b)
if(a==b) 这样的两个连续的等号,若满足条件则返回 true
,否则返回 false
,可以理解为分别是
0
0
0 和
1
1
1 。
当需要判断多个条件同时成立或成立其一即可时,用 ∣ ∣ || ∣∣ 或 & & \&\& && 连接条件,如当我们需要判断是否 a > = b a>=b a>=b 且 b > = c b>=c b>=c 时不可以写成连等的 i f ( a > = b > = c ) if(a >= b >= c) if(a>=b>=c),而是要写成 i f ( a > = b & & b > = c ) if(a >= b \&\& b >= c) if(a>=b&&b>=c) 。
题目描述
给定一个整数,判断该数是奇数还是偶数。如果
n
n
n 是奇数,输出 odd
;如果
n
n
n 是偶数,输出 even
。
输入格式
输入仅一行,一个整数 n n n。
输出格式
输出仅一行,如果
n
n
n 是奇数,输出 odd
;如果
n
n
n 是偶数,输出 even
。
样例输入 1
5
样例输出 1
odd
样例输入2
10
样例输出2
even
提示
− 100 ≤ n ≤ 100 -100\le n\le 100 −100≤n≤100。
注意记得考虑负数。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n ;
scanf("%d",&n);
if(n % 2) printf("odd") ;
else printf("even") ;
return 0 ;
}
题目描述
任意输入一个字符,判断其 ASCII 是否是奇数,若是,输出 YES
,否则,输出 NO
。
例如,字符 A
的 ASCII 值是 65
,则输出 YES
,若输入字符 B
(ASCII 值是
66
66
66),则输出 NO
。
输入格式
输入一个字符。
输出格式
如果其 ASCII 值为奇数,则输出 YES
,否则,输出 NO
。
样例输入1
A
样例输出1
YES
样例输入2
B
样例输出2
NO
这里用 c h a r char char 来声明字符型变量,在运算时自动理解为其对应的 A S C I I ASCII ASCII 码值
#include <bits/stdc++.h>
using namespace std;
int main()
{
char n ;
scanf("%c",&n);
if(n % 2 == 1) printf("YES") ;
else printf("NO") ;
return 0 ;
}
题目描述
输入一个年份,判断这一年是否是闰年,如果是输出 1 1 1,否则输出 0 0 0。
1582 1582 1582 年以来,闰年的定义:
普通闰年:公历年份是 4 4 4 的倍数,且不是 100 100 100 的倍数的,为闰年(如 2004 2004 2004 年、 2020 2020 2020 年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是 400 400 400 的倍数才是闰年(如 1900 1900 1900 年不是闰年, 2000 2000 2000 年是闰年)。
输入格式
输入一个正整数 n n n,表示年份。
输出格式
输出一行。如果输入的年份是闰年则输出 1 1 1,否则输出 0 0 0。
样例输入1
1926
样例输出1
0
样例输入2
1900
样例输出2
0
样例输入3
2000
样例输出3
1
样例输入4
1996
样例输出4
1
数据保证, 1582 ≤ n ≤ 2020 1582 \leq n \leq 2020 1582≤n≤2020 且年份为自然数。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
scanf("%d",&a);
if(((a % 4 == 0) && (a % 100 != 0)) || (a %400==0)) printf("1");
else printf("0") ;
return 0;
}
数的,必须是 400 400 400 的倍数才是闰年(如 1900 1900 1900 年不是闰年, 2000 2000 2000 年是闰年)。
输入格式
输入一个正整数 n n n,表示年份。
输出格式
输出一行。如果输入的年份是闰年则输出 1 1 1,否则输出 0 0 0。
样例输入1
1926
样例输出1
0
样例输入2
1900
样例输出2
0
样例输入3
2000
样例输出3
1
样例输入4
1996
样例输出4
1
数据保证, 1582 ≤ n ≤ 2020 1582 \leq n \leq 2020 1582≤n≤2020 且年份为自然数。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
scanf("%d",&a);
if(((a % 4 == 0) && (a % 100 != 0)) || (a %400==0)) printf("1");
else printf("0") ;
return 0;
}