C程序的组成包括以下部分(main.c文件只能有一个)
c语句分为五类:
赋值语句
赋值语句就是赋值表达式加上一个分号构成
而“=”的左右即分为左值和右值,以下是左值和右值的两个解释
locatable 可定位,左值(变量),在RAM中可以通过其地址定位到;
readable 可读,右值(常量),只能读取,在RAM中没有地址,
数据的输入输出
输入输出是以计算机中RAM为主体而言,当计算机向外部输出设备(如显示屏,打印机等)输出数据称为输出,从外部输入设备(如键盘,鼠标,扫描仪等)向计算机输入数据称为输入。
C语言本身不提供输入输出语句,这些操作都是由C函数库中的函数来实现的
C标准I/O函数库(stdio.h)中std表示“标准”,io表示“输入输出”,h表示“head”,#include命令都是放在程序的开头,因此这类文件被称为“头文件”
计算机为提高cpu使用效率,会有一个缓冲区FIFO,专门放置输入输出的数据,如下图
在缓冲区中,数据遵循先进先出的原则,例如先输入的数据先输出
字符数据输入输出
putchar 函数,作用是向终端输出单个字符,一般形式为putchar(r),c可以是字符型变量也可以是整型变量,如果是整型变量,则输出该数据对应的ASCII码表中对应的字符
putchar函数也可以输出控制字符,如putchar("\n")的作用是输出一个换行符,使输出的当前位置移到下一行的开头。
putchar的返回值为字符的ASCII码值
getchar 函数,作用是从终端输入单个字符,其一般形式为 getchar()
注意:getchar和putchar都只能输出或输入单个字符,getchar函数得到的字符可以赋值给一个字符变量或整型变量,也可不赋值给任何变量,仅作为表达式的一部分,另外,getchar函数也会将功能字符(如回车)当成一个字符输入。
格式输入输出
printf 函数,一般格式为printf("格式控制(占位符),输出表列(实参)")
%d | 以十进制有符号数据输出 |
%u | 以十进制无符号数据输出 |
%o | 以八进制无符号数据输出 |
%x/%X | 以十六进制无符号数据输出 |
%e/%E | 以科学计数法输出 |
%f/%F | 以十进制浮点型输出(存在精度丢失现象) |
%m.nf | m表示数据宽度,n表示保留小数点后n位有效数字 |
%g/%G | 以最简短的形式输出%e或%f |
%s | 以字符串形式输出 |
%p | 以指针地址形式输出 |
%% | 表示一个%(类似转义字符中的\\) |
注意:在用printf函数输出时,一定注意数据类型应与上述格式说明匹配,否则将会出现错误。
scanf 函数,一般形式为scanf(格式控制,地址表列)
scanf函数传递的数据为地址,所以需要用&(取地址运算符)获取变量的地址,因为常量并没有具体的地址,所以不能为“&常量”这样的形式。
在输入多个数据时,在两个数据之间以一个或多个空格间隔,也可以用Enter键、Tab键。
scanf函数的格式控制字符与printf函数一样
在输入字符时,空格字符与转义字符都作为有效字符输入
注意:在scanf函数中,数据类型一定要匹配,例如当数据类型为double时,占位符用%lf
#include <stdio.h>
#include <math.h>
int main(void)
{
printf("请输入三角形三边长:");
float a,b,c;
int ret;
ret = scanf("%f%f%f",&a,&b,&c);
while(ret !=3||(a + b) <= c || (a + c) <= b || (b + c) <= a)
{
printf("error! please input again!");
while(getchar() !='\n')
{
}
ret = scanf("%f%f%f",&a,&b,&c);
}
float s;
s = (a + b + c) / 2;
float area;
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("三角形的面积为:%f\n",area);
return 0;
}
标签:输出,putchar,函数,字符,基础,C语言,数据,输入
From: https://blog.csdn.net/2301_80729373/article/details/145040086