C语言经典习题100例(九)41-45

时间:2022-07-22
本文章向大家介绍C语言经典习题100例(九)41-45,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

习题41

学习static定义静态变量的用法。

实现思路: 用static声明和未用static声明变量进行对比,即可得出static的作用。

代码如下:

#include <stdio.h>
 
int main(){
	void func();
	int i;
	for(i = 0;i < 10; i++){
		func();
	}	
	
    return 0;
}

void func(){
	int i = 0;
	static int num = 0;
	printf("In func:i = %d, num = %dn", i, num);
	i++;
	num++;
}

打印:

In func:i = 0, num = 0
In func:i = 0, num = 1
In func:i = 0, num = 2
In func:i = 0, num = 3
In func:i = 0, num = 4
In func:i = 0, num = 5
In func:i = 0, num = 6
In func:i = 0, num = 7
In func:i = 0, num = 8
In func:i = 0, num = 9

习题42

学习使用定义自动变量的用法。

实现思路: 自动变量用auto关键字声明,函数中的形参和在函数中定义的变量(包括在复合语句中定义的变量)都属于自动变量,默认不用关键字修饰即为自动变量,可进行对比分析。

代码如下:

#include <stdio.h>
 
int main(){
	int i, m = 0, n = 0;
	for(i = 0;i < 10; i++){
		printf("In main: m = %d, n = %d. ", m, n);
		{
			auto int n = 10;
			printf("In block: m = %d, n = %dn", m, n);
		}
		m++;
		n++;
	}	
	
    return 0;
}

打印:

In main: m = 0, n = 0. In block: m = 0, n = 10
In main: m = 1, n = 1. In block: m = 1, n = 10
In main: m = 2, n = 2. In block: m = 2, n = 10
In main: m = 3, n = 3. In block: m = 3, n = 10
In main: m = 4, n = 4. In block: m = 4, n = 10
In main: m = 5, n = 5. In block: m = 5, n = 10
In main: m = 6, n = 6. In block: m = 6, n = 10
In main: m = 7, n = 7. In block: m = 7, n = 10
In main: m = 8, n = 8. In block: m = 8, n = 10
In main: m = 9, n = 9. In block: m = 9, n = 10

习题43

学习使用static的另一用法。

实现思路: static在单独的代码块中也可以实现在一次函数执行结束后变量未被销毁、保留当前的值,下次调用函数时即使用保留在内存中的变量值,直到运行期间结束才释放该变量。

代码如下:

#include <stdio.h>
 
int main(){
	int i, m = 0, n = 0;
	for(i = 0;i < 10; i++){
		printf("In main: m = %d, n = %d. ", m, n);
		{
			static int n = 10;
			printf("In block: m = %d, n = %dn", m, n);
			n--;
		}
		m++;
		n++;
	}	
	
    return 0;
}

打印:

In main: m = 0, n = 0. In block: m = 0, n = 10
In main: m = 1, n = 1. In block: m = 1, n = 9
In main: m = 2, n = 2. In block: m = 2, n = 8
In main: m = 3, n = 3. In block: m = 3, n = 7
In main: m = 4, n = 4. In block: m = 4, n = 6
In main: m = 5, n = 5. In block: m = 5, n = 5
In main: m = 6, n = 6. In block: m = 6, n = 4
In main: m = 7, n = 7. In block: m = 7, n = 3
In main: m = 8, n = 8. In block: m = 8, n = 2
In main: m = 9, n = 9. In block: m = 9, n = 1

习题44

学习使用external的用法。

实现思路: 用extern来声明外部变量,以扩展外部变量的作用城,从变量的定义处开始,到本程序文件的末尾。

代码如下:

#include <stdio.h>

int main(){
	int max(int a, int b);
	extern A, B;
	printf("Max = %dn", max(A, B));
	
	return 0;
}

int max(int a, int b){
	return a > b ? a : b;
}

int A = 12, B = 20;

习题45

学习使用register定义变量的方法。

实现思路: C语言允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算,不必再到内存中去存取,从而提高执行效率,这种变量叫做寄存器变量,用关键字register声明。

代码如下:

#include <stdio.h>

int main(){
	long fact(int n);
	int i;
	for(i = 1; i <= 10; i++){
		printf("%2d! = %dn", i, fact(i));
	}
	
	return 0;
}

long fact(int n){
	register long f = 1;
	int i;
	for(i = 1; i <= n; i++){
		f *= i;
	}
	
	return f;
}

打印:

 1! = 1
 2! = 2
 3! = 6
 4! = 24
 5! = 120
 6! = 720
 7! = 5040
 8! = 40320
 9! = 362880
10! = 3628800