第一次作业

C高级语言第一次作业(1)
6-1 计算两数的和与差
1.主要描述题目算法
第一步:根据题目来加减运算
第二部:用指针来传递数据

2.代码:

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

3.指针在题目中的作用:
op1代表a op2代表b,
*psum代表sum *pdiff代表diff。

6-2 拆分实数的整数与小数部分
1.主要描述题目算法:
第一步:先写出函数,将数据变为int型定义整数部分
第二步:用传入数据减去int型数据定义为小数部分

2.代码:

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

3.指针在题目中的作用
x为输入数
*intpart取x整数部分
*fracpart取输入数减整数的部分

C高级语言第一次作业(2)
6-1 在数组中查找指定元素:
1.主要描述题目算法:
第一步:设定指针
第二步:在循环中找到相应值
第三步:找到后返回值

2.代码:

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

3.流程图:

4.遇到的问题:未遇到问题。

6-2 找最大值及其下标:
1.主要描述题目算法:
第一步:设置指针
第二步:在循环中找出最大值和下标
第三步:利用指针输出结果

2.代码:

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

3.流程图:

4.遇到的问题:未遇到问题

C高级语言第一次作业(3)
6-1 最小数放前最大数放后:
1.主要描述题目算法:
第一步:定义数组
第二步:利用循环找出最大值和最小值
第三步:将最大值和最小值利用指针交换
第四步:输出结果

2.代码:

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 idx=0,i,t;
        for ( i = 0; i < n; i++ ) 
         { 
             if ( arr[i] < arr[idx] )
            { 
              idx=i; }      
        }   
           if(idx!=0){
            t=arr[0];arr[0]=arr[idx];arr[idx]=t;
        }
        idx=0;
        for ( i = 0; i < n; i++ ) 
        { 
             if ( arr[i] > arr[idx] )
            { 
               idx=i;}      
        } 
    
        if(idx!=(n-1)){
            t=arr[n-1];
            arr[n-1]=arr[idx];
            arr[idx]=t;}
    }

    void output(int *arr,int n)
    {
        int i;
        for(i = 0;i < n;i++){
            printf("%3d",*(arr + i));
        }   
    }

3.流程图:

4.遇到的问题:未遇到问题

6-2 指针选择法排序
1.主要描述题目算法:
第一步:设定数组
第二步:找出数组最大值
第三步:记录当前数组值
第四步:调换当前数组值和最大值

2代码:

void sort(int *x,int n)
     {
        int j,i,t;
        for(j=1;j<=n-1;j++)
           for(i=0;i<=n-j-1;i++)
              if(x[i]<x[i+1])
             {t=x[i]; x[i]=x[i+1]; x[i+1]=t;}
     }

3.流程图:

4.遇到的问题:最大值和最小值排序错误
解决办法:将大于号改为小于号

C高级PTA第一次作业(4)
6-1 判断回文字符串:
1.主要描述题目算法:
第一步:记录字符长度
第二步:判断长度单复数
第三步:利用循环对比首尾,输出结果

2.代码:

bool palindrome( char *s ){
      int i,j;
      int n = strlen(s);
        for(i=0,j=n-1;i<=(n-1)/2;i++,j--)
        {
          if(*(s+i)!=*(s+j))
          {
            return false;
          }
        }
        if(i>=j) return true;
    }

3.流程图:

4.遇到的问题:未遇到错误。

6-2 使用函数实现字符串部分复制
1.主要描述题目算法:
第一步:找出字符串长度
第二步:判断字符串是否为空
第三步:将原数组数据存到新数组中

2.代码:

void strmcpy( char *t, int m, char *s ){
      int n;
      n=strlen(t);
      int i;
      int a=0;
      if(m<=n){
        for(i=m;t[i-m]!='\0';i++)
        {
          *(s+a)=t[i-1];
          a++;
        }*(s + n) = '\0';
      }else{
        *s='\0';
      }
    }

3.流程图:

4.遇到的问题:未定义出空字符
解决办法:在循环结尾加上空字符

附加题
1.主要描述题目算法:
第一步:获取字符串,将其传入函数。
第二步:用for语句遍历,用if语句判断遍历字符是否为y,z,若不是则码值加二,若是则分别变为a,b。

2.代码:

#include<stdio.h>
#define max 100
void SE( char *);
int main()
{
    char name[max];
    gets(name);
    SE(name);
    printf("%s",name);
    return 0;
}

void SE (char *s)
{
    for(;*s != '\0';s++)
    {
        if(*s == 'z'){
            *s = 'b';
        }else if(*s == 'y'){
            *s = 'a';
        }else{
            *s = *s + 2;
        }
    }
} 

3.流程图:

4.结果:

学习总结和进度
1.总结两周里所学的知识点有哪些学会了?哪些还没有学会?
学会了使用指针完成一系列问题。
对于指针的使用还不是很熟悉
2.将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。
地址:https://git.coding.net/AssassinCreed/Devil-May-Cry.git
截图:

3.点评同学:
丰大为:http://www.cnblogs.com/DavidPark/p/8551402.html
顾家伟:http://www.cnblogs.com/qq807443119/p/8641932.html
高立彬:http://www.cnblogs.com/gao628526/p/8551285.html
4.表格和折线图:

posted @ 2018-03-26 00:01  DevilDante  阅读(154)  评论(6编辑  收藏  举报