数据类型相关


参考书籍:
计算机考研复试上机指导全书.天勤计算机考研系列.孙肇博 张飞飞.2014.01

C语言库函数(续前)

math.h

  1. fabs()
    返回a的绝对值。函数原型:
    double fabs(double a);
    
    在计算整型数的绝对值时,可以使用abs(),个别编译器可能不存在此函数,故也使用fabs()即可,不过使用fabs()时需要用到强制类型转换。
    int a = 4, b = 2;
    printf("%d",(int)fabs(a-b));
    
  2. sqrt()
    开方计算。函数原型:
    double sqrt(double a);
    
    同上,操作数为整型数时,需要用到强制类型转换。
  3. pow()
    返回以ab。若a为0,则b不能为负数;若a不为0,则b无限制。函数原型:
    double pow(double a, double b);
    
  4. ceil()、floor()
    double ceil(double a);
    
    ceil()返回不小于a的最小整数。
    double floor(double a);
    
    floor()返回不大于a的最大整数。
  5. log()
    返回a的以自然对数为底的对数
    double log(double a);
    
    C中仅有以自然对数为底求对数的函数,若求其他底数的对数,要先使用换底公式。
  6. sin()、cos()、tan()、asin()、acos()、atan()
    返回a的正弦、余弦、正切、反正弦、反余弦、反正切值
    double sin(double a);
    
  7. round()
    对double型变量a,四舍五入取整
    double round(double a);
    

关于数据类型的一些总结

scanf和printf

  1. scanf方式读入数据时,除了格式符%c,均是以空白符(空格、TAB)为结束判断标志的,如果想把空格作为读入数据,使用格式符%c;字符数组使用%s读入数据时,是以空格和换行为结束判断标志的。另外,使用scanf时,不要漏写&。
    #include <stdio.h>
    int main() {
    	int a,b;
    	char c,d[10];
    	scanf("%d%d",&a,&b);
    	//此处%d%d中间无需空格 
    	printf("a = %d, b = %d\n",a,b);
    	scanf("%s",d); 
    	printf("数组a:%s\n",d);
    	scanf("%d%c%s",&a,&c,d); 
    	printf("a = %d, c = %c, d = %s\n",a,c,d);
    	return 0;
    } 
    
    12 34
    a = 12, b = 34
    1234 5678
    数组a:1234
    123 scanf
    a = 5678, c =	, d = 123
    
  2. 数据类型对应的scanf和printf格式符
    数据类型printf格式符scanf格式符
    int%d%d
    char%c%c
    char 数组%s%s
    long long%lld%lld
    float%f%f
    double%f%lf
    %md 使不足m位的int型变量以m长度右对齐输出,高位用空格补齐;%0md与%md类似,不同之处是以0补齐高位。
    %.mf 输出浮点型变量时,保留m位小数。
    #include <stdio.h>
    int main() {
    	int a = 15;
    	double b = 123.45678;
     	printf("%d\n",a);
     	printf("%2d\n",a);
     	printf("%3d\n",a);
     	printf("%04d\n",a);
     	printf("%.3f\n",b);
     	printf("%.7f\n",b);
    	return 0;
    } 
    
    15
    15
     15
    0015
    123.457
    123.4567800
    

getchar与putchar

直接放例子:

#include <stdio.h>
int main() {
	char a,b,c;
	a = getchar(); 
	b = getchar();
	getchar();
	c = getchar();
	putchar(a);
	putchar(b);
	putchar(c);
	return 0;
} 

输入:

h
ello

输出:

h
l

可见,b中存储换行符,第三个getchar()接收了字符e,但并未存储到变量中,因此可以用getchar()过滤输入中的换行。

typedef

为复杂数据类型起别名,常见将long long数据类型,用LL代替,从而提高编码效率。

#include <stdio.h>
typedef long long LL;
int main() {
	LL a = 1234567890987654321;
	printf("%lld",a);
	return 0;
} 

sscanf和sprintf

在stdio.h头文件下,将字符数组中的内容作为输入或输出到字符数组中。另外,sscanf支持正则表达式。

#include <stdio.h>
int main() {
	char a[] = "1234567";
	char b[] = "9876543";
	printf("z %s\n",b);
	sscanf(a,"%s",b);
	//把a的内容作为输入存到b中 
	printf("x %s\n",b);
	memset(a,0,sizeof(a));
	//把字符数组a置零 
	printf("%s\n",a);
	sprintf(a,"c %s\n",b);
	//把b的内容存入a中 
	printf("%s\n",a);
	return 0;
} 

输出结果:

z 9876543
x 1234567

c 1234567
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值