一、PTA实验作业
题目1:7-1 字符串转换成十进制整数
1.本题PTA提交列表
2.设计思路
定义变量i=0判断有效的字符个数,flag=0判断正负,a[998]储存字符,b=0代表位数
定义长整型变量total计算答案
定义字符型变量ch判断字符有效性
for(;;)
如果ch=='-'并且i==0
flag=1
输入ch
如果ch<'9'并且ch>'0'
a[i]=ch-'0',i++转为数字并且有效字符个数加1
如果ch<='f'并且ch>='a'
a[i]=ch-'a'+10;i++; 转为数字并且有效字符个数加1
如果ch<='F'并且ch>='A'
a[i]=ch-'A'+10;i++ 转为数字并且有效字符个数加1
如果输入ch=='#'
end
for i=i-1 to i=0
total=total+a[i]*pow(16,b)
b++
如果flag=1
total=-total转为负数
printf("%ld",total)
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
1.没有将结果定义为长整形变量导致答案错误
2.字符型数组定义长度不够导致段错误
题目2:7-6 Jack cheng的烦恼2
1.本题PTA提交列表
2.流程图
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
本题除了漏打;以外无明显错误
题目3:7-12 IP地址转换
1.本题PTA提交列表
2.设计思路
定义变量int i=0,j=0,k=0,a1=0,b1=0,c1,flag=0,flag2=0;
定义字符型变量 a[50],b[50],c[50];
while((a[i]=getchar())!=' ')
{i++;}输入第一个数字
a[i]=' ';
while((b[j]=getchar())!='
')
{j++;} 输入第二个数字、
b[j]=' ';结束字符
for i=i-1 to i=0
a1=a1+((a[i]-'0')*pow(10,k));k++;
如果a[i]>'9'或者a[i]<'0
flag=1;
end
for j=j-1 to j=0
b1=b1+(b[j]-'0')*pow(10,k);k++;
如果b[j]>'9'||b[j]<'0'
flag2=1;
如果 a1>1000或者a1<1
flag=1
如果 b1>1000或者b1<1
flag2=1
c1=a1+b1
如果flag1=1并且flag2=0
printf("? + %d = ?",b1);
如果flag2=1并且flag=0
printf("%d + ? = ?",a1);
如果flag==1并且flag2==1
printf("? + ? = ?");
如果flag==0并且flag2==0
printf("%d + %d = %d",a1,b1,c1);
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
1.未考虑边界问题导致部分正确
2,多个空格的情况没有考虑,将第一个字符判断结束条件改为空格,第二个条件改为回车得以解决
二、截图本周题目集的PTA最后排名。
PTA排名
三、同学代码结对互评
1.互评同学名称
吴军霖
2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)
我的代码
吴某的代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
我的代码是输入完后再计算结果的,吴某则是在输入的过程中计算结果的,他的代码变量少并且简短,所以更好。
四、本周学习总结
1.你学会了什么?
1.1指针变量如何定义?
在变量名字前加*代表指针
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
用于指针指向数组,指针自增表示数组的下一个,如a代表a[0],a++后,a代表a[1]
不能相加
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
出现随机数字
1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?
指针变量做函数形参 void spllitfloat(float x,int* intpart,float* fracpart)
函数实参spllitfloat(x,ip,fp);
可以在函数中改变主函数中变量的值
1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。
void bubble(int *p,int n)
{
int i,j,t;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++,p++)
if(*p>*(p+1))
{
t=*p;
*p=*(p+1);
*(p+1)=t;
}
}
1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
int a[10],int p=a
数组元素用p表示
1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
char *p,str[6]={hello}; p=str;
初始位置为str[0]
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
更简短
2.本周你不会内容有什么?
2.1 课堂派错题罗列及如何订正。
b选项中应该是scanf("%d",p);p代表地址。
2.2 其他不会的?打算怎么解决
利用百度或者询问同学。
3.数组上机考试小结
1.刚开始做题时思路很乱浪费了很多时间,以至于做题时间不够,需要多加练习。
2.有些题目调试花了较多时间,也需多加练习
3.1 那题错了,请罗列?
编程题第二题,没有思路,用了输出%x的方法
3.2 错题如何订正,为什么错了?
应该用除以16求余数的方法,逐渐求得结果,并用if语句将数字转为字符,将大于9的数字转为字母