ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2019春第六周作业

2019-04-05 20:47:53  阅读:367  来源: 互联网

标签:arr 函数 int double 作业 第六周 2019 字长 指针


这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass4-2018/homework/2890
我在这个课程的目标是 学会如何使用自定义指针函数
这个作业在那个具体方面帮助我实现目标 在这个作业中学到了指针函数的应用
参考文献 C语言程序设计(第三版)第八章

基础作业

PTA:6-1 求两数平方根之和 (10 分)

函数fun的功能是:求两数平方根之和,作为函数值返回。例如:输入12和20,输出结果是:y = 7.936238。

函数接口定义:

double fun (double *a, double *b); 

其中 a和 b是用户传入的参数。函数求 a指针和b 指针所指的两个数的平方根之和,并返回和。

裁判测试程序样例:

#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;
}

输入样例:

12 20

输出样例:

y=7.94

1)实验代码

double fun (double *a, double *b)
{
  return sqrt(*a)+sqrt(*b);
}

2)设计思路

3)本题调试过程中碰到的问题及其解决办法

发现函数名不对,还有很多错误。通过看书解决。

4)运行截图

7-1 利用指针返回多个函数值 (30 分)

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

输入格式:

输入有两行: 第一行是n值; 第二行是n个数。

输出格式:

输出最大值和最小值。

输入样例:

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

5
8 9 12 0 3

输出样例:

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

max = 12
min = 0

1)实验代码

#include<stdio.h>
#include<string.h>
void max_min(int a[],int s,int* px,int* pn);
int main(){
  int n,i,max,min,s=0,*px,*pn,a[100000];
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%d",&a[i]);
    s++;
  }
  max_min(a,s,&max,&min);
  printf("max = %d\nmin = %d",max,min);
  return 0;
}
void max_min(int a[],int s,int* px,int* pn){
  int i;
  *px=a[0];
  *pn=a[0];
  for(i=1;i<s;i++){
    if(*px<a[i]) *px=a[i];
    if(*pn>a[i]) *pn=a[i];
  }
}

2)设计思路

主函数

自定义函数

3)本题调试过程中碰到的问题及其解决办法

发现是编译错误后就在编译器中编译然后找出错误。

4)运行截图

思考题:(分值等同于编程题)

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

它把相同的事物归类,然后把事物做出标记,避免给相同的特点做变量。用来简单的标记一个地址引用。
指向变量地址,便于对变量操作。
就像桌面的快捷方式,它指向一个真实的文件。
就像给存储器的某个存储地址单元起了个名字,操作这个名字就等于操作的这个存储地址单元,比如,要给某个存储地址单元赋值,这时候就把值赋给,指向这个存储地址的名字。也就是说,使用指针表示地址单元比直接用内存地址号表示方式,更人性化,操作更灵活。

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

一个指针变量在内存中占四个字节,字长:在同一时间中处理二进制数的位数叫字长。通常称处理字长为8位数据的CPU叫8位CPU,32位CPU就是在同一时间内处理字长为32位的二进制数据。一般说来,计算机在同一时间内处理的一组二进制数称为一个计算机的“字”,而这组二进制数的位数就是“字长”。字长与计算机的功能和用途有很大的关系,是计算机的一个重要技术指标。字长直接反映了一台计算机的计算精度,为适应不同的要求及协调运算精度和硬件造价间的关系,大多数计算机均支持变字长运算,即机内可实现半字长、全字长(或单字长)和双倍字长运算。在其他指标相同时,字长越大计算机的处理数据的速度就越快。字长由微处理器(CPU)对外数据通路的数据总线条数决定。 最小可寻址单位:内存的最小可寻址单位通常都是字节。也就是说一个指针地址值可对应内存中一个字节的空间。 寻址空间:寻址空间一般指的是CPU对于内存寻址的能力。CPU最大能查找多大范围的地址叫做寻址能力,CPU的寻址能力以字节为单位 (字节是最小可寻址单位)一个指针的值就是一个32位的二进制数,32位对应4字节(Byte)所以指针大小是由当前CPU运行模式的寻址位数决定!

挑战作业

思路

我们先要要了解联通元素怎样判断,然后在输出。

预习作业 6-3 最小数放前最大数放后 (10 分)

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

函数接口定义:

void input(int *arr,int n);
void max_min(int *arr,int n);
void output(int *arr,int n);

三个函数中的 arr和n 都是用户传入的参数。n 是元素个数。

input函数的功能是输入 n个元素存到指针arr所指向的一维数组中。
max_min函数的功能是求指针arr所指向的一维数组中的最大值和最小值,其中最小的数与第一个数对换,将最大的数与最后一个数对换。
output函数的功能是在一行中输出数组元素,每个元素输出占3列。

裁判测试程序样例:

#include<stdio.h>
void input(int *arr,int n);
void max_min(int *arr,int n);
void output(int *arr,int n);
int main()
{ int a[10];
input(a,10);
 max_min(a,10);
 output(a,10);
 return 0;
}

输入样例:

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)
{
  int i;
  for(i=0;i<n;i++){
    scanf("%d",&arr[i]);
  }
}
void max_min(int *arr,int n)
{
  int i,max,min,s=0;
  for(i=0;i<n;i++){
    if(arr[i]>arr[max])  max=i;
    if(arr[i]<arr[min])  min=i;
  }
  s=arr[0];
  arr[0]=arr[min];
  arr[min]=s;
  s=arr[n-1];
  arr[n-1]=arr[max];
  arr[max]=s;
}
void output(int *arr,int n)
{
  int i;
  for(i=0;i<n;i++){
    printf("%3d",arr[i]);
  }
}

2)设计思路

主函数

自定义函数




3)本题调试过程中碰到的问题及其解决办法


发现是运行超时,然后将代码复制在编译器编译,发现是算法问题。

4)运行截图

5)预习中存在的疑惑

指针函数到底该怎么使用,指针函数的里面的值怎么去定义。

结对编程

优点

1:碰见问题我们先讨论思路,能够更快解决。
2:如果代码不对,两个人可以一起寻找错误,这样效率更快。

缺点

1:两个人有时思路不同,就会发生争执,然后时间就过去了。

学习感悟

本周学习了指针函数的定义和运用,如何将指针作为函数的参数,指针与数组,地址之间的关系等。我对于指针函数的定义和运用还是不太懂,但上课老师说的时候又有一点懂。

学习进度
|日期|这周所花时间|代码行数|学到的知识点简介|问题|
------|------------------|------------|-------------------------------
|3/16~3/24|12h|150|一维数组与二维数组的应用|
|3/25~3/31|7h|300|指针变量的定义|对于指针变量只是了解一点,不是太熟稔|
|3/31~4/5|10h|220|指针函数的定义与运用,指针,数组和地址的关系|课堂上感觉自己应该多会了,到了宿舍后发现还是自己想多了|
|时间|博客字数|代码行数|
------|------------|------------
|第一周|0|60|
|第二周|120|100|
|第三周|220|160|
|第四周|260|200|
|第五周|300|360|
第六周|600|580|

标签:arr,函数,int,double,作业,第六周,2019,字长,指针
来源: https://www.cnblogs.com/lcbxhda/p/10659825.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有