C语言(谭浩强版本,主讲人:小甲鱼)P50-P52

预处理

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#define PI 3.1415926
void main()
{
	double s;
	int r;
	printf("Please enter the radius:");
	scanf("%d", &r);
	s = PI * (r * r);
	printf("%g", s);//%g=%f或者%e
}

//Please enter the radius : 5
//78.5398

在这里插入图片描述
(二)

#include<stdio.h>
#define PI 3.1415926
#define String "Circle";//加了分号是错误的
void main()
{
}

在这里插入图片描述
(三)

#include<stdio.h>
#define PI 3.1415926
void fun();

void main()
{
	double s;
	int r;
	printf("Please enter the radius:");
	scanf("%d", &r);
	s = PI * (r * r);
	printf("圆的面积为:%g\n", s);
	fun();
}
//#undef PI
//如果添加了上面的语句,下面会接收不到PI的值,这样会导致程序报错
void fun()
{
	printf("PI=%g\n", PI);
}

在这里插入图片描述
(五)

#include<stdio.h>
#define PI 3.1415926
#define S PI * (r * r)//嵌套
void fun();

void main()
{
	double s;
	int r;
	printf("Please enter the radius:");
	scanf("%d", &r);
	s = S;
	printf("圆的面积为:%g\n", s);
	fun();
}

void fun()
{
	printf("PI=%g\n", PI);
}

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#define PIN1 char *//char*是一个指针型的字符
typedef char* PIN2;

void main()
{
	PIN1 x, y;//char *x,char y
	PIN2 a, b;//char *a,char *b
	printf("#define:%d %d\n", sizeof(x), sizeof(y));
	printf("typedef:%d %d\n", sizeof(a), sizeof(b));
}

在这里插入图片描述
(八)

#include<stdio.h>
#define P printf
#define D "%d\n"
#define F "%.2f\n"
void main()
{
	int a = 5;
	float b = 3.8;
	P(D, a);
	P(F, b);
}
//5
//3.80

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#define MAX(a,b) (a>b)?a:b
void main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int max;
	max = MAX(a, b);//max=(a>b)?a:b
	printf("max=%d\n", max);
}
//10 100
//max = 100

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#define SQ(y) (y)*(y)
void main()
{
	int a;
	int sq;
	scanf("%d", &a);
	sq = SQ(a + 1);
	/((3+1)*(3+1))
	//=4*4
	//16
	printf("sq=%d\n", sq);
}
//3
//16

在这里插入图片描述

#include<stdio.h>
#define SQ(y) (y)*(y)
void main()
{
	int a;
	int sq;
	scanf("%d", &a);
	sq = 160/SQ(a + 1);
	//=160/(3+1)*(3+1)
	//=160/4*(3+1)
	//40*(3+1)
	//160
	printf("sq=%d\n", sq);
}
//3
//160

加扩号

#include<stdio.h>
#define SQ(y) ((y)*(y))
void main()
{
	int a;
	int sq;
	scanf("%d", &a);
	sq = 160/SQ(a + 1);
	//=160/((3+1)*(3+1))
	//=160/16
	//10
	printf("sq=%d\n", sq);
}
//3
//10

在这里插入图片描述

#include <stdio.h>
void main()
{
	int i = 1;
	int SQ(int y);
	while (i <= 5)
	{
		printf("%d\n", SQ(i++));
	}
}
int SQ(int y)
{
	return((y)*(y));
}
//1
//4
//9
//16
//25
#include <stdio.h>
#define SQ(y) ((y)*(y))
void main()
{
	int i = 1;
	while (i <= 5)
	{
		printf("%d\n", SQ(i++));
		//(1)*(1)=1 1++=2 2++=3
		//(3)*(3)=9 3++=4 4++=5
		//(5)*(5)=25 
	}
}
//1
//9
//25

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main()
{
	char str[] = "I Love You!";
	printf("sizeof str=%d\n", sizeof(str));
	printf("strlen str=%d\n", strlen(str));
	return 0;

}
//sizeof str = 12 包含字符串最后一个字符\0
//strlen str = 11 不包含字符串最后一个字符\0

在这里插入图片描述

strcpy

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[] = "Remember ONE";
	char str2[] = "Remember TWO";
	char str3[100];

	strcpy(str1, str2);/* 复制 str2 到 str1 */
	strcpy(str3,"Copy Successful");/* 复制 Copy Successful 到 str3 */

	printf("str1:%s\n",str1);
	printf("str2:%s\n",str2);
	printf("str3:%s\n",str3);
	return 0;

}
//str1:Remember TWO
//str2 : Remember TWO
//str3 : Copy Successful

注意:str1和str2的字符数组长度一定要相同,str3的字符数组长度也要大于要复制字符数组的长度,如果长度不相同会出现报错的情况

strncpy

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[] = "Remember ONE";
	char str2[30];

	strncpy(str2, str1,8);
	str2[8] = '\0';//追加一个结束符
	printf("str2=%s\n", str2);

	return 0;
}

//str2=Remember

在这里插入图片描述

strcat

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[15] = "Hello ";//这里要设置长度,vs2019会溢出
	char str2[] = "World!";

	strcat(str1, str2);

	printf("str1:%s\n", str1);
	return 0;
}
//str1:Hello World!

strncat

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[15] = "Hello ";//这里要设置长度,vs2019会溢出
	char str2[] = "World!";

	strncat(str1,str2,5);

	printf("str1:%s\n", str1);
	return 0;
}
//str1:Hello World

在这里插入图片描述

strcmp

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[] = "Fly";
	char str2[] = "Fly";

	if (!strcmp(str1, str2))//strcmp(str1, str2) 返回为0 取反为1
	{
		printf("两个字符串完全一致\n");
	}
	else
	{
		printf("两个字符串存在差异\n");
	}
	return 0;
}
//两个字符串完全一致


strncmp

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[] = "Fly";
	char str2[] = "Fly!";

	if (!strncmp(str1, str2,4))//strcmp(str1, str2) 返回为0 取反为1
	{
		printf("两个字符串完全一致\n");
	}
	else
	{
		printf("两个字符串存在差异\n");//加了!
	}
	return 0;
}
//两个字符串存在差异

在这里插入图片描述

#include <stdio.h>
#include <string.h>
#define STR(s1,s2,s3,sum) strcat(strcat(strcat(sum,s1),s2),s3);
void main()
{
	char str1[] = "How ";
	char str2[] = "are ";
	char str3[] = "you!";
	char str4[40] = "";
	STR(str1, str2, str3, str4);
	printf("str1:%s\nstr2:%s\nstr3:%s\nsum:%s\n", str1, str2, str3, str4);
}
//str1:How
//str2 : are
//str3 : you
//sum:How are you!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值