• 第2次作业


    6-7 删除字符串中数字字符
    1 设计思路
    (1)主要描述题目算法
    第一步:定义相应数组的指针。
    第二步:在循环中判断非数字字符,保留原数组的非数字字符。
    第三步:循环结束后添加字符串结束符。
    (2)流程图


    2.实验代码

    #include "stdio.h"
    void delnum(char *s);
    int main ()
    { char item[80];
    gets(item);
     delnum(item);
     printf("%s
    ",item);
     return 0;
    }
    
    void delnum(char *s)
    {
    	char *p = s;
    	while(*p != '')
    	{
    		if((*p < '0')||(*p > '9'))
    		{
    			*s++ = *p;
    		}
    		*p++;
    	}
    	*s = '';
    }
    

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

    6-8 统计子串在母串出现的次数
    1 设计思路
    (1)主要描述题目算法
    第一步:在循环中判断母串中每个字符后三位是否完全与字串相符。
    第二步:在循环中每符合一次字串增加计数器。
    第三步:返回计数。
    (2)流程图


    2.实验代码

    #include<stdio.h>
    int fun(char *str,char *substr);
    int main()
    { char str[81]="asdasasdfgasdaszx67asdmklo",substr[4]="asd";
     int n;
     n=fun(str,substr);
     printf("n=%d
    ",n);
     return 0;
    }
    
    
    int fun(char *str,char *substr)
    {
    	int a,b,n;
    	for(a = 0,n = 0;*(str + a) != '';a = a + 1)
    	{
    		for(b = 0;b < 3;b = b + 1)
    		{
    			if(*(str + a + b) != *(substr + b))
    			{
    				break;
    			}
    		}
    		if(b >= 3)
    		{
    			n = n + 1;
    		}
    	}
    	return n;
    }
    

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

    6-9 字符串中除首尾字符外的其余字符按降序排列
    1 设计思路
    (1)主要描述题目算法
    第一步:在除首尾字符的字符串内进行冒泡排序。
    第二步:将字符按ASCII码降序排列。
    (2)流程图


    2.实验代码

    #include <stdio.h>
    int fun(char *s,int num);
    int main()
    {
     char s[10];
     gets(s);
     fun(s,7);
     printf("%s",s);
     return 0;
     }
    
    int fun(char *s,int num)
    {
    	char x;
    	int a,b;
    	for(a = 0;a < (num - 3);a = a + 1)
    	{
    		for(b = 0;b < (num - 3 - a);b = b + 1)
    		{
    			if(*(s + b + 1) < *(s + b + 2))
    			{
    				x = *(s + b + 1);
    				*(s + b + 1) = *(s + b + 2);
    				*(s + b + 2) = x;
    			}
    		}
    	}	
    }
    

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

    7-1 输出学生成绩
    1 设计思路
    (1)主要描述题目算法
    第一步:输入人数申请动态内存。
    第二步:在循环内输入成绩,储存总值,最大值,最小值。
    第三步:计算平均值,输出对应值。
    第四步:释放内存。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	int a,n,*p;
    	double ave,max,min;
    	scanf("%d",&n);
    	p = (int *)calloc(n,sizeof(int));
    	for(a = 0,ave = 0;a < n;a = a + 1)
    	{
    		scanf("%d",(p + a));
    		if(a == 0)
    		{
    			max = *(p + a);
    			min = *(p + a);
    		}
    		ave = ave + *(p + a);
    		if(max <= *(p + a))
    		{
    			max = *(p + a);
    		}
    		if(min >= *(p + a))
    		{
    			min = *(p + a);
    		}
    	}
    	ave = ave / n;
    	printf("average = %.2f
    max = %.2f
    min = %.2f",ave,max,min);
    	free (p);
    }
    

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

    7-1 计算职工工资
    1 设计思路
    (1)主要描述题目算法
    第一步:构造数据类型,输入人数。
    第二步:在循环内输入相应数据,计算相应数值。
    第三步:输出相应值。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    struct staff
    {
    	char name[10];
    	float basic_salary;
    	float floating_wage;
    	float expenditure;
    };
    int main()
    {
    	struct staff s1;
    	int n,a;
    	float real_wages;
    	scanf("%d",&n);
    	for(a = 0;a < n;a = a + 1)
    	{
    		scanf("%s %f %f %f",s1.name,&s1.basic_salary,&s1.floating_wage,&s1.expenditure);
    		real_wages = s1.basic_salary + s1.floating_wage - s1.expenditure;
    		printf("%s %.2f
    ",s1.name,real_wages);
    	}		
    }
    

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

    7-2 计算平均成绩
    1 设计思路
    (1)主要描述题目算法
    第一步:构造数据类型数组,输入人数。
    第二步:在循环内输入相应值,计算总值。
    第三步:计算平均值输出。
    第四步:在循环内判断程序输出相应数据。
    (2)流程图

    2.实验代码

    #include <stdio.h>
    struct student
    {
    	char student_id[6];
    	char name[10];
    	int grade;
    };
    int main()
    {
    	struct student s[10];
    	int n,a,sum;
    	double ave;
    	scanf("%d",&n);
    	for(a = 0,sum = 0;a < n;a = a + 1)
    	{
    		scanf("%s %s %d",s[a].student_id,s[a].name,&s[a].grade);
    		sum = sum + s[a].grade;
    	}
    	ave = sum / (1.0 * n);
    	printf("%.2f
    ",ave);
    	for(a = 0;a < n;a = a + 1)
    	{
    		if(s[a].grade < ave)
    		{
    			printf("%s %s
    ",s[a].name,s[a].student_id);
    		}
    	}
    }
    

    3.本题调试过程碰到问题及解决办法
    错误信息1:输出学号时同时输出了姓名。
    错误原因:缺少字符串结束符。
    改正方法:定义学号时增加范围。

    6-1 按等级统计学生成绩
    1 设计思路
    (1)主要描述题目算法
    第一步:在循环内判断学生成绩并判断更改成绩等级。
    第二步:在循环内判断不及格人数并计数结束后返回。
    (2)流程图


    2.实验代码

    #include <stdio.h>
    #define MAXN 10
    
    struct student{
        int num;
        char name[20];
        int score;
        char grade;
    };
    
    int set_grade( struct student *p, int n );
    
    int main()
    {   struct student stu[MAXN], *ptr;
        int n, i, count;
    
        ptr = stu;
        scanf("%d
    ", &n);
        for(i = 0; i < n; i++){
           scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score);
        } 
       count = set_grade(ptr, n);
       printf("The count for failed (<60): %d
    ", count);
       printf("The grades:
    "); 
       for(i = 0; i < n; i++)
           printf("%d %s %c
    ", stu[i].num, stu[i].name, stu[i].grade);
        return 0;
    }
    
    int set_grade( struct student *p, int n )
    {
    	int a,num = 0;
    	for(a = 0;a < n;a = a + 1)
    	{
    		if((p[a].score >= 85) && (p[a].score <= 100))
    		{
    			(&p[a])->grade = 'A';
    		}
    		else if((p[a].score >= 70) && (p[a].score <= 84))
    		{
    			(&p[a])->grade = 'B';
    		}
    		else if((p[a].score >= 60) && (p[a].score <= 69))
    		{
    			(&p[a])->grade = 'C';
    		}
    		else if((p[a].score >= 0) && (p[a].score <= 59))
    		{
    			(&p[a])->grade = 'D';
    			num = num + 1;
    		}
    	}
    	return num;
    }
    

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

    6-2 结构体数组按总分排序
    1 设计思路
    (1)主要描述题目算法
    第一步:在循环内计算更改学生总成绩。
    第二步:构造一个相同结构。
    第三步:冒泡排序判断总成绩进行排序。
    (2)流程图



    2.实验代码

    #include <stdio.h>
    struct student					
    {
    int num;
    char name[15];
    float score[3];
    float sum;
    };
    void calc(struct student *p,int n);	 
    void sort(struct student *p,int n);
    int main()
    {
    struct student stu[5];
    int i,j;
    float f;
    for(i=0;i<5;i++)
    {
    	scanf("%d%s",&stu[i].num,stu[i].name);
    	for(j=0;j<3;j++)
    	{ 
        	scanf("%f",&f);
    		stu[i].score[j]=f;
    	}
    }
    calc(stu,5);
    sort(stu,5);
    for(i=0;i<5;i++)
    {
    	printf("%5d%15s",stu[i].num,stu[i].name);
    	printf("  %.1f  %.1f  %.1f  %.1f
    ",stu[i].score[0],stu[i].score[1],stu[i].score[2], stu[i].sum);
    }
    return 0;
    }
    
    
    void calc(struct student *p,int n)
    {
    	int a;
    	float sum = 0;
    	for(a = 0;a < n;a = a + 1)
    	{
    		(&p[a])->sum = p[a].score[0] + p[a].score[1] + p[a].score[2];
    	}
    }
    void sort(struct student *p,int n)
    {
    	struct student q;
    	int a,b;
    	for(a = 0;a < (n - 1);a = a + 1)
    	{
    		for(b = 0;b < (n - a - 1);b = b + 1)
    		{
    			if(p[b].sum < p[b + 1].sum)
    			{
    				q = p[b];
    				p[b] = p[b + 1];
    				p[b + 1] = q;
    			}
    		}
    	}
    }
    

    3.本题调试过程碰到问题及解决办法
    错误信息1:答案错误。
    错误原因:未完全检验多种情况,出现多种排序错误。
    改正方法:更改使用冒泡排序。

    学习总结和进度
    1、总结两周里所学的知识点有哪些学会了?(可记录每道作业题目所用的知识点)哪些还没有学会?
    学习了动态内存分配,结构。
    结构数组使用,结构函数使用,指针传递结构体数据。
    2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。
    1.git地址
    https://git.coding.net/z732511533/ZYS.git


    3、点评3个同学的本周作业。
    http://www.cnblogs.com/xmb1547828350/p/8657376.html
    http://www.cnblogs.com/dx2017/p/8666072.html
    http://www.cnblogs.com/fengzx/p/8672569.html
    4、请用表格和折线图呈现你本周(3/26 8:00~4/9 8:00)的代码行数和所用时间、博客字数和所用时间。

    时间 代码行数 时间1(min) 博客字数 时间2(min)
    3.26 97 100 564 20
    3.27 0 0 355 70
    3.28 0 0 0 0
    3.29 60 70 0 0
    3.30 0 0 0 0
    3.31 0 0 0 0
    4.01 0 0 572 57
    4.02 150 88 426 78
    4.03 0 0 0 0
    4.04 0 0 0 0
    4.05 0 0 0 0
    4.06 0 0 0 0
    4.07 0 0 0 0
    4.08 0 0 129 25
    4.09 0 0 0 0

  • 相关阅读:
    无题
    1.1tensorflow2.0 张量
    某某大肠_tidb_集群创建用户
    某某大肠_替换TiDB 3.0集群的tidb-server命令工具
    某某大肠_配置spark的thriftserver模块
    date_and_time
    SpringBoot整合Mybatis
    SpringBoot(3)Thymeleaf使用详解
    SpringBoot(2)实现CRUD
    SpringBoot(1)入门篇
  • 原文地址:https://www.cnblogs.com/2017023960ZYS/p/8653086.html
Copyright © 2020-2023  润新知