#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
//------------------------------------------------------------------------------------------第 7 次作业 函数定义和调用
//-------------------------------------------------------------------------------------------7.1 单选
/*
关于实参和形参描述错误的是:(C)
A.形参是实参的一份临时拷贝
B.形参是在函数调用的时候才实例化,才开辟内存空间
C.改变形参就是改变实参
D.函数调用如果采用传值调用,改变形参不影响实参
*/
//-------------------------------------------------------------------------------------------7.2 单选
/*
函数调用exec((vl,v2),(v3,v4),v5,v6);中,实参的个数是: ( B )
A.3
B.4
C.5
D.6
(vl,v2) 是一个表达式,表达式是一个参数,函数也是一个参数
*/
//-------------------------------------------------------------------------------------------7.3 单选
/*
以下关于函数设计不正确的说法是:( B )
A.函数设计应该追求 高内聚低耦合(函数内容尽量跟外部少产生练习)
B.要尽可能多的使用全局变量
C.函数参数不易过多
D.设计函数时,尽量做到谁申请的资源就由谁来释放()
*/
//-------------------------------------------------------------------------------------------7.4 单选
/*
关于C语言函数描述正确的是:( C )
A.函数必须有参数和返回值
B.函数的实参只能是变量(常量,变量,表达式,函数等)
C.库函数的使用必须要包含对应的头文件
D.有了库函数就不需要自定函数了
*/
//-------------------------------------------------------------------------------------------7.5 单选
/*
C语言规定,在一个源程序中,main函数的位置( C )
A.必须在最开始
B.必须在库函数的后面
C.可以任意
D.必须在最后
*/
//-------------------------------------------------------------------------------------------7.6 单选
/*
以下叙述中不正确的是:( D )
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是在栈中保存
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
栈区:局部变量,形式参数,函数返回值
堆区:动态内存分配(molloc, free, calloc, realloc)
静态区:放静态变量和全局变量
*///-----------------------------------------------------------------------7.7 编程题:写一个函数,交换两个整数
void Exchange(int* px, int* py)
{int z = *px; //z=a*px = *py; //a=b*py = z;
}int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);printf("交换前,a=%d,b=%d\n", a, b);Exchange(&a, &b);printf("交换后,a=%d,b=%d\n", a, b);return 0;
}
//-----------------------------------------------------------------------7.8 编程题:写一个函数,打印乘法口诀表
//乘法口诀表的行数和列数自己指定
// 例如:输入9,打印99乘法口诀表,输入12,打印12*12乘法口诀表
//(上次作业用循环语句打印过99乘法口诀表)
void multiplication_table(int x)
{int i = 0;int j = 0;for (i = 1; i <= x; i++){for (j = 1; j <= i; j++){printf("%d*%d=%-2d ", i, j, i * j);}printf("\n");}}int main()
{int input = 0;scanf("%d", &input);multiplication_table(input);// 调用函数return 0;
}