• C/C++程序设计实验报告4 | 函数实验


    本文整理自博主本科大一《C/C++程序设计》专业课的课内实验报告,适合C语言初学者们学习、练习。

    编译器:gcc 10.3.0

    ----

    注:

    1.虽然课程名为C++程序设计,但实际上当时校内该课的内容大部分其实都是C语言,C++的元素最多可能只是体现在输入输出。

    2.博主当时给出的实验代码可能并不是最优解,这里只是整理并未重编,因此各位前来学习的小伙伴们注意辨别。

    目录

    一、实验目的

    二、实验内容

    1、编写函数,实现统计和输出一个正整数中各位数字中零的个数,及各位数字中最大者。

     2、编写递归函数实现 n!

    3、自定义函数实现对n个数进行选择法排序,主函数调用。

    4、自定义函数实现对一个有序数组进行插入操作,保证插入后的数组依然有序。主函数调用。

    三、实验总结


    一、实验目的

    1.掌握函数定义和调用

    2.掌握函数调用时实参与形参的对应关系以及“值传递”的方式

    3.掌握函数的嵌套调用和简单递归调用

    4.掌握数组作为函数参数的用法

    5.进一步学习调试程序


    二、实验内容

    1、编写函数,实现统计和输出一个正整数中各位数字中零的个数,及各位数字中最大者。

    源代码:

    1. #include
    2. #include
    3. using namespace std;
    4. int digitX(int x){
    5. int dgt=0;
    6. while(x){
    7. x /= 10;
    8. dgt++;
    9. }
    10. return dgt;
    11. }//求数的位数
    12. void stcs(int x){
    13. int a[81]={0};
    14. int i;
    15. int cnt=0;
    16. for(i=0;i<digitX(x);i++){
    17. a[i]=x/(int)pow(10,i)%10;
    18. if(a[i]==0){
    19. cnt++;
    20. }
    21. }
    22. cout<<"共有 "<" 个0"<
    23. int maxI=i;
    24. for(i=0;i<=digitX(x);i++){
    25. if(a[i]>a[maxI]){
    26. int tmp;
    27. tmp=a[i];
    28. a[i]=a[maxI];
    29. a[maxI]=tmp;
    30. }
    31. }
    32. cout<<"最大的数字是 "<//输出最大的数
    33. }
    34. int main(){
    35. //1、编写函数,实现统计和输出一个正整数中各位数字中零的个数,及各位数字中最大者。
    36. int num,digit;
    37. cout<<"请输入一个正整数:";
    38. cin>>num;
    39. digit=digitX(num);
    40. cout<<"这个数共有 "<" 位"<
    41. stcs(num);
    42. }

    运行结果: 

     2、编写递归函数实现 n!

    源代码:

    1. #include
    2. #include
    3. using namespace std;
    4. int facX(int x){
    5. int fac;
    6. if(x==0 || x==1){
    7. fac=1;
    8. }else{
    9. fac=facX(x-1)*x;
    10. }
    11. return fac;
    12. }
    13. int main(){
    14. int n;
    15. cout<<"Please enter an integer number:";
    16. cin>>n;
    17. while(n<0){
    18. cout<<"n<0,error!! Please enter another number n: ";
    19. cin>>n;
    20. }
    21. cout<<"n!= "<<facX(n)<
    22. }

    运行结果: 

    3、自定义函数实现对n个数进行选择法排序,主函数调用。

    要求:共自定义3个函数,分别对数组进行输入,排序和输出。

    源代码:

    1. #include
    2. #define ARR_SIZE 6
    3. using namespace std;
    4. //3、自定义函数实现对n个数进行选择法排序,主函数调用。
    5. //要求:共自定义3个函数,分别对数组进行输入,排序和输出。void
    6. void cinA(int x[],int n){
    7. int i;
    8. for(i=0;i
    9. cin>>x[i];
    10. }
    11. }
    12. void sort(int x[],int n){
    13. int i,j;
    14. int selI;
    15. for(i=0;i-1;i++){
    16. selI=i;
    17. for(j=i+1;j
    18. int tmp;
    19. if(x[j]>x[selI]){
    20. tmp=x[j];
    21. x[j]=x[selI];
    22. x[selI]=tmp;
    23. }
    24. }
    25. }
    26. }
    27. void coutA(int x[],int n){
    28. int i;
    29. for(i=0;i
    30. cout<" ";
    31. }
    32. }
    33. int main(){
    34. void sort(int array[],int n);
    35. int a[ARR_SIZE];
    36. cout<<"enter array:"<
    37. cinA(a,6);//输入
    38. sort(a,6);//排序
    39. coutA(a,6);//输出
    40. }

    运行结果:

    4、自定义函数实现对一个有序数组进行插入操作,保证插入后的数组依然有序。主函数调用。

    要求:

    1)共自定义2个函数,分别对数组进行插入和输出。

    2)数组、待插数据在主函数中定义和赋值。

    源代码:

    1. #include
    2. using namespace std;
    3. //4、自定义函数实现对一个有序数组进行插入操作,保证插入后的数组依然有序。主函数调用。
    4. //要求:1)共自定义2个函数,分别对数组进行插入和输出。
    5. //2)数组、待插数据在主函数中定义和赋值。
    6. void plugX(int x,int a[],int len){
    7. int i;
    8. for(i=len-2;i>=0;i--){
    9. if(x
    10. a[i+1]=a[i];
    11. }else{
    12. break;
    13. }
    14. }
    15. a[i+1]=x;
    16. }
    17. void coutX(int a[],int len){
    18. int i;
    19. for(i=0;i
    20. cout<' ';
    21. }
    22. }
    23. int main(){
    24. int arr[6]={10,20,30,40,50,0};
    25. cout<<"please enter a number n:";
    26. int n;
    27. cin>>n;
    28. plugX(n,arr,6);
    29. coutX(arr,6);
    30. }

    运行结果:


    三、实验总结

    1.掌握了函数定义和调用。

    2.掌握函数调用时实参与形参的对应关系以及“值传递”的方式。

    3.掌握函数的嵌套调用和简单递归调用。

    4.掌握数组作为函数参数的用法,进一步学习了调试程序。 

  • 相关阅读:
    java运算符
    Linux内核 -- 汇编结合ko案例之PMU获取周期技术
    BD就业复习第四天
    Android 13 骁龙相机点击录像流程分析
    用程序计算出钢琴88个键的音高
    【数据结构】栈和队列
    鲍威尔暗示将继续加息以解决通胀问题 有何影响?
    基于单片机智能汽车仪表设计系统
    子类对象构造与析构的过程
    Leetcode71简化路径
  • 原文地址:https://blog.csdn.net/wyd_333/article/details/138008726