一、 C语言的核心
C语言的核心是由函数和函数的调用构成的。
二、 刷题(温习函数)
2.1 问题1
下面说法正确的是: ( C )
A. C语言程序总是从第一个定义的函数开始执行。
B. 在C语言程序中,要调用的函数必须在main ( )中定义。
C. C语言总是从main( ) 开始执行。
D. C语言程序中的 main ( )必须放在程序的开始部分。
tips: main( )是第一个被调用的函数。
C语言总是从main( ) 开始执行不一定正确。(从计算机/操作系统来看,不一定正确。)
因为从计数角度来看,可以让C语言程序不从main ( )开始执行。
详细见Linux系统课程。
分析---D不一定正确。
2.2 问题2
函数func 的返回类型是: ( B )
func (float var)
{
var +=1;
}
int main( )
{
func(1 );
return 0;
}
A. void
B. int
C. float
D. 无法确定
解题依据:
一个函数不写返回类型,默认返回为int类型 。
2.3 问题3
关于下面的函数调用说法正确的是: ( B )
int main( )
{
func((1,2),(3,4,5));
return 0;
}
A. 1个参数
B. 2个参数
C. 5个参数
D. 编译错误
正确的结果为A。
1(1,2)----2为函数参数的值。
2 (3,4,5)---5为函数参数的值。
3 ((1,2),(3,4,5))转换为(2,5)
4(2,5)的函数的参数为5。
补充知识---函数参数的定义
示例代码
#include <stdio.h>
#include <stdlib.h> // 头文件
int func(var) // 函数的参数的定义。
int var; // 非全局变量,这是函数参数。声明函数参数的类型。 var 是func函数的参数
{
var++;
return var;
}
// int func(int var) // 定义的功能函数
//{
//var++;
//return var;
//}
/函数参数的定义法/
int add(a,b) // int add(int a,int b)
int a;
int b;
{
return a + b;
}
int main() // 主函数
{
int r = func((1,2),(3,4,5)); // 判读函数的参数
printf("r = %d\n",r);
printf("var = %d\n",var);
system("pause");
return 0;
}
2.4 问题4
下面程序运行后的输出是 :( C )
int func(int a,int b)
{
return a + b;
}
int main( )
{
int x = 6,y =7, z =8;
int r = 0;
r = func((x--,y++,x+y), z--);
printf("%d\n",r);
return 0;
}
A. 19
B. 20
C. 21
D. 22
分析:
示例代码:
/函数实参的题/
#include <stdio.h>
#include <stdlib.h>
int func(int a,int b)
{
return a + b;
}
int main()
{
int x = 6,y = 7,z = 8;
int r = 0;
r = func((x--,y++,x+y),z--); // r=21 分析x=5, y=8, x+y=13,z--表示先赋值再自减,故z为8,r的值为 13 + 8等于21。
printf("%d\n",r);
system("pause");
return 0;
}
2.5 问题5
下面程序运行后的输出是: ( A )
void func(int a,int b,int c) // int a,int b,int c 都是形参。
{
c = a * b;
}
int main( )
{
int x = 6, y = 7,z = 0; // x、y、 z 实参,用于初始化形参。
func(x, y ,z);
printf("%d\n",z);
return 0;
}
A. 0
B. 13
C. 42
D. 无法确定
tips:1 用实参初始化形参。
2 初始化形参后值不变。
2.6 问题6
下面程序运行后的输出是 :(12 15 )
unsigned func (unsigned n)
{
unsigned ret = 1;
do
{
ret *= n % 10;
n / = 10;
} while (n);
return ret;
}
int main( )
{
printf("%u\n", func(26));
printf("%u\n",func(135));
return 0;
}
分析:程序阅读题
ret = ret * 6 =1 * 6
n = 2 (26/10 = 2)
ret = ret * 2 = 6 * 2 = 12。
同理可得 func(135) 中 ret = 15
示例代码
#include <stdio.h> // 头文件
#include <stdlib.h>
// 定义一个无符号的功能函数 (有返回值的)
unsigned func(unsigned n)
{
unsigned ret = 1; // 定义变量
// do ... while 循环
do
{
ret *= n % 10;
n /= 10;
} while (n);
return ret;
}
int main( )
{
printf("%u\n", func(26)); // 12, 2 * 6 =12
printf("%u\n",func(135)); // 15, 135 = 15
printf("%u\n",func(246)); // 48, 248 = 48
system("pause");
return 0;
}
三、小结
通本次函数专题练习程序题的练习,复习了函数的定义与运行、定义函数的类型、函数参数、自定义函数的形参与实参等知识点。