第六周编程总结

本周题目

这个作业属于哪个课程C语言程序设计II
这个作业要求在哪里https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2888
我在这个课程的目标是我希望能够通过学习指针的内容,解决各种复杂数据的处理
这个作业在哪个具体方面帮助我实现目标出现了求平方根新的函数语句,不同的方法求最大值最小值,帮助我查资料
参考文献C语言程序设计教材

求两数平方根之和

函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。
其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。

输入样例:

12 20

输出样例:

y=7.94

1)实验代码


#include<stdio.h>
#include <math.h> 
double fun (double *a, double *b); 
int main ( )
{ double a, b, y;
scanf ("%lf%lf", &a, &b );
 y=fun(&a, &b); printf ("y=%.2f\n", y );
return 0;
}
double fun (double *a, double *b)
{
  double y;
  y=sqrt(*a)+sqrt(*b);
  return y;
}

2)设计思路

1583218-20190402220105368-59553579.png

3)调试过程中遇到的问题

1583218-20190402220226638-2121526948.png

真的很郁闷,一直以全代码形式提交,一直编译错误,崩溃,在C++运行又是对的 后面返回去看题目要求直接写后面答案

4)正确截图

1583218-20190402220958654-1134272802.png

最小数放前最大数放后

为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。

输入样例:

5 1 4 8 2 3 9 5 12 7

输出样例:

1 5 4 8 2 3 9 5 7 12

1)实验代码


//输入函数 
void input(int *arr,int n)////形参arr为指针变量
{
  int i;
  for(i=0;i<10;i++)
  scanf("%d",arr+i);
}
//进行处理函数
void max_min(int *arr,int n)
{
   int max,min,p,count;
     max=min=arr[0];  //使max和min都指向arr[0]
    int i;
    for(i=0;i<n;i++)
    {
        if(arr[i]>max)   //将大数地址赋给max
            max=i;
 
        else if(arr[i]<min)  //将小数地址赋给min
            min=i;
    }
    count=arr[max];
    arr[max]=arr[9];
    arr[9]=count;//将最大数与最后一个数交换
    count=arr[0]; 
    arr[0]=arr[min];
    arr[min]=count;//将最小数与第一个数互换
}
 
//输出函数
void output(int *arr,int n)
{
int p;
for(p=0;p<n;p++)
printf("%3d",arr[p]);
}

2)设计思路

1583218-20190404171509226-2130654790.png

3)运行过程遇到的问题

1583218-20190404171549227-428627370.png

题目要求将其中最小的数与第一个数对换,将最大的数与最后一个数对换,我却相反的 所以输出答案错误 在c++运行发现的

4)正确截图

1583218-20190404171926265-1020841693.png

利用指针返回多个函数值

读入n个整数,调用max_min()函数求这n个数中的最大值和最小值。

输入样例:

在这里给出一组输入。例如:

5
8 9 12 0 3

输出样例:

在这里给出相应的输出。例如:

max = 12
min = 0

1)实验代码


#include<stdio.h>
#include<string.h>
void max_min(int a[],int len ,int *max,int *min);//函数声明
int main()
{
    int n,i,max,min;//定义最大值最小值
    int a[10];
    scanf("%d",&n);  
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
        int len=0;  
        len=len+1;
        
    }
    max_min(a,n,&max,&min);
    printf("max = %d\nmin = %d",max,min);  //输出最大值最小值
    return 0;
}
void max_min(int a[],int len,int*max,int *min){  //寻找最大值最小值
    int i;
    *max=a[0];
    *min=a[0];
    for(i=1;i<len;i++)
    {
        if(*max<a[i])
        *max=a[i];
        if (*min>a[i])
        *min=a[i];
    }
}  //查找成功结束

2)设计思路1583218-20190404183040093-1236142101.png

3)在运行中遇到的问题

1583218-20190404183113268-1833655251.png

格式问题没注意

4)正确截图

1583218-20190404183210095-561356851.png

学子进度条

周/日期这周所花的时间代码行学到的知识点简介目前比较迷惑的问题
3/4-3/11七小时37行1、文件建立 2、对文件加密1、if读取的文件是否必须存在,以“W”的方式写还是“a的方式”,两者性质是否相同 (这是做题中迷惑的,目前已解决) c语言允许同时打开多个文件吗?在关闭前再次打开?
3/12-3/16九小时53行二维数组的基本定义矩阵术语与二维数组下标的关系表需要老师详解
3/18-3/22十小时28行 41行 27行冒泡法排序 选择法排序 二维数组的应用冒泡排序法老师在课上提的不多,所以当时做还是思考很久
3/23-3/29十小时23行 43行 41行排序法巩固 文件储存的巩固 判断回文一些排序题的算法思路不清晰,还有流程图
3/30-4/5十五个小时6行 30行 36行指针 数组加 * 号和不加 * 的差别

学习感悟

这周也是围绕数组和指针展开,做的题也是出不多的,就是用各种新学的知识解决,其次就是这周的预习题还是有难度,翻来覆去的看书看题型,然后构造思路,从编译错误到答案错误再到格式错误最后答案正确,过程真是痛并快乐着,没做完一题都是慢慢的成就感,而且我觉得只有自己挑战成功才有动力,才会更想做下一次,挫败感影响学习质量。只有坚持不懈,才会得到自己想要的答案。

结对编程感悟

这周结成编程是室友,很方便讨论。就是分享自己的思路,然后说一下中途出现的问题,做完之后还是错误就给对方检查。我觉得这种学习方式还是不错,一起进步,快速解答疑惑。

思考题

一、为什么要使用指针?它有什么用?

1、使用指针可以对复杂数据进行处理,能对计算机内存分配进行控制,在函数调用中使用指针还可以返回多个值。
2、指针是内存的标签
3、指针可以访问权限允许访问范围内的任意变量(有点抽象我也没明白)
4、用指针函数可以简写switch
//参考链接:https://www.zhihu.com/question/38864414/answer/81448294

二、指针变量在内存中暂用多大的空间?它的大小由什么决定?

在编译器里定义一个指针变量,编译器会给这个指针变量分配一个空间,这个空间里存放的是一段内存的首地址,先解释一段内存,一段内存的大小是与你所定义的指针类型相关的,比如int,这段内存占四个字节(当然要看你的机器是多少位的了),则这段内存的首地址是第一个字节的地址,如char类型,占一个字节,这段内存的首地址就是这个字节的地址,还如结构体类型,此时内存大小要看该结构体的所有属性所占内存之和。
编译器给指针分配的空间大小是和CPU的寻址长度相关的,比如32位的CPU,它的寻址长度为32位,那么这个空间也就占四个字节,其实不管你定义什么样的指针类型,这个空间只是用来存地址,只占四个字节,而真正该空间所存的地址是哪一段内存的首地址才和所定义的指针类型相关。

折线图

1583218-20190404214226139-1447339008.png

时间代码行数博客字数
第一周39292
第二周37465
第三周751099
第四周961230
第五周1071039
第六周661881

转载于:https://www.cnblogs.com/ZHLJ477/p/10645780.html

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值