C语言I博客作业08

| | |
|:---😐:---😐:---😐
|这个作业属于那个课程|c语言程序设计I|
|这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9977|
|我在这个课程的目标是|熟练掌握c语言,学会怎样去做好表格,统计图,流程图等|
|这个作业在哪个方面帮我具体实现目标|学会了使用while和do-while结构解决问题|
|参考文献|《c语言程序设计(第3版)》|

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

请再此处列出自己的排名图片;

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

1.1jmu-c-二进制转10进制 (20 分)

输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!

输入样例1:

11111111

输出样例1:

255

输入样例2:

34

输出样例2:

error input!

1.1.1数据处理

介绍实现本题过程中,你的数据表达、数据处理是怎么做的。

数据表达:定义输入的字符ch,存储转为十进制后的值sum;
数据处理:伪代码:

输入字符op;
while op!='\n //循环判断 
switch(ch) do //对于输入为1,0,和其他字符这三种情况做判断 
case ‘1’: sum=sum*2+1;break;//
case '0': sum=sum*2+0;break;//
default: 输出“error input!”;
直接结束
end switch;
再输入ch;
end while;
输出num.

1.1.2实验代码截图

贴图展示代码,不要复制。请给出名字标识。

1.1.3 造测试数据

输出你的程序面向各种测试数据结果,除了题目给出的测试数据,可以自己再造其他临界数据,越多越好,并加上必要说明。

输入数据 输出数据 说明
11111111 255 输入样例1
01230123 error input! 随机取值
-1111111 error input! 取负数

1.1.4 PTA提交列表及说明

根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。

提交列表说明:

答案错误:查找了问题很久,后来经过百度发现是```default:printf("error input!\n");break;```这个语句应该用```return 0;```来跳出循环
答案正确:将```break;```修改为```return 0;```后答案正确

1.2整除光棍 (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)。

输出格式:

在一行中输出相应的最小的sn,其间以1个空格分隔。

1.2.1数据处理

介绍实现本题过程中,你的数据表达、数据处理是怎么做的。

数据表达:定义n,x,s=0,flag=0;
数据处理:伪代码:
声明变量
//输入x;	
for(n=1;;n++){//循环计算
    s=s*10+1;		
    if(s>=x){		
       flag=1;			
       //输出s/x;	
    }		
    else if(flag==1) 
	//输出0;		
        s=s%x;		
    if(s==0)//跳出for循环;	
    }	
	printf(" %d",n);
    //结束函数返回0值;
}

1.2.2实验代码截图

1.2.3 造测试数据

输出你的程序面向各种测试数据结果,除了题目给出的测试数据,可以自己再造其他临界数据,越多越好,并加上必要说明。

输入数据 输出数据 说明
31 3584229390681 15 输入样例
21 5291 6 随机取值
11 1 2 随机取值

1.2.4 PTA提交列表及说明

根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。

提交列表说明:

这题是在编译器上做的,做的时候一直没想明白这题的循环语句该怎么去写,请教同学后知道这题最好是用break等去跳出循环,而不是让它自己判断结束循环。

2.代码互评(5分)

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

同学代码

自己代码

同学用的是两个while循环结构+一个if-else结构,而我用的是一个for循环结构+一个if-else嵌套结构,感觉自己的代码更加复杂。

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点 目前比较迷惑的问题
4/9-17 6 50 接触c语言,输出Hello World!
5/9-24 20 200 如何向别人提出问题,顺序结构 在完成PTA过程时总是被警告:忽略使用属性声明的"scanf"返回值
7/10-8 24 350 if-else判断结构,余数表示,逻辑"或"逻辑"与" 同上
8/10-15 20 400 for循环结构
9/10-22 23 415 函数定义,while循环与for循环的区别
10/10-29 20 390 多分支结构、字符型数据类型和逻辑运算符
11/11-4 24 400 switch语句结构
12/11-11 20 450 while和do-while结构

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

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

3.3.1 学习内容总结

3.3.2 学习体会

这次的博客园作业完成的较晚,主要还是一些问题没有弄明白,列入break和return的区别。经过这次作业明白了两者的区别 return和break的区别,break是终止循环的,而return在表达式为空(void)时,不向被调
函数返回任何值,终止这个函数。 另一个含义是表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。

posted @ 2019-11-15 21:46  丿Toy  阅读(197)  评论(1编辑  收藏  举报