第六週做業

#2019年春季第六次做業編程

這個做業屬於哪一個課程 C語言程序設計
這個做業要求在哪裏 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/2888
我在這個課程的目標是 學習指針,方便我找到最大值最小值
這個做業在哪一個具體方面幫助我實現目標 指針的基本用法
參考文獻 中國大學mooc

###6-1 求兩數平方根之和 函數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測試

##個人答案設計

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

##2)設計思路 此題過於簡單,流程圖無,不能夠扣個人分!!! ##3)錯誤截圖 無 ##4)正確截圖 3d

#7-1 利用指針返回多個函數值 (30 分) 讀入n個整數,調用max_min()函數求這n個數中的最大值和最小值。指針

##輸入格式: 輸入有兩行: 第一行是n值; 第二行是n個數。調試

##輸出格式: 輸出最大值和最小值。code

##輸入樣例: 在這裏給出一組輸入。例如:

5 8 9 12 0 3 ##輸出樣例: 在這裏給出相應的輸出。例如:

max = 12 min = 0

##1)實驗代碼

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

##2)設計思路 ##3)錯誤截圖 錯誤緣由:一維數組輸出時加了取地址符號 解決方法:數組的名字自己就是一個指針即爲起始地址,刪除符號便可 ##4)正確截圖 ##3、預習做業 #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)
{
  for(int i=0;i<n;i++)
  scanf("%d",arr+i);
}
void max_min(int *arr,int n)
{
  int p;
  int min1=0,max1=n-1; 
  int max=*(arr+n-1),min=*(arr);
  for(int i=0;i<n;i++)
  {
    if(*(arr+i)>max)
    {
      max1=i;
      max=*(arr+i);
	   
    }
    if(*(arr+i)<min)
    {
      
	  min1=i;
	  min=*(arr+i);
    }
  }
  p=*(arr);
  *(arr)=*(arr+min1);
  *(arr+min1)=p;
  p=*(arr+n-1);
  *(arr+n-1)=*(arr+max1);
  *(arr+max1)=p;
}
void output(int *arr,int n)
{
    for(int i=0;i<n;i++){
      
      if(!i)
      printf("%3d",*(arr+i));
      else
      printf("%3d",*(arr+i));
    }
 
}

###2)設計思路 ###3)錯誤截圖 錯誤緣由:沒有定義min1和max1做爲下標 解決方法:定義一個min1和max1 ###4)正確截圖 ##爲何要用指針?有什麼用? 答:指針用起來比較方便,若是不用指針,傳送速度慢,若是經過指針,只要傳遞一個地址。 ##指針變量在內存中佔用多大的空間?它的大小由什麼決定? 答:指針變量在內存中佔用的空間是不肯定的,有的是四個字節有的是兩個字節。 他的大小有編譯器的位數決定

###學習進度表 |日期|這周所花時間|代碼行數|學到的知識點|目前比較疑惑的問題| |--------|-----:|:----:|-----:|-----:| |3/10-3/15|5|49|二維數組的淺顯運用,還有數組的強化|爲何打開文件進行寫入操做的時候要"r+"|| |3/16-3/22|5|70|選擇排序法,二維數組的運用,冒泡排序的初步瞭解|冒泡排序和選擇排序的區別|| |3/23-3/28|5|40|判斷和排序的運用|不會調試|| |3/29-4/3|6|7|指針的運用|下標不知道何時運用|

##折線圖 ###學習感悟:大多數人都說題目簡單,可是我並不這麼認爲,要求看的視頻沒看什麼,致使於不少東西不太懂

###結對編程總結:個人搭檔過個幾個星期會被我逼瘋吧,畢竟他的實力與我相差太多,可是我是不會就此而不問他的(固然 我也要本身多思考否則真是太讓搭檔失望了),對於我來講結對編程沒有缺點,

相關文章
相關標籤/搜索