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++; } }
能够对指针指向的数据直接操作