二学期第一次作业

1

1.计算两数的和与差
(1)思路
第一步:计算两数的和
第二步:计算两数的差
(2)代码

void sum_diff( float op1, float op2, float *psum, float *pdiff )
{*psum=op1+op2;
*pdiff=op1-op2;
}

无问题
2.拆分实数的整数与小数部分
(1)思路
第一步:找出实数的整数部分
第二步:用实数减去整数部分得出小数部分
(2)代码

void splitfloat( float x, int *intpart, float *fracpart )
{
  int a=x;
  *intpart=a;
  *fracpart=x-a;
}

无问题
3.在数组中查找指定元素
(1)思路
第一步:使用循环在数组中查找指定元素
第二步:若无指定元素则输出no found
(2)代码

int search( int list[], int n, int x )
{
  int i, back;
  for(i=0;i<n;i++)
  {
    if(list[i]==x){back=i;break;}
    else{back=-1;}
  }
  return back;
}

无问题
4.找最大值及其下标
(1) 思路
第一步:设立相应数组的指针。
第二步:在循环中找出数组中最大值及其对应下标。
第三步:运用指针传输下标并返回最大值。
(2)代码

int fun(int *a,int *b,int n)
{
 int max=0;
  int i;
     for(i=0,max=0,*b=0;i<n;i++)
     {
         if( a[i] > max ) {
		 max=a[i];
		 *b=i;
		 }
     }
  return max;
}

无问题
5. 最小数放前最大数放后
(1)思路
第一步:输入数组。
第二步:在循环中找出最大值最小值。
第三步:将最大值最小值分别和数组末值初值调换。
第四步:输出数组值。
(2)代码

#include<stdio.h>
void input(int *arr,int n)
{
	int i=0;
	for(i=0;i<n;i++)
	{
		scanf("%d",&arr[i]);
	}
 } 
void max_min(int *arr,int n)
 {
 	int j=0,x=0,y=n-1;
 	for(j=0;j<n;j++)
 	{
 		if(arr[x]>arr[j])
 		{
 			int swap;
 			swap=arr[x];arr[x]=arr[j];arr[j]=swap;
		 }
	 }
	 for(j=n-1;j>0;j--)
	 {
	 	if(arr[y]<arr[j])
	 	{
	 		int temp;
	 		temp=arr[y];arr[y]=arr[j];arr[j]=temp;
		 }
	 }
 }
 void output(int *arr,int n)
 {
 	int k=0;
 	for(k=0;k<n;k++)
 	{
 		printf("%3d",arr[k]);
	 }
 }

两数交换时出错使得两数相等改正后正确
6. 指针选择法排序
(1)思路
第一步:在循环中记录当前数组值及其下标。
第二步:找出数组最大值并记录下标。
第三步:调换当前数组值和最大值。
(2)代码

#include<stdio.h>
void sort(int *x,int n)
{
	int j=0,k=0;
	for(j=1;j<n;j++)
	{
		for(k=0;k<n-j;k++)
		{
			if(x[k]<x[k+1])
			{
				int swap;
				swap=x[k];x[k]=x[k+1];x[k+1]=swap;
			}
		}
	}
}

无问题
7.判断回文字符串
(1)思路
第一步:记录字符串长度。
第二步:判断长度单复数。
第三步:在循环中对比首尾并返回相应值。
(2)代码

bool palindrome( char *p ){
		int i,count=0,q;
		count=strlen(p);
		q=count/2;
		for(i=0;i<q;i++){
			if((*(p+i))!=(*(p+count-i-1))){
				return(false);
			}
		}
		if(i==q){
			return(true);
		}
	}

无问题
8. 使用函数实现字符串部分复制
(1 )思路
第一步:记录字符串长度。
第二步:判断是否为空串。
第三步:截取原数组储存到新数组中。
(2)代码

	void strmcpy( char *p, int a, char *q ){
		int i;
		for(i=a;*(p+i-1)!='\0';i++){
		  *(q+i-a)=*(p+i-1);
		}
		*(q+i-a)='\0';
	}

2

1.总结两周的学习
这两周学习了指针及其应用,对指针的应用还有一些模糊,指针的意义、定义符等已经学会。
2.git地址(https://coding.net/u/lr572453251/p/lirui/git?public=true)

3.点评同学
{高立彬}(http://www.cnblogs.com/gao628526/p/8551285.html)
{班庆泽}(http://www.cnblogs.com/wsbqz/p/8641741.html)
{于耀松}(http://www.cnblogs.com/jsjyys/p/8589997.html)
4.学习情况

posted on 2018-03-25 20:20  1班李锐  阅读(179)  评论(3编辑  收藏  举报

导航