zoukankan      html  css  js  c++  java
  • 第1次作业

    6-1 计算两数的和与差
    1 设计思路
    (1)主要描述题目算法
    第一步:根据所给条件进行相应的加减运算。
    第二步:运用指针传输数据。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    
    void sum_diff( float op1, float op2, float *psum, float *pdiff );
    
    int main()
    {
        float a, b, sum, diff;
    
        scanf("%f %f", &a, &b);
        sum_diff(a, b, &sum, &diff);
        printf("The sum is %.2f
    The diff is %.2f
    ", sum, diff);
    	
        return 0; 
    }
    
    void sum_diff( float op1, float op2, float *psum, float *pdiff )
    {
    	*psum = op1 + op2;
    	*pdiff = op1 - op2; 
    }
    

    3.本题调试过程碰到问题及解决办法
    未遇到问题。

    6-2 拆分实数的整数与小数部分
    1 设计思路
    (1)主要描述题目算法
    第一步:获取传入数据的整数部分并通过计算获取小数部分。
    第二步:运用指针传输数据。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    
    void splitfloat( float x, int *intpart, float *fracpart );
    
    int main()
    {
        float x, fracpart;
        int intpart;
    
        scanf("%f", &x);
        splitfloat(x, &intpart, &fracpart);
        printf("The integer part is %d
    ", intpart);
        printf("The fractional part is %g
    ", fracpart);
    
        return 0;
    }
    
    void splitfloat( float x, int *intpart, float *fracpart )
    {
    	*intpart = x * 1;
    	*fracpart = x - *intpart;
    }
    

    3.本题调试过程碰到问题及解决办法
    未遇到问题。

    6-1 在数组中查找指定元素
    1 设计思路
    (1)主要描述题目算法
    第一步:根据传入数组设立相应指针。
    第二步:在循环中寻找相等的值。
    第三步:找到后返回相应值,未找到返回-1。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    #define MAXN 10
    
    int search( int list[], int n, int x );
    
    int main()
    {
        int i, index, n, x;
        int a[MAXN];
    
        scanf("%d", &n);
        for( i = 0; i < n; i++ )
            scanf("%d", &a[i]);
        scanf("%d", &x);
        index = search( a, n, x );
        if( index != -1 )
            printf("index = %d
    ", index);
        else
            printf("Not found
    ");
    
        return 0;
    }
    
    int search( int list[], int n, int x )
    {
    	int a;
    	int *p = list;
    	for(a = 0;a < n;a = a + 1)
    	{
    		if(x == *(p + a))
    		{
    			return a;
    		}
    	}
    	return (-1);
    }
    

    3.本题调试过程碰到问题及解决办法
    错误信息1:答案错误
    错误原因:一开始在循环内同时判断是否返回a或-1结果判定错误。
    改正方法:将判定返回值-1写在循环外。

    6-2 找最大值及其下标
    1 设计思路
    (1)主要描述题目算法
    第一步:设立相应数组的指针。
    第二步:在循环中找出数组中最大值及其对应下标。
    第三步:运用指针传输下标并返回最大值。
    (2)流程图

    2.实验代码

    #include<stdio.h>
    #define N 10
    int fun(int *a,int *b,int n);
    int main()
    { int a[N],i,max,p=0;
    for(i=0;i<N;i++) scanf("%d",&a[i]);
     max=fun(a,&p,N);
     printf("max=%d,position=%d
    ",max,p);
     return 0;
    }
    
    
    int fun(int *a,int *b,int n)
    {
    	int *p = a;
    	int q,e = a[0];
    	for(q = 0;q < n;q = q + 1)
    	{
    		if(e < *(p + q))
    		{
    			e = p[q];
    			*b = q;
    		}
    	}
    	return e;
    }
    

    3.本题调试过程碰到问题及解决办法
    未遇到问题。

    6-1 最小数放前最大数放后
    1 设计思路
    (1)主要描述题目算法
    第一步:输入数组。
    第二步:在循环中找出最大值最小值。
    第三步:将最大值最小值分别和数组末值初值调换。
    第四步:输出数组值。
    (2)流程图

    2.实验代码

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

    3.本题调试过程碰到问题及解决办法
    未遇到错误。

    6-2 指针选择法排序
    1 设计思路
    (1)主要描述题目算法
    第一步:在循环中记录当前数组值及其下标。
    第二步:找出数组最大值并记录下标。
    第三步:调换当前数组值和最大值。
    (2)流程图

    2.实验代码

    #include<stdio.h>
    void sort(int *x,int n);
    int main ( )
    {int *p,i,a[10];
     p=a;
     for (i=0;i<10;i++)  scanf("%d",p++);
     p=a;
     sort(a,10);
     for(i=0;i<10;i++)  printf("%4d",*p++);
     printf("
    ");
     return 0;
     }
    
    void sort(int *x,int n)
    {
     	int a,b,c,d,e;
     	for(a = 0;a < (n - 1);a = a + 1)
     	{
     		c = x[a];
     		e = a;
     		for(b = a;b < (n - 1);b = b + 1)
     		{
     			if(c < x[b + 1])
     			{
     				c = x[b + 1];
     				e = (b + 1);
    			}
    		}
    		d = x[a];
    		x[a] = c;
    		x[e] = d;
    	}
    }
    

    3.本题调试过程碰到问题及解决办法
    未遇到问题。

    6-1 判断回文字符串
    1 设计思路
    (1)主要描述题目算法
    第一步:记录字符串长度。
    第二步:判断长度单复数。
    第三步:在循环中对比首尾并返回相应值。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    #include <string.h>
    
    #define MAXN 20
    typedef enum {false, true} bool;
    
    bool palindrome( char *s );
    
    int main()
    {
        char s[MAXN];
    
        scanf("%s", s);
        if ( palindrome(s)==true )
            printf("Yes
    ");
        else
            printf("No
    ");
        printf("%s
    ", s);
    
        return 0;
    }
    
    bool palindrome( char *s )
    {
    	int a,b,c;
    	for(a = 0,b = 0;s[a] != '';a = a + 1)
    	{
    		b = b + 1;
    	}
    	if((b % 2) == 0)
    	{
    		for(c = 0;c < (b / 2);c = c + 1)
    		{
    			if(s[c] != s[b - 1 - c])
    			{
    				return false;
    			}
    		}
    	}else
    	{
    		for(c = 0;c < ((b - 1) / 2);c = c + 1)
    		{
    			if(s[c] != s[b - 1 - c])
    			{
    				return false;
    			}
    		}
    	}
    	return true;
    }
    

    3.本题调试过程碰到问题及解决办法
    未遇到错误。

    6-2 使用函数实现字符串部分复制
    1 设计思路
    (1)主要描述题目算法
    第一步:记录字符串长度。
    第二步:判断是否为空串。
    第三步:截取原数组储存到新数组中。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    #define MAXN 20
    
    void strmcpy( char *t, int m, char *s );
    void ReadString( char s[] ); /* 由裁判实现,略去不表 */
    
    int main()
    {
        char t[MAXN], s[MAXN];
        int m;
    
        scanf("%d
    ", &m);
        ReadString(t);
        strmcpy( t, m, s );
        printf("%s
    ", s);
    
        return 0;
    }
    
    void strmcpy( char *t, int m, char *s )
    {
    	int a,b;
    	for(a = 0,b = 0;t[a] != '';a = a + 1)
    	{
    		b = b + 1;
    	}
    	if(b < m)
    	{
    		*s = '';
    	}else
    	{
    		for(a = 0;t[a] != '';a = a + 1)
    		{
    			s[a] = t[m - 1 + a];
    		}
    		s[b] = '';
    	}
    }
    

    3.本题调试过程碰到问题及解决办法
    错误信息1:答案错误
    错误原因:未添加空字符。
    改正方法:在循环结束后添加空字符。

    额外加题3
    1 设计思路
    (1)主要描述题目算法
    第一步:在循环中判断输入字符。
    第二步:更改相应字符。
    第三步:储存字符串。
    第四步:输出字符串。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    int main()
    {
    	int a;
    	char s[100];
    	for(a = 0;;a = a + 1)
    	{
    		scanf("%c",&s[a]);
    		if(s[a] == '
    ')
    		{
    			break;
    		}
    		if(s[a] == 'y')
    		{
    			s[a] = 'a';
    		}
    		else if(s[a] == 'z')
    		{
    			s[a] = 'b';
    		}else
    		{
    			s[a] = s[a] + 2;
    		}
    	}
    	s[a] = '';
    	for(a = 0;s[a] != '';a = a + 1)
    	{
    		printf("%c",s[a]);
    	}
    }
    

    3.结果

    学习总结和进度
    1、总结两周里所学的知识点有哪些学会了?哪些还没有学会?
    学会了使用指针在函数内返回值。
    指针的多种形式。
    统计字符串长度方法。
    还要了解其它的函数。
    2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。
    1.git地址
    https://git.coding.net/z732511533/ZYS.git
    2.截图


    3、点评3个同学的本周作业。
    http://www.cnblogs.com/DavidPark/p/8551402.html
    http://www.cnblogs.com/xmb1547828350/p/8597402.html
    http://www.cnblogs.com/ryo-/p/8644256.html

    4、请用表格和折线图呈现你本周(3/12 8:00~3/26 8:00)的代码行数和所用时间、博客字数和所用时间。

    时间 代码行数 时间1(min) 博客字数 时间2(min)
    3.12 0 0 0 0
    3.13 100 40 0 0
    3.14 50 20 0 0
    3.15 0 0 0 0
    3.16 60 25 0 0
    3.17 0 0 0 0
    3.18 50 20 0 0
    3.19 0 0 0 0
    3.20 150 50 0 0
    3.21 50 20 0 0
    3.22 40 15 300 100
    3.23 0 0 0 0
    3.24 50 20 300 50
    3.25 60 20 600 180
    3.26 0 0 0 0

  • 相关阅读:
    android background属性问题
    AlertDialog 设置不同按钮的样式
    springboot controller统一异常处理
    springboot 配置自定义拦截器
    Linux中proc信息获取
    AliCloud-tools【分享】
    sql列转行
    算法
    静态变量与代码块
    AbstractQueuedSynchronizer(AQS)
  • 原文地址:https://www.cnblogs.com/2017023960ZYS/p/8604534.html
Copyright © 2011-2022 走看看