C语言I作业08

| |
---|:--😐---:
|这个作业属于那个课程| C语言程序设计II
|这个作业要求在哪里| http://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9977
|我在这个课程的目标是| 精通c语言
|这个作业在那个具体方面帮助我实现目标| 学会了用函数结构简化数学问题,优化程序运行
|参考文献 |c语言程序设计

1.PTA实验作业(20分/题)

从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:

1.1 题目名1

7-3 jmu-c-二进制转10进制 (20 分)
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!

输入样例1:
11111111
输出样例1:
255
输入样例2:
34
输出样例2:
error input!

1.1.1数据处理

    #include<stdio.h>
 int main(){

   声明变量用于计算进制 s = 0;

    声明字符 n;
    死循环while(1){
	输入字符 n;
	if(按下回车)
	跳出循环;
	else
	  if( 输入字符为'1'、 '0')
	  	s = s*2 + (n - '0');//计算二进制到十进制的公式
	  else
     	 跳出循环;
    } 
      if(按下回车)
      输出结果 s;
      else
     输出"error input!";
      return 0;

}

1.1.2实验代码截图

1.1.3 造测试数据

|输入数据 |输出数据 |说明
|:--|:--😐:--😐--:
| -1 | error input! |负值
| 1 | 1 |1
| 11111111 | 255 |题目所给

1.1.4 PTA提交列表及说明

部分正确:由于我一开始的解题方向就错了,用的是没有字符的方法,所以总有一个测试点没过(但是代码可以解决问题)
解决方法:改用字符
如果不用字符的解法如下(但题目要求字符,所以测试点有字符存在,因此会有一给测试点报错):

1.2 题目2

7-6 整除光棍 (20 分)
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。

提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。

输入格式:
输入在一行中给出一个不以5结尾的正奇数x(<1000)。

输出格式:
在一行中输出相应的最小的s和n,其间以1个空格分隔。

输入样例:
31
输出样例:
3584229390681 15

1.2.1 数据处理

#include<stdio.h>
int main()
{
    声明变量 x, s = 1, n = 1;
    给x赋值
    while (s < x)//为了使下面不在答案前输出0
    {
	    s = s * 10 + 1;
	    n++;
    }
    while(1)
    {
	    if (s % x 整除了)
	    {
		    printf("%d", s / x);
		    break;
	    }
	    else
	    {
		    输出s / x;              //没有上面的while (s < x)部分会出现因s < x而打印出0
		    s = s % x或s - x;             //加不加while (s < x)部分虽然答案数值大小没影响
		    s = s * 10 + 1;      //但题目要求数值前面没有0
		    n++(计数有几根光棍);
	    }
    }
    输出光棍个数 n;
    return 0;
}

ps:送大家一张能豁然开朗的图= ̄ω ̄=

1.2.2实验代码截图

1.2.3 造测试数据

|输入数据 |输出数据 |说明
|:--|:--😐:--😐--:
| 31 | 3584229390681 15 |题目所给
| 1 | 1 1 |x=1
| 111 | 1 3 | x为光棍

1.2.4 PTA提交列表及说明

部分正确:就如我上面数据处理说的一样,我的答案前多输出了0
编译错误:改代码时少打了个“;”
解决方法:加上我在数据处理中的while (s < x)部分即可

2.代码互评(5分)

找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。

同学代码截图

同学1

同学2

自己代码截图

1.第一位同学用的是while循环加if else结构,并且设置了数组,但其实可以不用数组
2.第二位同学有两个return 0;可以将两种情况分开结束
3.我的代码运用while(1)死循环,并将按回车作为跳出循环的条件

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 2h 72 输出 对于输出的符号还不熟
第二周 3.5h 57 计算 算法陌生
第三周 3.5h 81 分支结构 分支的逻辑理不清
第四周 1.5h 180 for循环,+= 终止条件理不清
第五周 2h 600 函数结构 对于算法的处理比较迷惑
第六周 2h 1000 嵌套 对于嵌套的结构过多会解读的很吃力
第七周 2h 1246 switch结构 switch结构里的case最后若是不加break会怎么样
第八周 3h 1102 while结构 字符的运用不熟

3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

3.3.2 学习体会

这周我在写pta上的感觉就是吃力,真的非常吃力,但也痛并快乐着吧,那种将一道道难题搞懂的感觉真的很不错
但同时我也发现自己的思维不够灵活,并且对于字符的运用还十分陌生,之后还需多加练习,不过我感觉我的伪代码
写的比之前好些了,我还会继续加油的!(。・∀・)ノ
posted @ 2019-11-15 09:07  尭蔕  阅读(357)  评论(4编辑  收藏  举报