0
点赞
收藏
分享

微信扫一扫

第3章 数据和C(笔记及其作业)

古月无语 2022-01-24 阅读 70
c语言

3.1示例程序

platinum.c程序

/* platinum.c -- your weight in platinum */
#include<stdio.h>
int main(void)
{
	float weight; /*你的体重*/
	float value; /*相等重量的白金价格*/
	
	printf("Are you worth your weight in platinum?\n");
	printf("Let's check it out.\n");
	printf("Please enter your weight in pounds:");
	
	/*获取用户的输入*/
	scanf("%f",&weight);
	/*假设白金的价格是每盎司$1700*/
	value = 1700.0 * weight * 14.5833;
	printf("Your weight in platinum is worth $%.2f.\n",value);
	printf("You are easily worth that!If platinum prices drop,\n");
	printf("eat more to maintain your value.\n");
	
	return 0; 
 } 

3.11程序中的新元素

整数类型的变量(int)//以前例子出现

浮点数类型的变量(float)//在printf()中使用%f来处理浮点值

scanf()函数 //用于读取键盘输入,%f说明scanf()函数读取输入的浮点数,&weight是把输入的值赋予名的变量。scanf()函数使用&符号表明找到变量的地点

本程序体现交互性


3.2变量与常量数据


3.3数据:数据类型关键字

表3.1  C语言的数据类型关键字

最初K&R给出的关键字C90标准添加的关键字C99标准添加的关键字

int//表示整数类型

signed_Bool布尔值(true或false)
long用于提供基本整数类型的变式_Complex复数
short_Imaginary虚数
unsigned
char指定字母和其他字符(#%¥*)、较小的整数
float带小数点的数void
double

3.3.1 整数和浮点数

浮点数:e记数法3.16E7表示3.16*10^7,7被称为10的指数


3.4 C语音基本数据类型

3.4.1 int类型

  • 声明int变量:

声明创建变量: int erns;int hogs,cows,goats;

提供值:1.cows = 112;   

2.通过函数(如,scanf())获得值。

  • 初始化变量

在变量名后面加上赋值运算符(=)和待赋给变量的值即可

  • int类型常量

整数常量或整数字面量

  • 打印int值

%d指明printf()用整数类型打印显示一个值

  • 八进制和十六进制(C语言中用特定的前缀表示使用哪种进制)

Ox或OX前缀表示十六进制

O前缀表示八进制

  • 显示八进制和十六进制

十进制显示数字,使用%d

八进制显示数字,使用%o

十六进制显示数字,使用%x

要显示各进制前缀O、Ox、OX,必须分别使用%#o、%#x、%#x。

bases.c程序

/*basecs.c--以十进制、八进制、十六进制打印十进制数100*/
#include<stdio.h>
int main(void)
{
	int x = 100;
	
	printf("dec = %d; octal = %o; hex = %x\n",x,x,x);
	printf("dec = %d; octal = %#o; hex = %#x\n",x,x,x);
	
	return 0;
}

3.4.2 其他整数类型

  • short int或short
  • long int或long
  • long long int或long long
  • unsigned int或unsigned只用于非负值的场合
  • C90中,添加unsigned long int 或unsigned long和unsigned short int或unsigned short C99添加unsigned long long int或unsigned long long

3.4.3 使用字符:char类型

char类型用于储存字符

char grade = 'A';

//单引号括起来的单个字符被称为字符常量

  • 单引号只适用于字符、数字和标点符号(三种方法表示字符)
  1. 使用ASCII码(例:蜂鸣字符的ASCII值是7,char beep = 7;)
  2. 使用特殊的符号序列——转义序列表示一些特殊的字符。
转义序列
转义序列含义
\a警报(ANSI C)
\b退格
\f换页
\n换行
\r回车
\t水平制表符
\v垂直制表符
\\反斜杠(\)
\'单引号
\"双引号
\?问号
\0oo

八进制值(oo必须是有效的八进制数,

即每个o可表示0~7中的一个数)

\xhh

十六进制数(hh必须是有效的十六进制数,

即每个h可表示0~f中的一个数)

int系列类型的常量写法示例
类型十六进制八进制十进制
char\x41\101N.A.
int0x41010165
unsigned int0x41u010165
long0x41L0101L65L
unsigned long0x41UL0101UL65UL
long long0x41LL0101LL65LL
unsigned long long0x41ULL0101ULL65ULL

charcode.c程序 

/* charcode.c-显示字符的代码编号*/
#include<stdio.h>
int main(void)
{
	char ch;
	
	printf("Please enter a character.\n");
	scanf("%c",&ch); /*用户输入字符*/
	printf("The code for %c is %d.\n",ch,ch);
	
	return 0;
}

3.4.4 _Bool类型

_Bool类型用于表示布尔值,即逻辑值true(1)和false(0)


3.4.5 可移植类型:stdint.h和inttypes.h

3.6altnames.c程序

/*altnames.c --可移植整数类型名 */
#include <stdio.h>
#include <inttypes.h> //支持可移植类型
int main(void)
{
	int32_t me32;  //me32是一个32位有符号的整形变量
	
	me32 = 45933945;
	printf("First, assume int32_t is int:");
	printf("me32 = %d\n",me32);
	printf("Next, Let's not make any assumptions.\n ");
	printf("Instead,use a \"macro\"from inttrypes.h:");
	printf("me32 = %" PRId32 "\n",me32);
	
	return 0;
}

3.4.6 float、double和long double

记数法示例
数字科学记数法指数记数法
10000000001.0*10^91.0e9
1230001.23*10^51.23e5
322.563.2256*10^23.2256e2
0.0000565.6*10^-55.6e-5

3.7 showf_pt.c 程序

/* showf_pt.c -- 以两种方式显示float类型的值 */
#include <stdio.h>
int main(void)
{
	float aboat = 32000.0;
	double abet = 2.14e9;
	long double dip = 5.32e-5;
	
	printf("%f can be written %e\n",aboat,aboat);
	//下一行要求编译器支持C99或其中的相关特性
	printf("And it's %a in hexadecimal, powers of 2 notation\n",aboat);
	printf("%f can be written %e\n",abet,abet);
	printf("%Lf can be written %Le\n",dip,dip);
	
	return 0;
}

3.4.7 复数和虚数类型

  • 三种复数类型:float_Complex、double_Complex、long double_Complex
  • 三种虚数类型:float_Imaginary、double_Imaginary、long double_Imaginary

.如果包含complex.h头文件,便可用complex代替_Complex,用imaginary代替_Imaginary,还可以用I代替-1的平方根


3.4.8 其他类型

数组、指针、结构和联合


3.7 转义序列示例

程序清单3.10演示了退格(\b)、水平制表符(\t)和回车(\r)的工作方式

3.10 escape.c 程序 

/* escape.c -- 使用转义序列 */
#include <stdio.h>
int main(void)
{
	float salary;
	
	printf("\aEnter your desired monthly salary:"); //1
	printf(" $______\b\b\b\b\b\b\b");//2
	scanf("%f",&salary);
	printf("\n\t$%.2f a month is $%.2f a year.",salary,salary * 12.0);//3
	printf("\rGee!\n");//4
	
	return 0;
	
}

3.11 编程练习

举报

相关推荐

0 条评论