【好题分享】适合C++初学者(函数)

1. 能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( )

        A.return 这二个数

        B.形参用数组

        C.形参用二个指针

        D.用二个全局变量

答案解析:

A:错误,一个函数只能返回一个结果

B:正确,将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去

C:正确,形参如果用指针,最终指向的是外部的实参,在函数中对指向指向内容进行修改,改变的就是外部的实参

D:正确,全局变量不受函数的结束而结束,在函数中改变全局变量,主调函数中可以看到改变之后的结果

因此,选择A

2. 关于函数调用说法不正确的是:( ) 

        A.函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝

        B.函数可以传址调用,传址调用的时候,可以通过形参操作实参

        C.函数可以嵌套定义,但是不能嵌套调用

        D.函数可以嵌套调用,但是不能嵌套定义

答案解析:

A:正确,形参按照值的方式传递,将来形参就是实参的一份临时拷贝,修改形参不会影响外部的实参

B:正确,形参按照指针方式传递,将来形参就是实参地址的一份拷贝,形参指向的是实参,修改形参指针指向的内容,  就是在操作实参

C:错误,C语言中,函数不能嵌套定义

D:正确,函数可以嵌套调用,即:A()中调用B(),B()中调用A(),但是要控制好,否则就成为无限递归

因此,选择C 

3.  在函数调用时,以下说法正确的是:( )

        A.函数调用后必须带回返回值

        B.实际参数和形式参数可以同名

        C.函数间的数据传递不可以使用全局变量

        D.主调函数和被调函数总是在同一个文件里

答案解析:

A:错误,函数可以没有返回值,如果没有返回值也就不需要待会任何结果

B:正确,形参和实参在不同的函数中,即不同的作用域,因此形参和实参可以同名

C:错误,可以使用全局变量传参

D:错误,不一定,函数的定义可以放在任意的文件中,使用时只需要包含头文件即可

因此,选择B

 

4. 关于实参和形参描述错误的是:( )

        A.形参是实参的一份临时拷贝

        B.形参是在函数调用的时候才实例化,才开辟内存空间

        C.改变形参就是改变实参

        D.函数调用如果采用传值调用,改变形参不影响实参

答案解析:

A:正确,传参时不论是按照值还是指针方式传递,形参拿到的都是实参的一份拷贝

B:正确,函数没有调用时,新参没有空间

C:错误,如果是按照值的方式传递,形参和实参各自有各自的空间,改变形参不能改变外部的实参

D:正确,因为形参和实参是两个不同的变量

 

5. 函数调用exec((vl,v2),(v3,v4),v5,v6);中,实参的个数是:( )

        A.3

        B.4

        C.5

        D.6

 答案解析:

exec((vl,v2),(v3,v4),v5,v6) 总共有四个参数

 (v1, v2)属于第一个实参,逗号表达式,真实的参数时v2

 (v3,v4)属于第二个实参,逗号表达式,真实的参数是v4

 v5属于第三个实参

 v6属于第四个实参

 因此选择:B

 

 6. 以下关于函数设计不正确的说法是:( )

        A.函数设计应该追求高内聚低耦合

        B.要尽可能多的使用全局变量

        C.函数参数不易过多 

        D.设计函数时,尽量做到谁申请的资源就由谁来释放

答案解析: 

A:正确,高内聚低耦合即:函数体内部实现修改了,尽量不要对外部产生影响,否则:代码不方便维护

B:错误,全局变量每个方法都可以访问,很难保证数据的正确性和安全性

C:正确,参数越少越好,否则用户在使用时体验不是很好,还得必须将所有参数完全搞明白才可以使用

D:正确,谁申请的谁维护谁释放,否则如果交给外部使用者释放,外部使用者可能不知道或者忘记,就会造成资源泄漏

因此,选择B

7. 关于C语言函数描述正确的是:( )

        A.函数必须有参数和返回值

        B.函数的实参只能是变量

        C.库函数的使用必须要包含对应的头文件

        D.有了库函数就不需要自定函数了

答案解析: 

A:错误,可以没有参数和返回值类型,根据需要给出

B:错误,函数的实参可能是变量,也可能是常量,也可能是宏,也可能是指针等等

C:正确,在使用库函数时,必须要包含该库函数所在的头文件,否则编译器将不能识别

D:错误,库函数是语言设计者为了让用户能够更好的使用,而给出的,但并不能解决用户的所有问题,因此其他问题还需要用户自己写方法解决。

因此:选择C

 

8.  C语言规定,在一个源程序中,main函数的位置( )

        A.必须在最开始

        B.必须在库函数的后面

        C.可以任意

        D.必须在最后

答案解析: 

main函数的位置可以再任意位置,但是如果在主函数之前调用了那些函数,必须在main函数前对其所调用函数进行生命或包含其被调用函数的头文件。

因此:选择C 

 

9. 以下叙述中不正确的是:( ) 

        A.在不同的函数中可以使用相同名字的变量

        B.函数中的形式参数是在栈中保存

        C.在一个函数内定义的变量只在本函数范围内有效

        D.在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)

答案解析:

A:正确 不同的函数属于不同的作用域,因此不同的函数中定义相同名字的变量不会冲突

B:正确 在C语言中,函数的形参一般都是通过参数压栈的方式传递的

C:正确 在函数内定义的变量,称为局部变量,局部变量只能在其定义的函数中使用

D:错误 复合语句中定义的变量只能在复合语句中使用

因此:选择D

10. 函数判断素数

        实现一个函数,判断一个数是不是素数。

        利用上面实现的函数打印100到200之间的素数。

答案解析:

#include<stdio.h>
#include <math.h>
int sushu(int num) 
{
	for (int j = 2; j <= sqrt(num); j++)
	{
		if (num % j == 0)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	for (int i = 100; i <= 200; i++)
	{
		if (sushu(i)) {
			printf("%d ", i);
		}
	}
	return 0;
}

 

11. 函数判断闰年

实现函数判断year是不是闰年。

答案解析:

#include<stdio.h>
int runnian(int year)
{
	if (year % 100 != 0 && year % 4 == 0)
	{
		return 1;
	}
	if (year % 400 == 0)
	{
		return 1;
	}
	return 0;
}
int main()
{
	int year;
	scanf("%d", &year);
	if (runnian(year) == 1)
	{
		printf("%d年是闰年", year);
	}
	else
	{
		printf("%d年不是闰年", year);
	}
	return 0;
}

 

12. 交换两个整数

实现一个函数来交换两个整数的内容。

答案解析:

void exchange(int* a, int* b)
{
	int tem = *a;
	*a = *b;
	*b = tem;
}
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	exchange(&a, &b);
	printf("%d %d", a, b);
	return 0;
}

 

 13. 乘法口诀表

实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定如:输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。

答案解析:

void chenfa(int n)
{
	for (int i = 1; i <= n; i++)
	{
		for (int j = i; j <= n; j++)
		{
			int k = i * j;
			printf("%d*%d=%d ", i, j, k);
			
		}
		printf("\n");
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	chenfa(n);
	return 0;
}

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
c 初学者在学习过程中通常会遇到一些挑战和问初学者需要通过解决这些问来建立对C编程的理解和掌握。以下是初学者可能会遇到的一些常见问和挑战。 首先,初学者可能会感到语言的语法和结构复杂。C语言具有严格的语法和特定的结构,初学者可能需要花时间来学习并理解这些规则。这包括学习如何定义和使用变量、控制流语句和函数等。 其次,初学者可能会面临程序错误和调试的挑战。C编程中常常会出现语法错误、逻辑错误和运行时错误。初学者需要学习如何调试和修复这些错误,以确保程序的正常运行。 此外,初学者可能会对指针和内存管理感到困惑。C语言中,指针是一种强大但复杂的特性,初学者可能需要花时间来理解指针的概念和使用方法。此外,初学者还需要学习如何正确管理内存,避免内存泄漏和悬挂指针等问。 另外,对于初学者来说,设计和组织大型程序也可能是一个难初学者可能需要学习如何将程序分解成更小的模块,并使用函数来实现模块化的编程。 最后,初学者可能会遇到编码风格和代码质量的挑战。在编写代码时,初学者需要遵循一致的编码风格和最佳实践,以保持代码的可读性和可维护性。 总之,C初学者在学习100道的过程中可能会面临一些挑战和问。然而,通过坚持学习、实践和解决问初学者将能够逐渐建立对C编程的理解和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨笨同学‍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值