友情提示:先关注收藏,再查看,13 万字保姆级 C 语言从入门到精通教程。
什么是计算机 ?
计算机的发明者是谁 ?
- 现在世界上***公认***的第一台现代电子计算机是1946年在美国宾夕法尼亚大学诞生的ENIAC(Electronic Numerical Integrator And Calculator)
计算机是一种电器, 所以计算机只能识别两种状态, 一种是通电一种是断电
正是因为如此, 最初ENIAC的程序是由很多开关和连接电线来完成的。但是这样导致***改动一次程序要花很长时间***(需要人工重新设置很多开关的状态和连接线)
为了提高效率,工程师们想能不能把程序和数据都放在存储器中, 数学家冯·诺依曼将这个思想以数学语言系统阐述,提出了存储程序计算机模型(这是所谓的冯·诺依曼机)
那利用数学语言如何表示计算机能够识别的通电和断电两种状态呢?
0和1更准确的是应该是高电平和低电平, 但是这个不用了解, 只需要知道计算机只能识别0和1以及存储的数据都是由0和1组成的即可。
计算机程序是为了告诉计算机"做某件事或解决某个问题"而用"***计算机语言***编写的命令集合(语句)
只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作,计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成
现实生活中你如何告诉别人如何做某件事或者解决某个问题?
10111000 00000001 00000000 00000101 00000001 00000000MOV AX, 1 ADD AX, 11 + 1“初,世间无语言,仅电路与连线。及大牛出,天地开,始有 FORTRAN、 LISP、ALGOL 随之, 乃有万种语”
当你想了解底层原理时,你才会发现后悔当初没有学习C语言
当你想学习一门新的语言时, 你才会发现后悔当初没有学习C语言
当你使用一些高级框架、甚至系统框架时发现提供的API都是C语言编写的, 你才发现后悔当初没有学习C语言
学好数理化,走遍天下都不拍
学好C语言,再多语言都不怕
| 学习本套课程之前 | 学习本套课程中 | 学习本套课程之后 |
|---|---|---|
| [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gHyaoC72-1623039894713)(upload-images.jianshu.io/upload_images/647982-c724f6cd01191121.png?imageMogr2/auto-orient/strip)] |
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
切记囫囵吞枣, 不要纠结里面的东西都是什么含义, 初学者安装成功就是一种成功
下载Qt Creator离线安装包:
以管理身份运行离线安装包
下一步,下一步,下一步,等待ing…
注意安装路径中最好不要出现中文
对于初学者而言全选是最简单的方式(重点!!!)
配置Qt Creator开发环境变量
你的安装路径5.11.0mingw53_32bin
你的安装路径Toolsmingw530_32bin
手机有很多功能, “开机”,“关机”,“打电话”,“发短信”,"拍照"等等
手机中的每一个功能就相当于C语言程序中的一个程序段(函数)
众多功能中总有一个会被先执行,不可能多个功能一起执行
想使用手机必须先执行手机的开机功能
所以C语言程序也一样,由众多功能、众多程序段组成, 众多C语言程序段中总有一个会被先执行, 这个先执行的程序段我们称之为"主函数"
一个C语言程序由多个"函数"构成,每个函数有自己的功能
一个程序***有且只有一个主函数***
如果一个程序没有主函数,则这个程序不具备运行能力
程序运行时系统会***自动调用***主函数,而其它函数需要开发者***手动调用***
主函数有固定书写的格式和范写
int main() {
// insert
return 0;
}
int call() {
return 0;
}
int main() {
call();
return 0;
}
int call(){
return 0;
}
int main(){
call();
printf();
return 0;
}
printf("hello worldn");
#include <stdio.h>
int call(){
return 0;
}
int main(){
call();
printf("hello worldn");
return 0;
}
int main(){
printf("hello worldn") // 如果没有分号编译时会报错
return 0;
}
int main(){
// 如果没有分号,多条语句合并到一行时, 系统不知道从什么地方到什么地方是一条完整语句
printf("hello worldn") return 0;
}
int main(){
printf("hello worldn"); // 这里的分号如果是中文的分号就会报错
return 0;
}
int main(){
return 0;
}
int main(){ // 编译时会报错, 重复定义
return 0;
}
int call(){ // 编译时报错, 因为只有call函数, 没有main函数
return 0;
}
int mian(){ // 编译时报错, 因为main函数的名称写错了,还是相当于没有main函数
return 0;
}
#include <stdio.h>
main(){ // 不会报错
printf("hello worldn");
return 0;
}
#include <stdio.h>
void main(){ // 不会报错
printf("hello worldn");
return 0;
}
int main(){ // 不会报错
printf("hello worldn");
}
#include <stdio.h>
int main(){
printf("hello worldn");
return 0;
}
Tips:
语法错误:编译器会直接报错
逻辑错误:没有语法错误,只不过运行结果不正确
*** ***
*********
*******
****
**
printf(" *** *** n");
printf("*********n");
printf(" *******n");
printf(" ****n");
printf(" **n");
printf(" *** *** n*********n *******n ****n **n");
int i = 0;
while (1) {
if (i % 2 == 0) {
printf(" *** *** n");
printf("*********n");
printf(" *******n");
printf(" ****n");
printf(" **n");
}else
{
printf("n");
printf(" ** ** n");
printf(" *******n");
printf(" *****n");
printf(" **n");
}
sleep(1);
i++;
system("cls");
}
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O = /O
____/`---'____
. ' \| |// `.
/ \||| : |||//
/ _||||| -:- |||||-
| | \ - /// | |
| _| ''---/'' | |
.-__ `-` ___/-. /
___`. .' /--.-- `. . __
."" '< `.____<|>_/___.' >'"".
| | : `- `.;` _ /`;.`/ - ` : | |
`-. _ __ /__ _/ .-` / /
======`-.____`-.________/___.-`____.-'======
`=---='
.............................................
佛祖保佑 有无BUG
━━━━━━神兽出没━━━━━━
┏┓ ┏┓
┏┛┻━━━━━━┛┻┓
┃ ┃
┃ ━ ┃
┃ ┳┛ ┗┳ ┃
┃ ┃
┃ ┻ ┃
┃ ┃
┗━┓ ┏━┛Code is far away from bug with the animal protecting
┃ ┃ 神兽保佑,代码无bug
┃ ┃
┃ ┗━━━┓
┃ ┣┓
┃ ┏━━┛┛
┗┓┓┏━┳┓┏┛
┃┫┫ ┃┫┫
┗┻┛ ┗┻┛
━━━━━━感觉萌萌哒━━━━━━
´´´´´´´´██´´´´´´´
´´´´´´´████´´´´´´
´´´´´████████´´´´
´´`´███▒▒▒▒███´´´´´
´´´███▒●▒▒●▒██´´´
´´´███▒▒▒▒▒▒██´´´´´
´´´███▒▒▒▒██´ 项目:第一个C语言程序
´´██████▒▒███´´´´´ 语言: C语言
´██████▒▒▒▒███´´ 编辑器: Qt Creator
██████▒▒▒▒▒▒███´´´´ 版本控制:git-github
´´▓▓▓▓▓▓▓▓▓▓▓▓▓▒´´ 代码风格:江哥style
´´▒▒▒▒▓▓▓▓▓▓▓▓▓▒´´´´´
´.▒▒▒´´▓▓▓▓▓▓▓▓▒´´´´´
´.▒▒´´´´▓▓▓▓▓▓▓▒
..▒▒.´´´´▓▓▓▓▓▓▓▒
´▒▒▒▒▒▒▒▒▒▒▒▒
´´´´´´´´´███████´´´´´
´´´´´´´´████████´´´´´´´
´´´´´´´█████████´´´´´´
´´´´´´██████████´´´´ 大部分人都在关注你飞的高不高,却没人在乎你飞的累不累,这就是现实!
´´´´´´██████████´´´ 我从不相信梦想,我,只,相,信,自,己!
´´´´´´´█████████´´
´´´´´´´█████████´´´
´´´´´´´´████████´´´´´
________▒▒▒▒▒
_________▒▒▒▒
_________▒▒▒▒
________▒▒_▒▒
_______▒▒__▒▒
_____ ▒▒___▒▒
_____▒▒___▒▒
____▒▒____▒▒
___▒▒_____▒▒
███____ ▒▒
████____███
█ _███_ _█_███
——————————————————————————女神保佑,代码无bug——————————————————————
#include<stdio.h>
int main() {
printf("南哥带你装B带你飞");
return 0;
}
#include<iostream>
using namespace std;
int main() {
cout << "南哥带你装B带你飞" << endl;
return 0;
}
#import <Foundation/Foundation.h>
int main() {
NSLog(@"南哥带你装B带你飞");
return 0;
}
class Test
{
public static viod main()
{
system.out.println("南哥带你装B带你飞");
}
}
package main
import "fmt" //引入fmt库
func main() {
fmt.Println("南哥带你装B带你飞")
}
void printMap(char map[6][7] , int row, int col);
int main(int argc, const char * argv[])
{
char map[6][7] = {
{'#', '#', '#', '#', '#', '#', '#'},
{'#', ' ', ' ', ' ', '#' ,' ', ' '},
{'#', 'R', ' ', '#', '#', ' ', '#'},
{'#', ' ', ' ', ' ', '#', ' ', '#'},
{'#', '#', ' ', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#', '#', '#'}
};
int row = sizeof(map)/sizeof(map[0]);
int col = sizeof(map[0])/ sizeof(map[0][0]);
printMap(map, row, col);
int pRow = 2;
int pCol = 1;
int endRow = 1;
int endCol = 6;
while ('R' != map[endRow][endCol]) {
printf("亲, 请输入相应的操作n");
printf("w(向上走) s(向下走) a(向左走) d(向右走)n");
char run;
run = getchar();
switch (run) {
case 's':
if ('#' != map[pRow + 1][pCol]) {
map[pRow][pCol] = ' ';
pRow++;//3
map[pRow][pCol] = 'R';
}
break;
case 'w':
if ('#' != map[pRow - 1][pCol]) {
map[pRow][pCol] = ' ';
pRow--;
map[pRow][pCol] = 'R';
}
break;
case 'a':
if ('#' != map[pRow][pCol - 1]) {
map[pRow][pCol] = ' ';
pCol--;
map[pRow][pCol] = 'R';
}
break;
case 'd':
if ('#' != map[pRow][pCol + 1]) {
map[pRow][pCol] = ' ';
pCol++;
map[pRow][pCol] = 'R';
}
break;
}
printMap(map, row, col);
}
printf("你太牛X了n");
printf("想挑战自己,请购买完整版本n");
return 0;
}
void printMap(char map[6][7] , int row, int col)
{
system("cls");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%c", map[i][j]);
}
printf("n");
}
}
/*
R代表一个人
#代表一堵墙
// 0123456
####### // 0
# # // 1
#R ## # // 2
# # # // 3
## # // 4
####### // 5
分析:
>1.保存地图(二维数组)
>2.输出地图
>3.操作R前进(控制小人行走)
3.1.接收用户输入(scanf/getchar)
w(向上走) s(向下走) a(向左走) d(向右走)
3.2.判断用户的输入,控制小人行走
3.2.1.替换二维数组中保存的数据
(
1.判断是否可以修改(如果不是#就可以修改)
2.修改现有位置为空白
3.修改下一步为R
)
3.3.输出修改后的二维数组
4.判断用户是否走出出口
*/
// 声明打印地图方法
void printMap(char map[6][7] , int row, int col);
int main(int argc, const char * argv[])
{
// 1.定义二维数组保存迷宫地图
char map[6][7] = {
{'#', '#', '#', '#', '#', '#', '#'},
{'#', ' ', ' ', ' ', '#' ,' ', ' '},
{'#', 'R', ' ', '#', '#', ' ', '#'},
{'#', ' ', ' ', ' ', '#', ' ', '#'},
{'#', '#', ' ', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#', '#', '#'}
};
// 2.计算地图行数和列数
int row = sizeof(map)/sizeof(map[0]);
int col = sizeof(map[0])/ sizeof(map[0][0]);
// 3.输出地图
printMap(map, row, col);
// 4.定义变量记录人物位置
int pRow = 2;
int pCol = 1;
// 5.定义变量记录出口的位置
int endRow = 1;
int endCol = 6;
// 6.控制人物行走
while ('R' != map[endRow][endCol]) {
// 6.1提示用户如何控制人物行走
printf("亲, 请输入相应的操作n");
printf("w(向上走) s(向下走) a(向左走) d(向右走)n");
char run;
run = getchar();
// 6.2根据用户输入控制人物行走
switch (run) {
case 's':
if ('#' != map[pRow + 1][pCol]) {
map[pRow][pCol] = ' ';
pRow++;//3
map[pRow][pCol] = 'R';
}
break;
case 'w':
if ('#' != map[pRow - 1][pCol]) {
map[pRow][pCol] = ' ';
pRow--;
map[pRow][pCol] = 'R';
}
break;
case 'a':
if ('#' != map[pRow][pCol - 1]) {
map[pRow][pCol] = ' ';
pCol--;
map[pRow][pCol] = 'R';
}
break;
case 'd':
if ('#' != map[pRow][pCol + 1]) {
map[pRow][pCol] = ' ';
pCol++;
map[pRow][pCol] = 'R';
}
break;
}
// 6.3重新输出行走之后的地图
printMap(map, row, col);
}
printf("你太牛X了n");
printf("想挑战自己,请购买完整版本n");
return 0;
}
/**
* @brief printMap
* @param map 需要打印的二维数组
* @param row 二维数组的行数
* @param col 二维数组的列数
*/
void printMap(char map[6][7] , int row, int col)
{
// 为了保证窗口的干净整洁, 每次打印都先清空上一次的打印
system("cls");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%c", map[i][j]);
}
printf("n");
}
}
单行注释
多行注释
// 南哥 // it666
// /* 江哥 */
// 帅哥
/*
// 作者:LNJ
// 描述:第一个C语言程序作用:这是一个主函数,C程序的入口点
*/
/*
哈哈哈
/*嘻嘻嘻*/
呵呵呵
*/
/*
R代表一个人
#代表一堵墙
// 0123456
####### // 0
# # // 1
#R ## # // 2
# # # // 3
## # // 4
####### // 5
分析:
>1.保存地图(二维数组)
>2.输出地图
>3.操作R前进(控制小人行走)
3.1.接收用户输入(scanf/getchar)
w(向上走) s(向下走) a(向左走) d(向右走)
3.2.判断用户的输入,控制小人行走
3.2.1.替换二维数组中保存的数据
(
1.判断是否可以修改(如果不是#就可以修改)
2.修改现有位置为空白
3.修改下一步为R
)
3.3.输出修改后的二维数组
4.判断用户是否走出出口
*/
// 2.计算地图行数和列数
int row = sizeof(map)/sizeof(map[0]);
int col = sizeof(map[0])/ sizeof(map[0][0]);
/**
* @brief printMap
* @param map 需要打印的二维数组
* @param row 二维数组的行数
* @param col 二维数组的列数
*/
void printMap(char map[6][7] , int row, int col)
{
system("cls");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%c", map[i][j]);
}
printf("n");
}
}
// 1.定义二维数组保存迷宫地图
char map[6][7] = {
{'#', '#', '#', '#', '#', '#', '#'},
{'#', ' ', ' ', ' ', '#' ,' ', ' '},
{'#', 'R', ' ', '#', '#', ' ', '#'},
{'#', ' ', ' ', ' ', '#', ' ', '#'},
{'#', '#', ' ', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#', '#', '#'}
};
// 2.计算地图行数和列数
int row = sizeof(map)/sizeof(map[0]);
int col = sizeof(map[0])/ sizeof(map[0][0]);
// 3.输出地图
printMap(map, row, col);
// 4.定义变量记录人物位置
int pRow = 2;
int pCol = 1;
// 5.定义变量记录出口的位置
int endRow = 1;
int endCol = 6;
// 6.控制人物行走
while ('R' != map[endRow][endCol]) {
... ...
}
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|
| char | short | int | long | float | double | if | else |
| return | do | while | for | switch | case | break | continue |
| default | goto | sizeof | auto | register | static | extern | unsigned |
| signed | typedef | struct | enum | union | void | const | volatile |
这些不用专门去记住,用多了就会了。在编译器里都是有特殊颜色的。 我们用到时候会一个一个讲解这个些关键字怎么用,现在浏览下,有个印象就OK了
| fromNo22 | from#22 | my_Boolean | my-Boolean | 2ndObj | GUI | lnj |
| Mike2jack | 江哥 | _test | test!32 | haha(da)tt | jack_rose | jack&rose |
生活中无时无刻都在跟数据打交道
在我们使用计算机的过程中,也会接触到各种各样的数据
静态的数据
动态的数据
既然硬盘的存储空间这么大,为何不把所有的应用程序加载到硬盘中去执行呢?
1 B(Byte字节) = 8 bit(位)
// 00000000 就是一个字节
// 111111111 也是一个字节
// 10101010 也是一个字节
// 任意8个0和1的组合都是一个字节
1 KB(KByte) = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
整型常量
实型常量
字符常量
字符串常量
自定义常量
常量类型练习
| 123 | 1.1F | 1.1 | .3 | ‘a’ | “a” | “李南江” |
int a;
float b;
char ch;
int a,b,c;
int value;
value = 998; // 赋值
int value; value = 998; // 初始化int a = 10; int b = 4, c = 2;int a, b = 10; //部分初始化
int c, d, e;
c = d = e =0;
int i = 10;
i = 20; // 修改变量的值
int a = 10;
int b = a; // 相当于把a中存储的10拷贝了一份给b
int a = 10, c = 11;
printf("a=%d, c=%d", a, c);
double height = 1.75;
char blood = 'A';
printf("height=%.2f, 血型是%c", height, blood);
int main(){
int i = 998; // 作用域开始
return 0;// 作用域结束
}
int main(){
{
int i = 998; // 作用域开始
}// 作用域结束
printf("i = %dn", i); // 不能使用
return 0;
}
int main(){
{
{
int i = 998;// 作用域开始
}// 作用域结束
printf("i = %dn", i); // 不能使用
}
return 0;
}
int i = 666;
int main(){
printf("i = %dn", i); // 可以使用
return 0;
}// 作用域结束
int call(){
printf("i = %dn", i); // 可以使用
return 0;
}
int main(){
int i = 998; // 作用域开始
int i = 666; // 报错, 重复定义
return 0;
}// 作用域结束
int i = 666;
int i = 998; // 报错, 重复定义
int main(){
return 0;
}
int i = 666;
int main(){
int i = 998; // 不会报错
return 0;
}
int main(){
int i = 998; // 不会报错
return 0;
}
int call(){
int i = 666; // 不会报错
return 0;
}
| 类型 | 16位编译器 | 32位编译器 | 64位编译器 |
|---|---|---|---|
| char | 1 | 1 | 1 |
| int | 2 | 4 | 4 |
| float | 4 | 4 | 4 |
| double | 8 | 8 | 8 |
| short | 2 | 2 | 2 |
| long | 4 | 4 | 8 |
| long long | 8 | 8 | 8 |
| void* | 2 | 4 | 8 |
int main(){
int number;
int value;
number = 22;
value = 666;
}
#include <stdio.h>
int main(){
int number;
int value;
number = 22;
value = 666;
printf("&number = %pn", &number); // 0060FEAC
printf("&value = %pn", &value); // 0060FEA8
}
先不要着急, 刚开始接触C语言, 我先了解这么多就够了. 后面会再次更深入的讲解存储的各种细节。
printf("格式控制字符串",输出项列表 );printf("a = %d, b = %d",a, b);%[标志][输出宽度][.精度][长度]类型printf("a = %类型", a);| 类型 | 含义 |
|---|---|
| d | 有符号10进制整型 |
| i | 有符号10进制整型 |
| u | 无符号10进制整型 |
| o | 无符号8进制整型 |
| x | 无符号16进制整型 |
| X | 无符号16进制整型 |
| f | 单、双精度浮点数(默认保留6位小数) |
| e / E | 以指数形式输出单、双精度浮点数 |
| g / G | 以最短输出宽度,输出单、双精度浮点数 |
| c | 字符 |
| s | 字符串 |
| p | 地址 |
#include <stdio.h>
int main(){
int a = 10;
int b = -10;
float c = 6.6f;
double d = 3.1415926;
double e = 10.10;
char f = 'a';
// 有符号整数(可以输出负数)
printf("a = %dn", a); // 10
printf("a = %in", a); // 10
// 无符号整数(不可以输出负数)
printf("a = %un", a); // 10
printf("b = %un", b); // 429496786
// 无符号八进制整数(不可以输出负数)
printf("a = %on", a); // 12
printf("b = %on", b); // 37777777766
// 无符号十六进制整数(不可以输出负数)
printf("a = %xn", a); // a
printf("b = %xn", b); // fffffff6
// 无符号十六进制整数(不可以输出负数)
printf("a = %Xn", a); // A
printf("b = %Xn", b); // FFFFFFF6
// 单、双精度浮点数(默认保留6位小数)
printf("c = %fn", c); // 6.600000
printf("d = %lfn", d); // 3.141593
// 以指数形式输出单、双精度浮点数
printf("e = %en", e); // 1.010000e+001
printf("e = %En", e); // 1.010000E+001
// 以最短输出宽度,输出单、双精度浮点数
printf("e = %gn", e); // 10.1
printf("e = %Gn", e); // 10.1
// 输出字符
printf("f = %cn", f); // a
}
printf("a = %[宽度]类型", a);#include <stdio.h>
int main(){
// 实际位数小于指定宽度
int a = 1;
printf("a =|%d|n", a); // |1|
printf("a =|%5d|n", a); // | 1|
// 实际位数大于指定宽度
int b = 1234567;
printf("b =|%d|n", b); // |1234567|
printf("b =|%5d|n", b); // |1234567|
}
printf("a = %[标志][宽度]类型", a);| 标志 | 含义 |
|---|---|
| - | 左对齐, 默认右对齐 |
| + | 当输出值为正数时,在输出值前面加上一个+号, 默认不显示 |
| 0 | 右对齐时, 用0填充宽度.(默认用空格填充) |
| 空格 | 输出值为正数时,在输出值前面加上空格, 为负数时加上负号 |
| # | 对c、s、d、u类型无影响 |
| # | 对o类型, 在输出时加前缀o |
| # | 对x类型,在输出时加前缀0x |
#include <stdio.h>
int main(){
int a = 1;
int b = -1;
// -号标志
printf("a =|%d|n", a); // |1|
printf("a =|%5d|n", a); // | 1|
printf("a =|%-5d|n", a);// |1 |
// +号标志
printf("a =|%d|n", a); // |1|
printf("a =|%+d|n", a);// |+1|
printf("b =|%d|n", b); // |-1|
printf("b =|%+d|n", b);// |-1|
// 0标志
printf("a =|%5d|n", a); // | 1|
printf("a =|%05d|n", a); // |00001|
// 空格标志
printf("a =|% d|n", a); // | 1|
printf("b =|% d|n", b); // |-1|
// #号
int c = 10;
printf("c = %on", c); // 12
printf("c = %#on", c); // 012
printf("c = %xn", c); // a
printf("c = %#xn", c); // 0xa
}
printf("a = %[精度]类型", a);#include <stdio.h>
int main(){
double a = 3.1415926;
printf("a = %.2fn", a); // 3.14
}
printf("a = %.*f", a);#include <stdio.h>
int main(){
double a = 3.1415926;
printf("a = %.*f", 2, a); // 3.14
}
#include <stdio.h>
int main(){
// 1234.567871093750000
float a = 1234.567890123456789;
// 1234.567890123456900
double b = 1234.567890123456789;
printf("a = %.15fn", a); // 前8位数字是准确的, 后面的都不准确
printf("b = %.15fn", b); // 前16位数字是准确的, 后面的都不准确
}
printf("a = %[长度]类型", a);| 长度 | 修饰类型 | 含义 |
|---|---|---|
| hh | d、i、o、u、x | 输出char |
| h | d、i、o、u、x | 输出 short int |
| l | d、i、o、u、x | 输出 long int |
| ll | d、i、o、u、x | 输出 long long int |
#include <stdio.h>
int main(){
char a = 'a';
short int b = 123;
int c = 123;
long int d = 123;
long long int e = 123;
printf("a = %hhdn", a); // 97
printf("b = %hdn", b); // 123
printf("c = %dn", c); // 123
printf("d = %ldn", d); // 123
printf("e = %lldn", e); // 123
}
printf("%f%%", 3.1415);#include <stdio.h>
int main(){
printf("%f%%", 3.1415); // 输出结果3.1415%
}
scanf("格式控制字符串", 地址列表);scanf("%d", &num);#include <stdio.h>
int main(){
int number;
scanf("%d", &number); // 接收一个整数
printf("number = %dn", number);
}
#include <stdio.h>
int main(){
float num;
// 例如:输入 Tab 空格 回车 回车 Tab 空格 3.14 , 得到的结果还是3.14
scanf("%f", &num);
printf("num = %fn", num);
}
本文发布于:2024-06-06 05:33:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/1724541712315093.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
| 留言与评论(共有 0 条评论) |