一、第六次PTA作业

题目1.7-2 求整数序列中出现次数最多的数

1.本题PTA提交列表

2.设计思路

    定义整型变量n,i,j
	定义数组a[1000],b[1000]={0}
    输入n
    for(i=0;i<n;i++)  
        输入数组a[i]
	end i   
    for(i=0;i<n;i++)  
        for(j=0;j<n;j++)
            if(a[i]==a[j])  
                数组b[i]+1 
        end j
    end i
    定义出现次数t=0
    for(i=0;i<n;i++)    
        if(b[i]>t)  
        {  
            t=b[i]
            j=i
        }  
    end i 
    输出a[j],t

3.代码截图

4.本题调试碰到问题及解决办法

  • 一开始两个数相等时定义了一个变量来计算次数,到后面代码量越来越多把自己弄得也乱了,就试着用数组来储存数就解决了

题目2.7-3 出生年

1.本题PTA提交列表

2.设计思路

    定义整型变量year,n,i,j,sum
	定义整型Y为最后输出的年份 
	定义数组a[4]
	输入year,n
	for(i=year;i<=9999;i++)   
		定义数组b[10]={0,0,0,0,0,0,0,0,0,0}并每次循环初始化 
		初始化sum
		将年份四个数分别储存进a[0],a[1],a[2],a[3]          
	    for(j=0;j<4;j++)
		    b[a[j]]++
		end j	          
	    for(j=0;j<10;j++)        
		    if(b[j])   
		    sum++
		end j
	    if(sum==n)  
	    {
	    	Y=i
	    	break
		}
    end i 
	输出经过的年份和最后年份 

3.代码截图

4.本题调试碰到问题及解决办法

  • 看题目的时候一直不知道怎么比较年份中是否有数字相同,用了数组a来存放4个数字后尝试对数组a中数字直接比较代码量太多越绕越乱,之后想到用1到10十个数代表10个格子定义了数组b,然后直接数格子就变得非常简单了
    中间忘记要让年份递增导致了错误

题目3.7-4 简化的插入排序

1.本题PTA提交列表

2.设计思路

    定义整型变量N,i,j,k
    定义swap来储存插入数 
    定义数组a[N+1]    
    输入N 
	for(i=0;i<N+1;i++)
	输入数组a[i] 
	end i  
	for(j=0;j<N;j++)
		if(a[N]<=a[j])       
		{
			swap=a[N]           
			for(k=N;k>j;k--)
			a[k]=a[k-1]数组往后移动一格 
			end k   
			插入数        
			break
		}
	end j 
	for(i=0;i<N+1;i++)
	输出数组a[i]
	end i 

3.代码截图

4.本题调试碰到问题及解决办法

  • 对scanf中空格与回车有点疑问查了资料

    疑问解决后发现可以直接在数组中输入插入的数,这样就不用再多设置一个数组了
    但是最后不管怎么改都有两个测试点段错误

二、同学代码结对互评

1.互评同学名称 :农献清

2.我的代码、互评同学代码截图


3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

  • 不同:她的方法就是我一开始的思路,直接遍历数组计算出每个数出现的次数,可是我这样算的时候越绕越晕,思路很乱,我是改用另一个数组来计算次数,这样思路就清晰很多也快很多

  • 各自优势:说不出哪种比较好,这类题目我会先想出她的方法的思路,发现是死路后才会想别的方法,可能这也是我代码量不够的缘故,不管什么题目都只从头开始做,没有那种得心应手的感觉

三、截图本周题目集的PTA最后排名。

四、本周学习总结

1.你学会了什么

1.1C中如何存储字符串?

1,使用字符数组存
2,使用字符指针存储字符串
3,,可以把字符串a赋值给字符串b,注意字符串都是以\0结尾的

1.2字符串的结束标志是什么,为什么要结束标志?

字符串都是以\0结尾的

1.3字符串输入有哪几种方法?

scanf("%s",i)
gets(i)
fgets(i,,)

1.4数字字符怎么转整数,写个伪代码?

定义整数变量integer,i,字符数组ch[10]
scanf("%s", ch)输入数字字符
integer=0
for(i=0; ch[i]; i++)
    if(ch[i]>=0&&ch[i]<=9)
        integer=integer*10+(a[i]-'0')
end i
输出integer

1.516进制、二进制字符串如何转10进制?写伪代码?

十六进制:

char a[10]
int i,number=0
gets(a)输入字符串
for i=0 to a[i]!='0'遍历数组
    if a[i]为数字字符
        number=number*16+a[i]-'0'
    else if a[i]为a到f的十六进制数
        number=number*16+a[i]-'a'+10
    else if a[i]为A到F的十六进制数
        number=number*16+a[i]-'A'+10

二进制:

char a[10]
int i,number=0
gets(a)输入字符串
for i=0 to a[i]!='0'遍历数组
    number=number*2+a[i]-'0'

2.本周的内容你还不会什么

代码量缺乏,对学习与作业热情下降,正努力改正

3.期中考试小结

3.1你认为为什么没考好?

对C语言局限在电脑上的敲代码而缺少纸上的做题训练,对一些基础知识的掌握不够严谨

3.2罗列错题

3.3下半学期要怎么调整C的学习?

先端正自己的学习态度并及时完成作业,在这之前努力赶上进度,补齐之前落下的作业!

posted on 2017-12-14 19:52  李重蕖  阅读(185)  评论(0编辑  收藏  举报