这篇文章主要是对c语言前面两章易错点总结和补充,主要介绍:
1.输出函数puts
2.单(双,三)目运算符的定义
3.数据类型(int float等)
4.数据转换例题
————————————————————————————————————
1.函数puts
(1)语法形式
puts("语句");
(2)puts的作用:
puts函数可以按顺序输出作为实参的字符串(即" "中的内容),并在结尾换行。其实,puts和printf函数很相似,唯一不同的是puts会自动换行,不需要 \n 换行符,但是相比printf,puts函数不能进行变量的运算
可以看下面一段代码简单理解
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int a, b;
puts("输入两个整数。");
printf("整数1:"); scanf("%d", &a);
printf("整数2:"); scanf("%d", &b);
printf("a+b=%d", a + b);
return 0;
}
puts函数不能进行计算,我们就用printf进行加法运算,可见上面的代码没有用换行符,而puts自动实现了下面每个输出的换行,看下面的结果
*在需要换行且不用格式化输出的时候,就可以使用puts函数来代替printf函数
*像"ABC","输入某数"这样用双引号括起来的一连串连续排列的文字,称为字符串常量
2.单(双,三)目运算符的定义
(1)需要两个操作数的运算符称为双目运算符(如a+b中"+"连接了两个操作数ab,因此称为双目)
(2)只要一个操作数的是单目运算符
单目+运算符 +a 就是a的值
单目-运算符 -a 对a进行符号取反
单目-运算符举例
#include <stdio.h>
int main() {
int a = -1;
printf("%d\n", -a);
return 0;
}
运行结果为1
(3)三目运算符
需要三个操作数,例如条件运算符
表达式1?表达式2:表达式3
具体说明在往期 ’ 各种符号 ’ 中已经提到,这里不过多赘述
3.数据类型(int float等)
(1)类型特征介绍
int(整型)特征
#include <stdio.h>
int main() {
int a=3.5;
printf("%d\n", a);
return 0;
}
执行结果:
上图发现a(3.5)小数点后面的数没了,只留下数值的整数部分——这就是int类型的特点
float,double型(浮点型),这类数据类型能保留小数点后面的数,其中float(单精度浮点型)只能保留小数点后6位,double(双精度浮点型)能保留小数点后12位
%5d ——>执行结果的数至少有五位十进制整数(默认不够的用空格补上)
%5.2f ——>输出至少五位数,且小数点后只显示两位
%05.2f ——>0表示数值前面有空余,用0补齐
注:如果设定了 ” - “,数据会左对齐显示,未设定则会右对齐显示
(2)类型转换
在c语言中除法想要结果有小数点,计算过程中至少要有一个小数
注:%d——>显示int(整数)
%f——>显示浮点数(小数)
假设初始化int a; 想要把整型a转为浮点数——>(double)a,这样a就变为了小数
int a,b;
scanf("%d %d",&a,&b);
printf("%f",((float)a+b)/2);
下面是执行结果
因为a转化为了小数(浮点型),因此结果为小数
注意格式字符与后面结果类型对齐
以下是各种类型举例:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int n1, n2;
double d1, d2;
n1 = 5 / 2; //n1<--2
n2 = 5 / 2.0; //n2<--2.5(赋值给n2时因为n2是整型,舍弃小数部分)
d1 = 5 / 2; //d1<--2(因为5和2都为整数)
d2 = 5.0 / 2; //d2<--2.5
printf("%d\n", n1);
printf("%d\n", n2);
printf("%f\n", d1);
printf("%f\n", d2);
return 0;
}
执行结果如下图
补充:想要在printf中输入%,要写成%%
如
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int a = 4;
int b = 3;
printf("a%%b=%d\n", a%b);
return 0;
}
执行结果如下
以上关于知识点的说明就结束了
4.例题
以下是我碰到过的一道题目,就运用了类型转换的思想,分享给大家
某人正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,
超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。
如果加急的话要额外付五元,请问这个人总共要支付多少快递费
解决方法:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
float a;
char b;
int money = 0;
scanf("%f %c", &a, &b);
if (a <= 1)
{
money = 20;
}
else
{
if (a == (int)a) //判断a是否为整数
{
money = 20 + (a - 1); //a-1是超出部分的价钱
}
else //不是整数把a取整
{
money = 20 + (int)a; //(int)a是超出的价钱
}
}
switch(b) //判断是否加急
case 'y':
money += 5;
printf("%d", money);
return 0;
}