0715学习笔记

复习与巩固

1. 进制转变

1.1 十六进制转变为十进制(函数嵌套)

#include <stdio.h>
/*十六进制变十进制*/ 
#include <math.h>

int main()
{
	char a,b,c;
	int s;
	printf("十六进制转换为十进制\n请输入这个十六进制数有多少位:");
	scanf("%d",&a); 
	getchar();
	s=cha(a);
	printf("这个数的十进制为:%d",s);
	return 0;
}

int cha(int a)
{
	char c,b;
	int ret=0;
	printf("请输入这个十六进制数:");
//	getchar();
	c=getchar();
	b=getchar();
	if(c=='0'&&b=='x')
	{
		while(c!='\n')
		{
		a--;
		c=getchar();
		switch(c) 
		{
			case '0':
 				ret+=0*pow(16,a);
 				break;
 			case '1':
 				ret+=1*pow(16,a);
 				break;
 			case '2':
 				ret+=2*pow(16,a);
 				break;
 			case '3':
 				ret+=3*pow(16,a);
 				break;
 			case '4':
 				ret+=4*pow(16,a);
 				break;
 			case '5':
 				ret+=5*pow(16,a);
 				break;
 			case '6':
 				ret+=6*pow(16,a);
 				break;
 			case '7':
 				ret+=7*pow(16,a);
 				break;
 			case '8':
 				ret+=8*pow(16,a);
 				break;
 			case '9':
 				ret+=9*pow(16,a);
 				break;
 			case 'a':
 				ret+=10*pow(16,a);
 				break;
 			case 'b':
 				ret+=11*pow(16,a);
 				break;
 			case 'c':
 				ret+=12*pow(16,a);
 				break;
 			case 'd':
 				ret+=13*pow(16,a);
 				break;
 			case 'e':
 				ret+=14*pow(16,a);
 				break;
 			case 'f':
 				ret+=15*pow(16,a);
			default:
				break;
		}

		}
	}

	return ret;
}

1.2 八进制转换为十进制(函数嵌套)

#include <stdio.h>
unsigned int zhu(int a);
#include <math.h>

int main()
{
	unsigned int n,sum;
	printf("八进制转换为十进制\n请输入这个八进制有多少位(最高十位):");
	scanf("%d",&n);
	getchar();
	sum=zhu(n);
	printf("该八进制转换成十进制为:%u",sum); 
	return 0;
 } 
 
unsigned int zhu(int a)
 {
 	unsigned int ret;
 	char ch,c;
 	printf("请输入这个八进制数:");
 	c=getchar();
//	putchar(c);
 	if(c=='0')
 	{
 		while(a>=0)
 		{
 			a--;
 			ch=getchar();
 			switch(ch)
 			{
 				case '0':
 					ret+=0*pow(8,a);
 					break;
 				case '1':
 					ret+=1*pow(8,a);
 					break;
 				case '2':
 					ret+=2*pow(8,a);
 					break;
 				case '3':
 					ret+=3*pow(8,a);
 					break;
 				case '4':
 					ret+=4*pow(8,a);
 					break;
 				case '5':
 					ret+=5*pow(8,a);
 					break;
 				case '6':
 					ret+=6*pow(8,a);
 					break;
 				case '7':
 					ret+=7*pow(8,a);
 					break;
 				default:
 					break;
			 }
 //			putchar(ch);
// 			if(ch>47&&ch<56)
// 				ret+=(ch-48)*pow(8,a);
		 }
	 }
 	return ret;
 }

2.兔子繁殖(函数嵌套、函数递归) 

#include <stdio.h>
/*兔子繁殖*/ 
int mon(int num);
int n(int i);

int main()
{
	int a,num;
	printf("请输入目标兔子对数:");
	scanf("%d",&num);
	a=mon(num);
	printf("达到%d对需要%d个月。",num,a); 
	return 0;
}

int mon(int num)
{
	int i=0,ret=0;
	while(ret<num)
	{
		i++; 
		if(i==1||i==2)
			ret=1;
		else
			ret=n(i);
	}	
	return i;
}

int n(int i)
{
	int ret;
	if(i==1||i==2)
		ret=1;
	else 
		ret=n(i-1)+n(i-2);
	return ret;
}

所学新知识

1.类型和作用域

1.1 全局变量和局部变量

1.1.1 全局变量

保存在全局储存区中,占用静态储存单元,在程序执行结束后才被释放

1.1.2 局部变量

保存在栈中,只有在所有函数被调用时才动态的为变量分配空间,调用结束,变量空间释放(static变量例外);必须自己进行初始化,否则取值不确定。

2.作用域

2.1 全局变量

这个文件中可以使用,但只能在其定义的函数后使用

2.2 局部变量

2.2.1函数内部变量:整个函数内部可以使用

2.2.2快作用域变量:整个块内部可以使用

2.3 静态变量

使用关键字static修饰,变量值一直保留在内存中,不因作用域而销毁

2.4 寄存器类型变量

eg:register int a=100

3.宏定义和宏函数

3.1宏定义

本质就是文字替代

eg:

#define NUM 22 //之后碰到NUM直接就当成22

3.2宏函数

本质也是文字替代,但可以替代参数eg:

#define MAX(a,b) ( (a)>(b)? (a): (b))

int(main)
{

    int max=MAX(1,3);   //最大值为3

}

3.3多行宏函数

如果宏函数有多行,我们可以使用\(转义字符)来进行多行。eg:

#define IS_SUCCESS(code)\

if((code)==200) \

printf("200"\n)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值