第一次试验

试验一:用递归函数计算1+2+....+100的值。

#include<stdio.h>
int sum(int n);
int main()
{
    int num=0;
    num=sum(100);
    printf("%d",num);
    return 0;
}
int sum(int n)
{
    if(n==1)
    return 1;
    else
    return n+sum(n-1);
}

试验二:用递归函数将int 483 转换为字符串 483.

#include<stdio.h>
void ver(int a);
int main()
{
    ver(483);
    return 0;
 }
 void ver(int a)
 {
     int b=0;
     char c;
     if(a!=0)
     {
         ver(a/10);
         b=a%10;
         c=b+‘0‘;
         printf("%c",c);
     }
 }

试验三:在子函数中用指针将主函数中的两个数交换数值。

#include<stdio.h>
void f(int *a,int *b);
int main()
{
    int a,b;
    printf("请输入两个数。\n");
    scanf("%d%d",&a,&b);
    f(&a,&b);
    printf("%d\t%d",a,b);
    return 0;
}
void f(int *a,int *b)
{
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
}

实验四:将整数用递归转换为字符串。

#include<stdio.h>
void ver(int n,char a[]);
int main()
{
    int b=0;
    char a[100];
    scanf("%d",&b);
    ver(b,a);
    puts(a);
    return 0;
}
void ver(int n,char a[])
{
    static i=1;
    int q=n,num=0,b=0;
    while(q!=0)
    {
        q=q/10;
        num++;
    }
    if(n!=0)
    {
        b=n%10;
        a[num]=b+‘0‘;
        i++;
        ver(n/10,a);
    }
    else
    {
        a[i]=‘\0‘;
    }
}

总结:想清楚递归的思路,它是如个一次一次调用本身,并当到临界条件时,又一次次返回到第一次调用的。

  在子函数中交换主函数中的两个数值,比如向形参传递地址,而非数值,如果传递数值,那么在子函数中交换的只是形参,当函数调用结束后,形参内存释放,主函数中数值并没有改变。传递地址,通关指针间接访问主函数中的两个数值,交换主函数中的数值。

时间: 2024-11-08 18:58:43

第一次试验的相关文章

软件测试技术第一次试验之——JUnit的安装与使用

众所周知,在一个大型的软件项目中,测试是必不可少的.传统的测试方法往往要自己编写测试函数再结合测试用例进行验证,这样会显得比较繁琐.所以我们可以使用JUnit框架进行测试. 使用junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率. 下图为传统测试方法与JUnit测试方法的代码量对比. 接下来就是安装JUnit了 前提条件:电脑已安装eclipse,已配置java环境. 步骤一:下载JUnit与Hamcrest对应的ja

java第一次试验

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计   班级:1353       姓名:郭皓  学号:20135327 成绩:             指导教师:娄嘉鹏      实验日期: 实验密级:         预习程度:             实验时间: 仪器组次:          必修/选修:选修       实验序号:1 实验名称:                Java开发环境的熟悉 实验目的与要求: 1. 使用JDK编译.运行简单

【Python】】对于input函数直接对两个字符串赋值的试验

1.第一次试验 s , t = input() print('{0},{1}'.format(s,t)) #对于上述代码,输入1,2会发生错误 #发生ValueError: too many values to unpack (expected 2)这种错误 2.第二次试验 s , t = eval(input()) print('{0},{1}'.format(s,t)) #对于上述代码,输入1,2是可以执行的 #但是因为eval的原因输入字符串会出现NameError: name '我' i

vmware虚拟机无法连接网络

这是一个老生常谈的问题,而且网上有一套解决方法,最方便快捷的肯定属恢复虚拟网络了 说说我的情况 虚拟机VMware? Workstation 12 Pro centos6.8,克隆,192.168.2.151.152.153.154 之前使用的路由器ip地址是192.168.2.1 换了环境后使用的地址是192.168.1.1 以上是前提 按照老一套应该就是将/etc/sysconfig/network-scripts/ifcfg-eth0其内容更改就OK了 参考下内容 [[email prot

20145301《Java程序设计》实验报告一:Java开发环境的熟悉

20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中可以得到什

[stm32] 一个简单的stm32vet6驱动2.4寸240X320的8位并口tft屏DEMO

书接上文: 最近在研究用低速.低RAM的单片机来驱动小LCD或TFT彩屏实现动画效果 首先我用一个16MHz晶振的m0内核的8位单片机nRF51822尝试驱动一个1.77寸的4线SPI屏(128X160), 发现,刷一屏大约要0.8s左右的时间, 具体收录在<1.一个简单的nRF51822驱动的天马4线SPI-1.77寸LCD彩屏DEMO>中 觉得,如果用72MHz的STM32也许效果会好很多 于是在stm32上做了个类似的版本, 具体收录在<一个简单的stm32vet6驱动的天马4线S

【概率论与数理统计】小结3 - 一维离散型随机变量及其Python实现

注:上一小节对随机变量做了一个概述,这一节主要记录一维离散型随机变量以及关于它们的一些性质.对于概率论与数理统计方面的计算及可视化,主要的Python包有scipy, numpy和matplotlib等. 以下所有Python代码示例,均默认已经导入上面的这几个包,导入代码如下: import numpy as np from scipy import stats import matplotlib.pyplot as plt 0.  Python中调用一个分布函数的步骤 scipy是Pytho

20145301《Java程序设计》实验二报告:Java面向对象程序设计

20145301<Java程序设计>实验二报告:Java面向对象程序设计 课程:Java程序设计 实验名称:Java面向对象程序设计 实验目的与要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容: 使用TDD的方式设计关实现复数类Complex 程序设计思路: 需求分析: 复数运算需要分:实部和虚部. 需要运行四则运算,即加.减.乘.除四种运算.  需要用户有输入,所以调用了Scanner实例,i

CentOS 5.8 升级openssh至6.7

一.简介 最近公司一些生产系统服务器被机房扫描出openssh工具有漏洞,于是对线上的一些服务器中的openssh进行的升级,现将具体的过程写成博文,希望对大家有所帮助-- 由于CentOS 5 官方所提供的yum源中最新版本的openssh也相对很老了,所以就只有两种办法了: 1.自制RPM包进行升级: 本来我最先考虑的是使用这种方法,因为在生产环境中缺乏一些编译所需要的软件包,如果都一一安装的话又会产生未知的安全隐患,但是当把RPM制作完成后,在测试机上测试的时候发现最新版本的openssh