C语言博客作业--一二维数组

一、PTA实验作业

题目1:求整数序列中出现次数最多的数

1. 本题PTA提交列表

2. 设计思路

    定义大小为1000的数组a,b,整型变量N,i,j,max,maxnum;
    输入N;
    for i=0 to N-1
        input a[i];
    for i=0 to N-1
         b[i]=0;
    for i=0 to N-1
         for j=0 to N-1
              if a[i]==a[j]
                   b[i] 自增;
    max=0;
    for i=0 to N-1
    { if b[i]大于max  
         then{ max=b[i];
               maxnum=i;
         }
    }
    output a[maxnum],max;

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

这是之前尝试过的两个代码

第一次打出的代码,我把它限制为只出现数字1~10,所以错误,后来改写代码,又因为计数的问题卡了很久,经过多次修改才成功。

题目2:简化的插入排序

1. 本题PTA提交列表

2. 设计思路

    定义整型变量i,j,N,x;
    input N;
    定义整型数组a[N];
    for (i =0 to N-1)   input a[i];
    input x;
    for i=0 to N{
            if x<=a[i]
            {    for i=N+1 to i
                        a[j]=a[j-1];
            }
            a[i]=k;
            break;
    }
    for(i=0 to N)
        output a[i];

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

一直都是这个测试点错误,尝试用不同的方法输入不同的数字,仍然找不到错误。

题目3:判断上三角矩阵

1. 本题PTA提交列表

2. 设计思路

    定义整型变量T,i,n,p,q,flag;
    input T;
    for(i=1 to T)
    {    flag=1;
        input n;
        定义整型数组 a[n][n];
        for(p=0 to n)
            for(q=0 to p)
                input a[p][q];
        for(p=0 to n)
            for(q=0 to p)
                if a[p][q]!= 0;
                    flag = 0;
        if flag -> 1
            output YES
        else 
            output NO

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

这题没有太大问题,但是因为写代码过程中行列弄错,所以写进来做个记录。

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

三、同学代码结对互评

1.互评同学名称

曾文惠

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

我的代码

曾文惠的代码


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

我的代码在进入循环后,先判断某个数在它所在行是否为最大,再判断找出该数所在列最小的数与这个数是否相同,否则改变行再次判断;曾文惠同学与我不同的是在循环外多判断一次只有一个数时的情况。我怕更喜欢我的代码,比曾文惠同学少判断一次,但是结果是相同的。

四、本周学习总结

1.你学会了什么?

1.1 C中如何存储字符串?

字符数组初始化(1)char s[5]={'h','a','p','p','y'} (2)char str[80]=

(2)中只对前6个元素赋初值,其他元素的值不确定,str[5]为'\0'。

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

(1)字符串的结束标志是‘\0’

(2)在字符串遍历数组时,由于字符串并没有明确地给出有效字符的个数,只规定在字符串结束符‘\0’之前的字符都是有效字符,一般用字符串结束符‘\0’来控制循环。

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

第一种:采用赋值的方式:

    例如:char a[80]="welcome";

第二种:用scanf函数,字符串的格式控制说明为%s

    例如:scanf("%s",s);

第三种:用gets函数

    例如:gets(s);
    scanf与gets不同之处在于:scanf遇到回车或空格就结束输入,而gets可以输入空格,遇到回车结束输入。但在结束输入时都会自动将输入的数据和<span style="color:red">‘\0’</span>送入数组中。

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

    定义字符型变量c;定义整型变量num;
    input c;
    num=c-'0';
    output num;

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

16进制字符串转10进制

    定义字符型数组c[1000];定义整型数组a[1000]={0};
    定义整型变量i,j;
    gets(c);
    for i=2 当c[i]!=0 时 i++
    {    if c[i]>='0'&&c[i]<='9'  then  a[i]=c[i]-'0';
         if c[i]>='a'&&c[i]<='z'   then  a[i]=c[i]-87;
         if c[i]>='A'&&c[i]<='Z'  then  a[i]=c[i]-55;
    }
    a[i]=-1;
    定义整型变量sum=0;
    for p=2 当a[p]!=-1时 p++
        for j=i-4 to j>=0
        {    b[p]=pow(16,j-4);
                sum=sum+b[p];
        }
    output sum;

二进制字符串如何转10进制也是类似于上面的方法

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

本周PTA题目的第四题和第六题

第六题有一个测试点错误,但是还没找出来

3.期中考试小结

3.1 你认为为什么没考好?

课本中零散的知识点没有进行总结,没有认真复习课堂派中的练习,考试时注意力不集中,总是写错。

3.2 罗列错题。

一、16.

    解:((y=3)&&(x<=4))中“y=3”为“真”,那么只要“x<=4”条件满足,循环就会执行,所以循环总共执行5次。

三、8.

    解:7.(ch=getchar()) 8.(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z') 考试时忘记了怎么写。。

四、1.

    解:如图。

五、1.

    解:忘记怎么产生随机数,具体改正看图。

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

(1)每次上完课复习课上学习的内容,把课堂上的练习再做一遍,总结小点;

(2)每天做一些PTA题目,不堆积作业;

(3)学习新知识的同时复习之前的内容,解决自己不会的地方;

(4)整理总结错题。

posted @ 2017-12-03 22:55  看尽长安花  阅读(332)  评论(4编辑  收藏  举报