提示:本篇文章为C语言基础知识的个人总结,内容如若有误,请及时联系我更正。
- 转载请注明原创,谢谢。
文章目录
前言
大家好,我是小明,今天总结的是C语言基础知识的相关知识。
提示:以下是本篇文章正文内容:
一、输入输出
要了解输入和输出,我们就得先明白什么是顺序结构。顺序结构是指代码按照从上到下的顺序依次执行,每行代码的执行顺序是确定的,不会跳过或重复执行。
1. 从主函数main开始执行,按照代码的编写顺序逐行执行。
2. 执行一行代码后,程序将自动转移到下一行代码。
3. 函数的调用会暂停当前函数的执行,转而执行被调用的函数,直到返回到调用函数的位置。
4. 函数执行完毕后,将返回到调用函数的下一行代码继续执行。
顺序结构是C语言中最基本的控制结构,它允许程序按照指定的顺序执行操作。通过合理地组织顺序结构,可以实现复杂的计算逻辑和功能。
#include <stdio.h>
int main()
{
int a = 2;
int b = 3;
int c;
c = a + b;
printf("a与b的和是: %d\n", c);
return 0;
}
C语言本身不提供输入输出函数,输入输出操作是由C语言函数库中的输入、输出函数来实现的。
1. 输出函数
在C语言中可以使用printf( )、putchar( )、puts( )等函数进行数据输出。
(1) printf函数
C语言中最基础的数据输出函数是printf函数,其功能是按照用户指定的格式,把指定的数据输出到屏幕上,printf函数的格式为:
printf("格式控制字符串",输出表项);
//功能:向显示器输出数据
其中,“输出表项”的作用是将要输出的数据转换为指定的格式输出。它总是由“%”符号开始,紧跟其后是格式描述符。
常见格式字符 | 说明 |
---|---|
c | 输出一个字符 |
s | 输出字符串中的字符,直到遇到‘\0’ |
d | 输出十进制整数 |
ld | 输出长整型数 |
o | 输出无符号的八进制数 |
x或X | 输出无符号的十六进制数 |
u | 输出无符号的十进制整数 |
f | 输出单精度实数 |
lf | 输出双精度实数 |
例:
#include<stdio.h>
int main()
{
int a = 255;
printf("%d\n",a);// d 十进制数
printf("%x\n", a);// x 十六进制无符号整数
printf("%o\n", a);// o 八进制无符号整数
printf("%u\n", a);// u 无符号十进制整数
char b = 65;
printf("%c\n",b);//字符
printf("%s\n","ABC");//字符串
float d = 456.789;
printf("%f\n",d);//单精度的实数
printf("%lf\n", d);//双精度的实数
printf("%%");//百分号本身
return 0;
}
运行结果:
(2) putchar函数
putchar函数用于在屏幕上输出一个字符。格式为:
putchar(ch);
//其中的ch必须是一个字符变量或常量
(3) puts函数
puts函数用于在屏幕上输出一个字符串。格式为:
putchar(str);
//其中的str必须是一个字符变量或常量
2. 输入函数
在C语言中可以使用scanf( )、getchar( )、gets( )等函数进行数据输入。
(1) scanf函数
scanf函数是C语言提供的标准输入函数,它的作用是在终端设备( 或系统隐含指定的输入设备 ) 上输入数据 。其一般调用形式如下:
scanf("格式控制串",输入表项);
其中scanf是函数名。“格式控制串” 要用双引号括起来,其作用是指定输入时的数据转换格式,即格式转换说明。格式转换说明也由 “%” 符号开始,其后是格式描述符。
“输入项表” 中的各输入项用逗号隔开,各输入项只能是合法的地址表达式,也就是说, 输入项必须是某个存储单元的地址。如果不是地址,要使用“ &” 求地址运算符,如&a就是取变量a的地址。
取地址符一定不能省
常见格式字符 | 说明 |
---|---|
c | s输入一个字符 |
s | 输入字符串 |
d | 输入十进制整数 |
i | 输入整数,整数可以是带前导0的八进制数,带前导0x(或0X)的十六进制数 |
ld | 输入长整型数 |
o | 以八进制形式输入整数 |
x | 以十六进制形式输入整数 |
u | 输入无符号的十进制整数 |
f | 输入单精度实数 |
lf | 输入双精度实数 |
调用scanf函数输入数据时,要注意一下几点:
(2) getchar函数
getchar函数每次只读取一个字符。格式为:
ch = getchar();
//其中,ch必须是一个字符型变量
getchar函数读取字符时,在输入完字符后,必须按Enter键,程序才会读取该字符。
(3) gets函数
gets函数每次只读取一个字符串。格式为:
gets(str);
//其中,stt必须是一个字符串变量
gets函数和scanf函数的区别是:使用gets函数输入的字符串可以有空格,而scanf(“%s”,str)不能输入含空格的字符串。
3. 域宽(修饰符)
众所周知,在C语言中,我们经常遇到需要输入年月日的时候,需要指定的长度,还有小数点后默认的位数是6位,那么我们平时做题时会遇到求平均值,然后保留两位小数等等,都需要域宽。
- 例一:
printf("%5d", 99);
//输出: 99 (前有三个空格)
当 输出内容 小于 域宽 时,向右对齐,左边补空格。
如上,域宽为5 ,输出数据长度为 2 ,则左边补 5 - 2 = 3 个空格。
- 例二:
printf("%1d", 999);
//输出:999(不会删除数据)
当 输出内容 大于 域宽 时,按实际位数输出,不会删减。
- 例三:
printf("%05d", 99);
//输出:00099
当 输出内容 小于 域宽,且有前导时,自动补齐前导。
由例一我们可以知道,在输出99时,前面需要补空格,但是例三中有前导0,那么在输出时会自动补0,即输出 00099 。
运行结果:
- 例四:
通过上面三个例子,我们知道了整数的域宽,那我们再了解一下小数点后的域宽格式:
#include<stdio.h>
int main()
{
float a = 123.456;
printf("%lf\n", a);//原样
printf("%.1lf\n", a);//保留一位
printf("%.2lf\n", a);//保留两位
printf("%.3lf\n", a);//保留三位
printf("%.4lf\n", a);//保留四位
return 0;
}
运行结果:
练习:
我们常见的有年月日时,当月份和日期小于10的时候,我们只输入一位数字,但是我们想在输出的时候至少有两位,那么我们就可以这样做:
#include<stdio.h>
int main()
{
int year = 0;
int month = 0;
int day = 0;
scanf("%d,%d,%d", &year, &month, &day);
//输入: 2023,8,21
printf("%4d年%02d月%02d日", year, month, day);
return 0;
}
运行结果:
二、选择语句
1. if 语句
#include<stdio.h>
int main()
{
int a = 0;
printf("你会好好学编程嘛?(选择 1 或 0 ):\n");
scanf("%d", &a);
if (a == 1)
{
printf("继续努力!斩获好offer!!!\n");
}
else if (a == 0)
{
printf("啥也不会,去工地搬砖!!!\n");
}
return 0;
}
2. switch 语句
#include <stdio.h>
int main()
{
int a= 0;
printf("你会好好学编程嘛?(选择 1 或 0 ):\n");
scanf("%d", &a);
switch (a)
{
case 1:
printf("继续努力!斩获好offer!!!\n");
break;
case 0:
printf("啥也不会,去工地搬砖!!!\n");
break;
}
return 0;
}
两种选择运行结果:
三、循环语句
1. for 循环
#include<stdio.h>
int main()
{
int i = 0;
for (i = 0; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
2. while 循环
#include<stdio.h>
int main()
{
int i = 0;
while(i <= 10)
{
printf("%d ",i);
i++;
}
return 0;
}
3. do while 循环
#include<stdio.h>
int main()
{
int i = 0;
do{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
三段代码的运行结果都是将 0 到10打印在屏幕上 :
好啦,阅读到这里的朋友应该都大致看到了输入输出语句的条件格式,还有基本的选择和循环语句。
之后小明会更加详细的总结选择语句和循环语句,大家可以关注一下小明,支持一下。
完结
好啦,阅读到这里就已经看完了本期博客的全部内容了