C语言博客作业--字符数组

一、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]='\0';
while((b[j]=getchar())!='\n')
{j++;} 输入第二个数字、
b[j]='\0';结束字符 
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的数字转为字母

posted on 2017-12-10 16:11  FaceTheWind  阅读(316)  评论(3编辑  收藏  举报

导航