C语言入门课程学习笔记-7
- [第31课 - 初探程序中的函数](#第31课 - 初探程序中的函数)
- [第32课 - 深入浅出函数调用](#第32课 - 深入浅出函数调用)
- [第33课 - 函数定义细节剖析](#第33课 - 函数定义细节剖析)
- [第34课 - 函数参数深度剖析](#第34课 - 函数参数深度剖析)
- [第35课 - 编写函数对数组排序](#第35课 - 编写函数对数组排序)
本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程,图片全部来源于课程PPT,仅用于个人学习记录
第31课 - 初探程序中的函数
实验-函数调用
c
#include <stdio.h>
int func_demo( int x )
{
int y = 0;
y = 2 * x - 1;
return y;
}
int main()
{
int r1 = func_demo(1);
int r2 = func_demo(5);
int r3 = func_demo(10);
printf("r1 = %d\n", r1);
printf("r2 = %d\n", r2);
printf("r3 = %d\n", r3);
return 0;
}
/*
output:
r1 = 1
r2 = 9
r3 = 19
*/
实验-函数求前n个正整数和
c
#include <stdio.h>
int sum (int n)
{
int r = 0;
int i = 0;
for(i=1; i<=n; i++)
{
r += i;
}
return r;
}
int main()
{
int o[10] = {10, 20, 30, 40, 50, 100};
int r[10];
int i = 0;
for(i=0; i<10; i++)
{
r[i] = sum(o[i]);
}
for(i=0; i<10; i++)
{
printf("sum(%d) = %d\n", o[i], r[i]);
}
return 0;
}
/*
output:
sum(10) = 55
sum(20) = 210
sum(30) = 465
sum(40) = 820
sum(50) = 1275
sum(100) = 5050
sum(0) = 0
sum(0) = 0
sum(0) = 0
sum(0) = 0
*/
第32课 - 深入浅出函数调用
第33课 - 函数定义细节剖析
实验-返回int
c
#include <stdio.h>
int pow2(int a);
int main()
{
int a = 3;
printf("call pow2(%d): %d\n", a, pow2(a));
return 0;
}
int pow2(int a)
{
return a * a;
}
/*
output:
call pow2(3): 9
*/
实验-返回void
c
#include <stdio.h>
void demo(void i)//error: parameter 1 ('i') has incomplete type|
{
return i;
}
int main()
{
void v;
void x = v;
demo(x);
return 0;
}
c
#include <stdio.h>
void f( )
{
printf("void f() \n");
}
void g(void)
{
}
int main()
{
f();
f(1, 2);
g();
// g(1); // ERROR
return 0;
}
c
#include <stdio.h>
void demo(void)
{
printf("How are you?\n");
return;
printf("Fine, thank you!\n");
}
int func(int a, int b)
{
if( a > 0 )
return a + b;
// else
// return a - b;
}
int g(int v)
{
if( v > 0 )
return "Delphi";
else
return "Tang";
}
int main()
{
// int c = func(-1, 2);
printf("Begin\n");
//demo();
// printf("c = %d\n", c);
printf("End\n");
return 0;
}
第34课 - 函数参数深度剖析
实验-形参实参
c
#include <stdio.h>
int test(int n);
int main()
{
int i = 3;
int j = test(i);
printf("i = %d, j = %d\n", i, j);//i = 3, j = 30
return 0;
}
int test(int n)
{
n = n * 10;
return n;
}
实验-数组元素作为函数形参
c
#include <stdio.h>
void demo(int a[3])
{
a[0] = 50;
}
int sum(int a[], int len)
{
int ret = 0;
int i = 0;
while( i < len )
{
ret += a[i];
i++;
}
return ret;
}
int main()
{
int arr1[5] = {0, 1, 2, 3, 4}; // arr1[0] -> 0
int arr2[10] = {0, 10, 20, 30, 40}; // arr2[0] -> 0
demo(arr1);
demo(arr2);
printf("arr1[0] = %d\n", arr1[0]);
printf("arr2[0] = %d\n", arr2[0]);
printf("sum(arr1) = %d\n", sum(arr1, 5));
printf("sum(arr2) = %d\n", sum(arr2, 10));
return 0;
}
/*
output:
arr1[0] = 50
arr2[0] = 50
sum(arr1) = 60
sum(arr2) = 150
*/
小结
第35课 - 编写函数对数组排序
实验-排序
c
#include <stdio.h>
int Min(int a[], int b, int e)
{
int r = b;
int i = 0;
for(i=b; i<=e; i++)
if( a[r] > a[i] )
r = i;
return r;
}
void Sort(int a[], int n)
{
int i = 0;
int j = 0;
int k = 0;
for(i=0; i<n; i++)
{
j = Min(a, i, n-1);
if( i != j )
{
k = a[i];
a[i] = a[j];
a[j] = k;
}
}
}
void Print(int a[], int n)
{
int i = 0;
while( i < n )
printf("%d ", a[i++]);
printf("\n");
}
int main()
{
int a[5] = {20, 30, 10, 40, 50};
printf("Origin: \n");
Print(a, 5);
Sort(a, 5);
printf("After: \n");
Print(a, 5);
return 0;
}
/*
output:
Origin:
20 30 10 40 50
After:
10 20 30 40 50
*/