饭不食,水不饮,题必须刷
还不会C语言,和我一起打卡! 《光天化日学C语言》
LeetCode 太难?上简单题! 《C语言入门100例》
LeetCode 太简单?大神盘他! 《夜深人静写算法》
#include // (1)
int main() // (2)
{
/* 我的第一个 C 程序 */ // (3)
printf("Hello, World! \n"); // (4)
return 0; // (5)
}
这段代码只做了一件事情,就是向屏幕上输出一行字:
Hello, World!
。
( 1 ) (1) (1)stdio.h
是一个头文件 (标准输入输出头文件) ,#include
是一个预处理命令,用来引入头文件。当编译器遇到printf()
函数时,如果没有找到stdio.h
头文件,就会发生编译错误。
( 2 ) (2) (2)main()
作为这个程序的入口函数,代码都是从这个函数开始执行的。
( 3 ) (3) (3) 被/*
和*/
包围起来的代表注释,是给人看到,不进行代码的解析和执行。
( 4 ) (4) (4)printf
代表将内容输出到控制台上。其中\n
代表换行符。
( 5 ) (5) (5) 作为函数的返回值。
#include // (1)
int main() // (2)
{
/* 我的第一个 C 程序 */ // (3)
printf("光天化日学C语言! \n"); // (4)
return 0; // (5)
}
百度网盘下载
CSDN下载
#include
int main() {
printf("光天化日写C语言!\n");
return 0;
}
对于一个变量而言,有三部分组成:
1)变量类型;
2)变量名;
3)变量地址;
int Iloveyou;
1)变量类型
int
表示变量类型,是英文单词 Integer 的缩写,意思是整数。2)变量名
Iloveyou
表示变量名,也可以叫其它名字,例如:WhereIsHeroFrom
、ILoveYou1314
等等。Iloveyou
,用它来存放整数。int Iloveyou
表达了一个语句,要用分号来结束。需要注意的是,最后有一个分号,int Iloveyou
表达了一个语句,要用分号来结束。3)变量地址
Iloveyou
这个变量里: Iloveyou = 520;
=
在数学中叫 “等于号”,例如 1 + 1 = 2
,但在C语言中,这个过程叫做变量的赋值,简称赋值。赋值是指把数据放到内存的过程。 int Iloveyou;
Iloveyou = 520;
int Iloveyou = 520;
Iloveyou
的值变成 520 520 520; int Iloveyou = 520;
Iloveyou = 521;
Iloveyou = 522;
Iloveyou = 523;
int x, y, z = 5;
z
初始化为 5,等价于如下代码: int x;
int y;
int z = 5;
int a, b;
520 = a; // 错误
a = b; // 正确
【例题1】给出如下代码,求输出结果是什么。
#include
int main()
{
int a = 1314, b = 520;
b = a;
a = b;
printf("a=%d b=%d\n", a, b);
return 0;
}
char a = 'a';
short b, c, d = 1314, e, f;
int g = 5201314;
long long h = 123456789;
float i = 4.5;
double j = 4.50000;
love
、Iloveyou
这样的名字,为了表达变量的作用,这就叫 标识符,即 Identifier。int
、char
、long
、int
、unsigned int
等。_aa
,a123
,_
都是合法的变量,?*
、a a
、#
、都是非法的变量;123abc
不是一个合法的变量名;o
和O
不是同一个变量;【例题2】给出一段程序,请回答这段程序的运行结果。
#include
int main()
{
int IloveYou = 0;
ILoveYou = 1314;
ILoveYou = ILoveYou;
ILoveYou = 520;
printf("%d\n", ILoveYou);
return 0;
}
在C语言中,有三个函数可以用来在屏幕上输出数据,它们分别是:
1)puts() :只能输出字符串,并且输出结束后会自动换行;
2)putchar() :只能输出单个字符;
3)printf():可以输出各种类型的数据,作为最灵活、最复杂、最常用的输出函数,可以完全替代全面两者,所以是必须掌握的,今天我们就来全面了解一下这个函数。
printf
前几个章节都有提及,这个函数的命名含义是:Print(打印) 和 Format (格式) ,即 格式化输出。#include
int main()
{
int a = 520;
long long b = 1314;
printf("a is %d, b is %lld!\n", a, b);
return 0;
}
int
而言,我们利用%d
将要输出的内容进行格式化,然后输出,简单的理解就是把%d
替换为对应的变量,%lld
用于对long long
类型的变量进行格式化,所以这段代码的输出为:a is 520, b is 1314!
#include
int main()
{
float f = 1.2345;
double df = 123.45;
printf("f is %.3f, df is %.0lf\n", f, df);
return 0;
}
%f
来对单精度浮点数float
进行格式化;用%lf
来对双精度浮点数进行格式化,并且用.
加 “数字” 来代表要输出的数精确到小数点后几位,这段代码的输出为:f is 1.235, df is 123
#include
int main()
{
char ch = 'A';
printf("%c\n", ch);
return 0;
}
%c
来进行格式化;C语言中的字符是用单引号引起来的,当然,字符这个概念扯得太远,会单独开一个章节来讲,具体可以参考 ASCII 码。\n
,这个符号是一个转义符,它代表的不是两个字符(反斜杠\
和字母n
),而是换行的意思;A
【例题1】第1行输出1个1,第2行输出2个2,第3行输出3个3,第4行输出4个4。
#include
int main()
{
printf("1\n");
printf("22\n");
printf("333\n");
printf("4444\n");
return 0;
}
#include
int main()
{
printf("1\n22\n333\n4444\n");
return 0;
}
%s
进行格式化的即可,代码如下:#include
int main()
{
char str[100] = "I love you!";
printf("%s\n", str);
return 0;
}
I love you!
%
和一个字母,事实上,在百分号和字母之间,还有一些其它的内容。主要包含如下内容:
1)负号:如果有,则按照左对齐输出;
2)数字:指定字段最小宽度,如果不足则用空格填充;
3)小数点:用与将最小字段宽度和精度分开;
4)精度:用于指定字符串重要打印的而最大字符数、浮点数小数点后的位数、整型最小输出的数字数目;
【例题2】给定如下一段代码,求它的输出内容。
#include
int main()
{
double x = 520.1314;
int y = 520;
printf("[%10.5lf]\n", x);
printf("[%-10.5lf]\n", x);
printf("[%10.8d]\n", y);
printf("[%-10.8d]\n", y);
return 0;
}
[ 520.13140]
[520.13140 ]
[ 00000520]
[00000520 ]
#include
int main()
{
char name[100] = "Zhou";
int old = 18;
double meters = 1.7;
char spostfix = 's';
printf("My name is %s, %d years old, %.2lf meter%c.\n",
name, old, meters, spostfix);
return 0;
}
My name is Zhou, 18 years old, 1.70 meters.
在C语言中,有三个函数可以用来在键盘上输入数据,它们分别是:
1)gets() :用于输入一行字符串;
2)getchar() :用于输入单个字符;
3)scanf():可以输入各种类型的数据,作为最灵活、最复杂、最常用的输入函数,虽然无法完全替代前面两者,但是却是必须掌握的,今天我们就来全面了解一下这个函数。
scanf
的函数的命名含义是:Scan(扫描) 和 Format (格式) ,即 格式化输入。#include
int main()
{
int a;
scanf("%d", &a);
printf("%d\n", a);
return 0;
}
1314↙
1314
其中
↙
代表回车,即我们通过键盘输入1314
,按下回车后,在屏幕上输出1314
。
类比输出,我们发现,输入和输出的差别在于:
( 1 ) (1) (1) 函数名不同;
( 2 ) (2) (2) 输入少了换行符\n
;
( 3 ) (3) (3) 输入多了取地址符&
;
#include
int main()
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("%d %d\n", a, b);
return 0;
}
520↙
1314↙
520 1314
其中
↙
代表回车,即我们通过键盘输入520
,按下回车,再输入1314
,按下回车后,在屏幕上输出520 1314
。
#include
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d %d\n", a, b);
return 0;
}
520 1314↙
520 1314
其中
↙
代表回车,即我们通过键盘输入520
、空格
、1314
,按下回车后,在屏幕上输出520 1314
。
scanf
语句来完成。#include
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d %d\n", a, b);
return 0;
}
520 1314↙
520 1314
其中
↙
代表回车,即我们通过键盘输入520
、n个空格
、1314
,按下回车后,在屏幕上输出520 1314
。
#include
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d %d\n", a, b);
return 0;
}
520 1314↙
520 1314
其中
↙
代表回车,即我们通过键盘输入520
、1个空格
、1314
,按下回车后,在屏幕上输出520 1314
。
scanf()
是以回车来结算一次输入的。scanf()
开始读取用户输入的内容,并根据我们定义好的格式化内容从中提取有效数据,只要用户输入的内容和格式化内容匹配,就能够正确提取。#include
int main()
{
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("%d %d %d %d\n", a, b, c, d);
return 0;
}
1 2 3 4↙
1 2 3 4
1 2 3↙
4↙
1 2 3 4
1 2 3 4 5↙
1 2 3 4
scanf()
,如下:#include
int main()
{
int a, b, c, d, e;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("%d %d %d %d\n", a, b, c, d);
scanf("%d", &e);
printf("%d\n", e);
return 0;
}
1 2 3 4 5↙
1 2 3 4
5
scanf()
,而是放入了输入缓冲区中,当我们按下回车键,scanf()
才到输入缓冲区中读取数据。如果缓冲区中的数据符合 scanf()
给定的格式要求,那么就读取结束;否则,继续等待用户输入,或者读取失败。【例题1】给定一段代码,如下,并且给出一个输入,请问输出是什么。
#include
int main()
{
int a = 9, b = 8, c = 7, d = 6, e = 5;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("%d %d %d %d\n", a, b, c, d);
scanf("%d", &e);
printf("%d\n", e);
return 0;
}
1 2b 3 4 5↙
printf
,如下:&
可以不加,如下:#include
int main()
{
char str[100];
scanf("%s", str); // (1)
printf("%s\n", str);
scanf("%s", &str); // (2)
printf("%s\n", str);
return 0;
}
#include
int main()
{
char str[100];
int height;
printf("请大侠输入姓名:");
scanf("%s", str);
printf("请大侠输入身高(cm):");
scanf("%d", &height);
printf("%s大侠,身高%dcm,骨骼惊奇,是百年难得一遇的人才,只要好好学习C语言,日后必成大器!\n", str, height);
return 0;
}