您的位置:首页 > 编程语言 > C语言/C++

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

2017-12-10 22:58 399 查看

一、PTA实验作业

题目1:7-1 字符串转换成十进制整数

1. 本题PTA提交列表



2. 设计思路

定义变量i=0,j表示循环变量,m=1表示判断第一个十六进制数之前是否有‘-’的条件,flag=1表示第一个十六进制数之前没有‘-’,number=0表示转换后的十进制数
定义字符数组a[999]存放转换前字符串,b[999]存放转换后字符串
while 输入a[i]≠'#'
IF 【a[i]是十六进制数
IF (m为真
for j=0 to j<i
IF a[j]=‘-’
flag=0 表示第一个十六进制数前有‘-’
break
end for
m=0 判断结束,之后不再判断)
b[j]=a[i] 把十六进制数传递到数组b
j++】
i++
end while
a[i]='\0'; b[j]='\0'
for j=0 to b[j]='\0'
IF b[j]是数字 number=number*16+b[j]-'0'
IFb[j]是小写字母 number=number*16+b[j]-'a'
IFb[j]是大写字母 number=number*16+b[j]-'A'
IF flag=0 输出带‘-’的number
否则输出不带‘-’的number

3.代码截图



4.本题调试过程碰到问题及PTA提交列表情况说明。

1.一开始理解错误,认为必须当第一个十六进制数前是负号时number就为负数,后来c++运行结果出来和pta不一样才发现是之前有符号即可

题目2:7-2 统计一行文本的单词个数

1. 本题PTA提交列表



2. 设计思路

定义变量i=0遍历数组,变量sum表示单词个数,cnt表示判断是否是单词
定义字符数组a[999]
while 输入一个字符→a[i]!='\n'
i++
end
a[i]='\0'  sum=0
for i=0 to a[i]='\0'
cnt=0
IF a[i]≠空格    cnt←1
IF a[i+1]=空格 or a[i+1]=0
sum+=cnt
end for
输出sum

3.代码截图



4.本题调试过程碰到问题及PTA提交列表情况说明。

1.结束符设置为‘.'导致遇到带小数点的字符时输出错误

2.原本在进入进入循环后判断if a[i]为空格则sum=0 否则 if a[i]不为空格则sum=1并且判断sum累加条件没有加a[i+1]=0导致最短单词输出答案错误

题目2:7-5 统计大写辅音字母

1. 本题PTA提交列表



2. 设计思路



3.代码截图



4.本题调试过程碰到问题及PTA提交列表情况说明。

一开始想用scanf函数直接输入字符串,但scanf不能输入空格,遂用while语句

二、截图本周题目集的PTA最后排名



三、同学代码结对互评

1.互评同学名称

黄光奎

2.我的代码、互评同学代码截图

我的代码



互评同学代码



3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

他的代码通过判断k的值是否为1来表示是否为一个单词然后让count累加表示单词数,再改变k的值重新判断

我的代码通过cnt判断是否是单词然后让sum累加上cnt的值表示单词数

他的代码判断时只有当某个单词后为空格才完成统计,缺少判断条件:当不以空格结尾时的情况

四、本周学习总结

1.你学会了什么?

1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?

类型名 *指针变量名

1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?

当p=a(数组基地址)时,可以使p=a+i表示数组各地址。两个指针变量间不能相加

1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?



1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?

指针变量做形参便于对实参进行操作



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++){
if(*p>*(p+1))
{
t=*p;
*p=*(p+1);
*(p+1)=t;
p++;
}
}
}

1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?

int i,a[4],*p;
p=a;
for(i=0;i<3;i++)
p=a+i;

1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里

char *sp;
char str[4] = "abcd";
sp = str;

初始位置为首字符

1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?

#include <stdio.h>
char str( char *str1,  char *str2 );
int main()
{
int n,k;
char s[80], t[80];
gets(s);
gets(t);
str(s,t);
printf("%s\n",s);
return 0;
}
char str( char *str1,  char  *str2)
{
while(*str1!='\0')
str1++;
while(*str2!='\0')
{
*str1=*str2;
str1++;
str2++;
}
}

能够对指针指向的数据直接操作

2.本周你不会内容有什么?

2.1 课堂派错题罗列及如何订正。



num

p+n

*q>max

2.2 其他不会的?打算怎么解决

自行搜索,请教同学

3.数组上机考试小结

3.1 那题错了,请罗列?

后四题

3.2 错题如何订正,为什么错了?

在pta重新做一次,做题太慢

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: