此内容是输出一个特定的语句Hello World!没有涉及计算等逻辑方面的内容。
我们首先要知道,C语言的代码框架是什么。
首先是引入库,C语言的工具和语法都是通过引入相应库来实现。比如输入输出功能需要引入stdio.h库,比如数学的高级计算需要引入math.h库,比如字符串操作需要引入string.h库,比如空间的动态调动用stdlib.h库等等。引入库的语法为:
#include <库名>
或者
#include "库名"
其中库名就是上述例子中的名称了。
接下来是定义区,此区域可以有,也可以没有。此区域主要是定义define、定义结构体内容、定义数据类型typedef、定义非main函数等等。
首先是定义define,它的作用是可以将一个常量用一个变量代替。假如说Pi为3.14,我就可以直接定义Pi了,而不是每次用到都要写3.14了,语法如下:
#define 变量名 常量
有人可能会问,如果我写 #define Pi 3.14,那么跟double Pi = 3.14有区别吗?实现的功能不是一样的吗?虽然是一样的,但是define还有一个特殊的用法。举个例子,假如说你刷题刷多了,经常用int定义整型,而如果题目范围过大,超出了int范围,如果你不想每次写long long,则可以用int代替long long,即 #define int long long。但是main函数要用signed数据类型,不然会报CE。
第二个就是定义结构体内容,这部分内容先不讲,以后会在结构体章节中提到。
第三个就是定义数据类型typedef,这部分内容也先不讲,结构体和数据结构会非常常见。
最后就是定义函数了,这部分会在以后的函数章节提到。
然后是全局变量定义,在函数之外定义的变量为全局变量,此变量可以用于此程序中的所有函数中,且可随函数中值的变化而变化。如果定义变量并赋值常量且保持此变量的值始终为定值,语法为:
const int 变量名 = 常量;
若想跟着改变而改变,定义时去掉前面的const即可。
最后是main函数,数据类型一般为int类型,最后要有返回值0。语法一般为:
int main(){
语法一;
语法二;
...
return 0;
}
接下来我们讲一下数据类型。
常见的数据类型有:
int 整型
long 长整型
long long 超长整型
double 双浮点型
float 单浮点型
char 字符型
struct 结构体型
bool 布尔型
接下来我们说一下C语言的标准输入和输出格式。
输入格式:
scanf("传入的数据格式",&传入变量);
例如:scanf("%d",&a);代表输入a。
输出格式:
printf("输出格式",输出变量);
当然,如果输出内容跟变量无关,则printf("输出格式");即可。
常见的输入输出数据样式:
%d 代表变量为整型
%ld 代表变量为长整型
%lld 代表变量为超长整型
%f 代表变量为单浮点型
%lf 代表变量为双浮点型
%s 代表变量为字符串
%c 代表变量为字符型
\n 代表换行符
\t 代表制表符
常用的就这么多。
所以,输出Hello World的代码相信大家都会写了,直接展示:
#include "stdio.h"
int main(){
printf("Hello World!\n");
return 0;
}
为了让大家养成良好的代码书写习惯,小编建议你们这么做:
1.代码之间严格缩进,不要随意Tab,否则会降低代码的可读性。不信?展示:
//以下是没有严格缩进的代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int c1, c2, r1, r2;
int x1, x2, x3, x4;
int start_row, start_col;
int dist1, dist2;
cin >> c1 >> c2 >> r1 >> r2;
cin >> x1 >> x2 >> x3 >> x4;
cin >> start_row >> start_col >> dist1 >> dist2;
vector<array<int, 4>> results;
function<void(int, int, int)> dfs = [&](int step, int prev_row, int prev_col) {
bool row_used[6] = {false};
bool col_used[6] = {false};
if (step == 1) {
col_used[c1] = true;
col_used[c2] = true;
row_used[r1 - x3] = true;
row_used[r2 + x4] = true;
} else {
col_used[c1 + x1] = true;
col_used[c2 - x2] = true;
row_used[r1 - x3] = true;
row_used[r2 + x4] = true;
}
int target_dist = (step == 0) ? dist2 : dist1;
for (int curr_row = 1; curr_row <= 5; curr_row++) {
if (row_used[curr_row]) continue;
for (int curr_col = 1; curr_col <= 5; curr_col++) {
if (col_used[curr_col]) continue;
int manhattan_dist = abs(curr_row - prev_row) + abs(curr_col - prev_col);
if (manhattan_dist == target_dist) {
if (step == 0) {
dfs(step + 1, curr_row, curr_col);
} else {
results.push_back({curr_row, curr_col, prev_row, prev_col});
}
}
}
}
};
dfs(0, start_row, start_col);
sort(results.begin(), results.end());
for (auto &coord : results) {
cout << coord[0] << " " << coord[1] << " " << coord[2] << " " << coord[3] << "\n";
}
return 0;
}
2.正括号不要另起一行写。比如:
//标准写法
if(a){
b = a >> 1;
sfp(b);
}
//不太标准写法1
if(a != 0)
{
b = a / 2;
sfp(b);
}
//不太标准写法2
if(a){
b=a>>1;
sfp(b);
}
3.如同2代码所示,变量与符号间最好用空格隔开,易于阅读代码,否则会变得臃肿不堪。
4.尽量简洁书写,该省略的就省略。例如:判断某个数是否为0,只需判断这个数是否为真即可。另外,如果if语句和循环内指令只有1个,可不必添加大括号。
//简洁写法
if(b)
c = 55;
for(int i = m;i <= n;i ++){
int j;
for(j = 2;j <= sqrt(i);j ++)
if(!(i % j))
break;
if(j > sqrt(i))
puts("Yes");
else
puts("No");
}
//不太简洁的写法
if(b != 0){
c = 55;
}
for(int i = m;i <= n;i ++){
int j;
for(j = 2;j <= sqrt(i);j ++){
if(i % j == 0){
break;
}
}
if(j > sqrt(i)){
puts("Yes");
}else{
puts("No");
}
}
5.区域之间最好换行,易于阅读代码。
以上就是这节课的全部内容了,感谢大家阅读~如果有什么疑问或见解,欢迎通过QQ(847075097)前来交流!