第一次作业

第一次作业

作业一:

1.计算两数的和与差

a.插入代码

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

b.流程图

c.调试中的问题:这题太简单,没问题!!

2.拆分实数的整数与小数部分

a.插入代码

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

b.流程图

c.调试中的问题:这题太简单,没问题!!

3.在数组中查找指定元素

a.代码

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

b.流程图

c.本体在调试中未出现问题

4.找最大值及其下标

a.代码

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

b.流程图
通过for循环找到数组中的最大值,返回最大值。

c.未出现调试中的问题

5.最小数放前最大数放后

a.代码

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

b.流程图
定义函数,本题其实就是三个小函数的集合,每一个函数都是在比较大小然后按照题意交换位置,小的数换到前面大的数换到后面,循环,输出。
c.这道题是通过其他同学的帮助完成的。

6.指针选择法排序

a.代码

void sort(int *x,int n)
{
int i,j;
int a;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++) 
{
if(*(x+i)<*(x+j))
{
a = *(x+i);
*(x+i) = *(x+j);
*(x+j) = a;
}
}
}
return 0;
}

7.判断回文字符串

a.代码

 bool palindrome(char *s)
{    int a[4]={true};
     int b[5]={false};
     int length;
     int mark=0;
     int i,j;
     int n,m,flag=0;
     length=strlen(s);
     n=length-1;
     for(i=0;i<length/2;i++,n--)
     {
         if(*(s+i)!=*(s+n))  
         {      flag=1;     
                break;
                }           
                            }
     if(flag==1)
     {return *b;
                }
     else if(flag==0)
     { return *a;
          }
     }

b.流程图
通过strlen函数得到实参的字符长度,根据其判断可能是哪种回文类型,通过for循环依次比较第一个与最后一个,第二个与倒数第二个,依次往下,根据是否是回文返回不同的字符串。


c.未出现问题

8.使用函数实现字符串部分复制

a.代码

void strmcpy(char *t,int m,char*s)
{
    int count=0;
    int i;
    for(i=0;;i++)
    {
     if(*(t+i)=='\0')
     {break;
     }
     else
     {count++;
     }
    }
    if(count<m)
    {*s='\0';
    }
    else
    {
    for(i=0;*(t+i)!='\0';i++)
    {
    *(s+i)=*(t+m-1+i);
    }
    *(s+i)='\0';    
    }
}

作业二:

1.这两周学会了指针函数,并且复习了上学期的函数调用
2.表格

3.点评三位同学
贾瑱
李锐
黄国戎

posted @ 2018-03-25 21:21  金海东123  阅读(189)  评论(2编辑  收藏  举报