一、PTA实验作业(4分)
题目1:7-1 字符串转换成十进制整数
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
- 定义i,j,k为循环变量,flag用来判断输入符号是否为负数,f用来判断输入字符是否为十六进制字符,再定义ten存放十进制数,数组a[80],str[80];存放字符串
flag=1,f=1;
输入字符串a[i]
k=0;
for(i=0;a[i]!=‘\0‘;i++){
如果a[i]属于字符‘0’到‘9’或者‘a‘到‘z‘或者‘A‘到’Z‘
str[k++]=a[i];f=0;
如果f=1&&a[i]==‘-‘ flag=0;}
ten=0;
for(k=0;str[k]!=‘\0‘;k++){
将十六进制字符转化为十进制数字}
if(flag==0&&ten==0) printf("0");//当输入-0时应输出0
if(flag==1)
printf("%ld\n",ten);//输入字符中无负号
if(flag==0&&ten!=0) printf("-%ld",ten)//输入字符中有负号
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 1.题目要求说如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。说明只有在第一个十六进制数之前的符号才算,中间的都不算,但是我的程序不知道为什么无法输出负值。
- 解决办法:我后来用devc调试运行发现,不知道为什么运行到判断a[i]是不是‘-’这句时程序直接跳出循环,然后直接运行到循环外判断输出条件那一句,所以判断a[i]=‘-’再使flag=0作为输出条件这一句怎么也不会被执行到,也没法输出负值。
最后我也不知道到底具体是哪一句有问题,所以就稍微换了个思路去改程序,我之前是用语句if(a[i]>=‘0‘&&a[i]<=‘9‘||a[i]>=‘a‘&&a[i]<=‘f‘||a[i]>=‘A‘&&a[i]<=‘F‘||a[i]==‘-‘||a[i]==‘+‘)来判断字符是否属于十六进制数的字符,后来我改成了 if(a[i]>=‘0‘&&a[i]<=‘9‘||a[i]>=‘a‘&&a[i]<=‘f‘||a[i]>=‘A‘&&a[i]<=‘F‘)然后在用语句if(a[i]==‘-‘) flag=0;来判断输入字符是不是负号。
- 2.题目要求说负号在中间时不算,但是我的程序还是把他计算进去了。
- 解决办法:将判断语句if(a[i]==‘-‘) flag=0;改为if(a[i]==‘-‘&&f=1) flag=0;表示负号在输入的十六进制字符之前才可以进入这个循环。
题目2:7-3 找最长的字符串
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
- 定义i,j,为循环变量,count用于判断最长字符串,n为要判断的字符串个数,a[80];存放字符串,str[80],存放最长字符串。
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
题目3:
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
二、截图本周题目集的PTA最后排名。
三、同学代码结对互评(1分)
1.互评同学名称
2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
四、本周学习总结(3分)
1.你学会了什么?
1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?
类型名 指针变量名 如int p.
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?