专转本-4月8日练习

  1. 关于函数调用说法不正确的是( $C099 $)
    A.函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝
    B.函数可以传址调用,传址调用的时候,可以通过形参操作实参
    C.函数可以嵌套定义,但是不能嵌套调用
    D.函数可以嵌套调用k但是不能嵌套定义
#include <stdio.h>
void test(int*p1,int *p2)
{
	*p1 = 1;
	*p2 = 2;
}
int main() {
	int a = 0;
	int b = 0;
	test(&a, &b);
	return 0;//return仅可以返回一个值
}
  1. 在函数调用时,以下说法正确的是( B B B
    A.函数调用后必须带回返回值
    B.实际参数和形式参数可以同名
    C.函数间的数据传递不可以使用全局变量
    D.主调函数和被调函数总是在同一个文件里
  2. 关于函数的声明和定义说法正确的是( B B B )
    A.函数的定义必须放在函数的使用之前
    B.函数必须保证先声明后使用
    C.函数定义在使用之后,也可以不明
    D.函数的声明就是说明函数是怎么实现的
  3. 关于实参和形参描述不正确的是( C C C)
    A.形参是实参的一份临时拷贝
    B.形参是在函数调用的时候才实例化,才开辟内存空间
    C.改变形参就是改变实参
    D.函数调用如果采用传值调用,改变形参不影响实参
  4. 可控的乘法口诀表
```c
#include <stdio.h>
int printf_table(int n)
{
	int i = 0;
	for (i = 1; i <= n; i++)
	{
		int j = 0;
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d = %d\t ", i, j, i * j);
		}
		printf("\n");
	}

}
int main() {
	int n = 0;
	scanf_s("%d", &n);
	printf_table(n);
	return 0;
}
  1. 关于递归的描述错误的是( C C C)
    A.存在限制条件,当满足这个限制条件的时候,递归便不再继续
    B.每次递归调用之后越来越接近这个限制条件
    C.递归可以无限递归下去
    D.递归层次太深,会出现栈益出现象
  2. 递归习题
    这个的返回值是啥?
int Fun(int n)
{
	if (n==0)
	{
		return 2;
	}
	else
	{
		return 2 * Fun(n + 1);
	}
	//函数的递归调用
}
  1. 字符串逆序(递归实现)题目内容:
    编写一个函数reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列,不是逆序打印。要求:不能使用C函数库中的字符串操作函数。
    比如:
    char arr[] = "abcdef”;
    逆序之后数组的内容变成: fedba
#include <stdio.h>5
int my_strlen(char* str)//这个函数的意义是统计数组元素的个数
{
	
	int count = 0;
	while(*str!='\0')
	//这个判别表达是的意义是用指针的方式确定函数的个数,字符串的结尾会有“\0”
	{
		count++;
		//每发现一个便会累加1
		str++;
		//*str就是指向下一个字符
	}
	return count;
}
/* reverse 1.0
void reverse_string(char*str)
{
	int left = 0;
	int right = my_strlen(str) - 1;//这个函数的意义是统计数组元素的个数,减去1是因为数组是从0开始的
	while (left<right)
	{
		char tmp = str[left];
		str[left] = str[right];
		str[right] = tmp;
		//tmp是一个中间型的变量,就是交换左边于右边的中间量
		left++;
		//逐步指向右边
		right--;
		//right累减
	}
	
}
*/
//reverse 2.0,用递归实现的
void reverse_strint(char* arr)
{
	char tmp = *str;
	int len = my_strlen(str);
	*str = *(str + len - 1);
	*(str + len - 1) = '\0';
	if (my_strlen(str+1)>=2)
	{
		reverse_strint(str + 1);
	}
}
int main()
{
	char arr[] = "sdauuhusai";
	reverse_string(arr);//数组名arr是数组arr的首元素的地址
	printf("%s\n", arr);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值