《带你学C带你飞》S1E5学习笔记
本帖最后由 hxliu 于 2017-7-11 15:06 编辑S1E5
1、C语言中常见的常量有:整型常量、实型常量、字符常量(普通字符和转义字符)、字符串常量、符号常量(需要定义)。
2、定义符号常量(宏定义)格式:#define 标识符 常量
tips:“#”开头的为预处理命令。#define为宏定义命令。
以鱼C工作室为例
#include <stdio.h>
#define URL "http://www.fishc.com"
#define NAME "鱼C工作室"
#define BOSS "小甲鱼"
#define YEAR 2010
#define MONTH 5
#define DAY 20
int main()
{
printf("%s成立于%d年%d月%d日\n",NAME,YEAR,MONTH,DAY);
printf("%s是%s创立的。\n",NAME,BOSS);
printf("%s的域名是:%s\n",NAME,URL);
return 0;
}
3、C语言中的名字都称之为标识符。(如:符号常量名、变量名、函数、数组、自定义类型等名字)
4、使用空字符‘\0’表示字符串结束位置。
5、字符串"FishC"除了'F'、'i'、's'、'h'、'C',五个字符外还有一个'\0’表示结束。
6、宏定义是在程序编译时先进行的预处理,做法是直接将标识符替换成常量,并不进行相关运算。
#define F(n) 2*n
此题F(3+2)直接替换为2*3+2,因此结果为8
做作业时遇到的问题:
双引号"\n",转换字符用了s
#include <stdio.h>
#define NL "\n"
int main()
{
printf("Line1%s", NL);
printf("Line2%s", NL);
return 0;
}
规范的应该是单引号'\n'(双引号的话把换行符当字符串定义了0.0,所以用s的时候结果一样),转换字符用c
#include <stdio.h>
#define NL '\n'
int main()
{
printf("Line1%c",NL);
printf("Line2%c",NL);
return 0;
}
另附作业代码:
①圆
#include <stdio.h>
#define PI 3.14159
#define S(r) PI*r*r
#define C(r) 2*PI*r
int main()
{
int r = 5;
printf("半径为%d的圆,面积是:%.2f,周长是:%.2f",r,S(r),C(r));
return 0;
}
②买菜(为什么小甲鱼买那么多黄瓜萝卜。。。手动滑稽)
#include <stdio.h>
#define FQ 3.7
#define JL 7
#define XQ 1.3
#define KXC 8
#define YCo 2.4
#define YCh 9
#define HG 6.3
#define BLB 0.5
#define XM 1*FQ+0.5*KXC+0.5*YCh
#define XH 1.5*XQ+0.25*YCo+2.5*HG
#define FishC 5*HG+10*BLB
int main()
{
printf("小明需要支付%.2f元\n",XM);
printf("小红需要支付%.2f元\n",XH);
printf("小甲鱼需要支付%.2f元\n",FishC);
return 0;
}
写完后发现小甲鱼版买菜不一样啊,用了float函数啊啊啊(如下),待会认真看看~
#include <stdio.h>
#define FANQIE3.7
#define JIELAN7
#define XIQIN 1.3
#define KONGXINCAI 8
#define YANGCONG 2.4
#define YOUCAI9
#define HUANGGUA 6.3
#define BAILUOBO 0.5
int main()
{
float price;
price = (2 * FANQIE + KONGXINCAI + YOUCAI) * 0.5; // 1斤 == 0.5公斤
printf("小明需要支付%.2f元\n", price);
price = (3 * XIQIN + 0.5 * YANGCONG + 5 * HUANGGUA) * 0.5;
printf("小红需要支付%.2f元\n", price);
price = (10 * HUANGGUA + 20 * BAILUOBO) * 0.5;
printf("小甲鱼需要支付%.2f元\n", price);
return 0;
}
页:
[1]