博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【读书笔记】【C程序设计语言】【第一章】【基本概念】
阅读量:6134 次
发布时间:2019-06-21

本文共 3315 字,大约阅读时间需要 11 分钟。

环境准备

我的是Mac环境

cc:

Apple LLVM version 10.0.0 (clang-1000.10.44.2)
Target:x86_64-apple-darwin17.7.0
Thread model: posix

编辑器:CotEditor

1.1 入门

需求

打印hello,world

开发

  • 新建hello.c文件
  • 输入下列代码
#include 
main(){ printf("hello,world\n");}

但请注意,以上代码编译后会产生警告,原书发布时间较早的原因,是没有说明的,大家要留意。

hello.c:2:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main()
^

所以我们要改成:

#include 
int main(){ printf("hello,world\n");}

#include 
int main(){ printf("hello,world\n"); return 0;}

这两种写法编译后都不会产生警告,正确编译,但是推荐用第二种写法,因为从程序运行上更严谨。

  • 在终端中输入cc hello.c,执行
  • 在hello.c所在目录,继续输入./a.out,执行,输出hello,world

注意事项

  • 不加n情况
#include 
int main(){ printf("hello,world"); return 0;}

输出结果,发现hello,world没有换行。

clipboard.png

  • n换成c情况
#include 
int main(){ printf("hello,world\c"); return 0;}

输出结果,发现编译时出现警告,并且运行是hello,world后面多了一个c,但是没有输出。

clipboard.png

1.2 变量与算数表达式

需求1

使用公式℃=(5/9)(℉-32),打印下列华氏度与摄氏度的对照表

0 -17
20 -6
40 4
60 15
80 26
100 37
120 48
140 60
160 71
180 82
200 93
220 104
240 115
260 126
280 137
300 148

开发

  • 新建文件,键入下列代码
#include 
int main(){ /*当fahr=0,20,...,300时,分别打印华氏温度与摄氏温度对照表*/ float fahr,celsius; float lower,upper,step; lower=0;/*温度表的下限*/ upper=300;/*温度表的上限*/ step=20;/*步长*/ fahr=lower; printf("%s\t%s\n","华氏度","摄氏度"); while(fahr<=upper){ celsius=(5.0/9.0)*(fahr-32.0); printf("%3.0f\t%6.1f\n",fahr,celsius); fahr=fahr+step; } return 0;}
  • 输出结果

clipboard.png

需求2

根据需求1,将摄氏温度转换为华氏温度,其他条件不变

开发

根据需求1的公式,有需求2的公式,℉=(9℃+160)/5

  • 新建文件,键入下列代码
#include 
int main(){ /*当celsius=0,20,...,300时,分别打印摄氏温度与华氏温度对照表*/ float fahr,celsius; float lower,upper,step; lower=0;/*温度表的下限*/ upper=300;/*温度表的上限*/ step=20;/*步长*/ celsius=lower; printf("%s\t%s\n","摄氏度","华氏度"); while(celsius<=upper){ fahr=(160.0/5.0)+(9*celsius/5.0); printf("%3.0f\t%6.1f\n",celsius,fahr); celsius=celsius+step; } return 0;}
  • 输出结果

clipboard.png

注意事项

  • /*注释*/表示多行注释,另一种是单行注释//注释
  • 类型
类型 范围 说明
char -128~127 字符
short -32768~32767 短整型
int 16位-32768~32767,32位-2147483648~2147483647($-2^{32}~2^{32}-1$) 整型
long 长整型
float $10^{-38}-10^{38}$$ 单精度浮点型
double 双精度浮点型
  • 整数除法操作将进行舍位,结果中的任何小数部分都会被舍弃
  • 格式化,百分号(%)表示参数替换位置,后面紧跟的符号,表示打印的格式
格式 说明
%d 打印十进制整数
%3d 打印3位十进制整数,右对齐
%3.0d 打印3位十进制整数,且不带小数点和小数部分,右对齐
%3.1d 打印3位十进制整数,且带小数点和1位小数,右对齐
%.1d 打印十进制整数,且带小数点和1位小数,右对齐
%f 打印十进制浮点数,包括float、double类型
%x 打印十六进制数
%o 打印八进制数
%s 打印字符串
%c 打印字符
%% 打印%本身

1.3 for

需求1

将1.2节需求1中的while改成for来实现

开发

  • 新建文件,键入下列代码
#include 
int main(){ /*当fahr=0,20,...,300时,分别打印华氏温度与摄氏温度对照表*/ int fahr; printf("%s\t%s\n","华氏度","摄氏度"); for(fahr=0;fahr<=300;fahr=fahr+20){ printf("%3d\t%6.1f\n",fahr,((5.0/9.0)*(fahr-32))); } return 0;}
  • 输出结果

clipboard.png

需求2

将需求1中的结果逆序打印

开发

  • 新建文件,键入下列代码
#include 
int main(){ /*当fahr=0,20,...,300时,分别打印华氏温度与摄氏温度对照表*/ int fahr=300; printf("%s\t%s\n","华氏度","摄氏度"); for(fahr=300;fahr>=0;fahr=fahr-20){ printf("%3d\t%6.1f\n",fahr,((5.0/9.0)*(fahr-32))); } return 0;}
  • 输出结果

clipboard.png

注意事项

  • for适合循环次数已知的情况
  • while适合循环次数未知的情况

1.4 符号常量

需求1

将1.3节需求1中的幻数改成符号常量来实现

开发

  • 新建文件,键入下列代码
#include 
#define LOWER 0#define UPPER 300#define STEP 20int main(){ /*当fahr=0,20,...,300时,分别打印华氏温度与摄氏温度对照表*/ int fahr; printf("%s\t%s\n","华氏度","摄氏度"); for(fahr=LOWER;fahr<=UPPER;fahr=fahr+STEP){ printf("%3d\t%6.1f\n",fahr,((5.0/9.0)*(fahr-32))); } return 0;}
  • 输出结果

clipboard.png

注意事项

  • #define 名字 替换文本
  • 名字与普通变量名相同,替换文本可以是任何字符序列,不仅限于数字

(未完待续)

转载地址:http://pleua.baihongyu.com/

你可能感兴趣的文章
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
bash complete -C command
查看>>
解决zabbix 3.0中1151端口不能运行问题
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
dubbo
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
高利率时代的结局,任重道远,前途叵测
查看>>
phpcms v9栏目列表调用每一篇文章内容方法
查看>>
python 自定义信号处理器
查看>>
luov之SMTP报错详解
查看>>
软件概要设计做什么,怎么做
查看>>
dwr
查看>>