c语言字符类型作业

一、PTA实验作业

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

1. 本题PTA提交列表

2. 设计思路

  • 1.定义整形变量i=0,count=0,flag.
  • 2.定义数组str[999]
  • 3.输入str[i]=getchar())!='\n,i++数组
  • 4.进入for(i=0;str[i]!='\0';i++)的循环.
  • 5.判断输入的数组是否符合条件,若符合flag=1.
  • 6.判断输入的数组是否符合条件并且str[i+1]=='\0',符合count++.
  • 7.判断输入的数组是否str[i]','||str[i]'.'||str[i]'!'||str[i]'?,符合则flag=0.
  • 8.判断输入的数组是否(str[i]','||str[i]'.'||str[i]'!'||str[i]'?')&&(str[i-1]>='a'&&str[i-1]<='z'||str[i-1]>='A'&&str[i]<='Z'||str[i-1]>='0'&&str[i-1]<='9').符合则count++.
  • 9.判断输入的数组是否flag1&&str[i]' '&&str[i-1]!=' '.是,count++.
  • 10.输出count的值.

3.代码截图

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

  • 没有考虑文本结尾标点符号前可能有空格,而导致部分正确.

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

1. 本题PTA提交列表

2. 设计思路

3.代码截图

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

  • 没有问题.

题目3:7-7 删除字符串中的子串

1. 本题PTA提交列表

2. 设计思路

  • 1.定义整形变量 N,i,j,flag=0,m,count=0,b=0,l;
  • 2.定义数组str[10000],hexad[10000],x[10000].
  • 3.进入for(j=1;j<=2;j++)的循环,输入str[i]=getchar())!='\n'的两串数组字符.
  • 4.如果输入的字符串为第一句,flag++.
  • 5.如果输入的字符串为第二句,count++.
  • 6.如果j=1,进入for(i=0;str[i]!='\0';i++)的循环,用新的数组hexad[i]来表示第一串字符串.
  • 7.如果j=2,进入for(j=1;j<=flag;j++)的去嵌套循环
  • 8.再进入for(i=0;hexad[i]!='\0';i++)的循环
  • 9.进入for(m=0;m<count;m++)的循环
  • 10.如果(hexad[i]!=str[m],break;
  • 11.如果m<count-1,i++.
  • 12.如果m!=count,x[b]=hexad[l];.
  • 13.进入for(b=0;x[b]!=0;b++)的循环,用数组hexad[b]来表示x[b];
  • 14.最后 putchar(x[b]).

3.代码截图

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

  • 只删除一个字符串,没有考虑到有重复的情况.

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

三、同学代码结对互评

1.互评同学名称

  • 吴军霖.

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

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

  • 1.我和军霖同学的解题方法一点类似,都是通过规律来做,但是军霖方法是找出行列跟数组下表的关系,而我的方法是用规律每一行的每个字母都是相差4个单位.
  • 2.我更喜欢军霖代码,只用了19行,而且方法创新.

四、本周学习总结

1.你学会了什么?

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

  • 类型 *p

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

  • 比如(*p)++,将指针所指的变量自增;俩个同类型的指针变量可以相减,但是不是相加

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

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

``#include<stdio.h>
void big(float x,int *intpart,float *floatpart);
int main(void)
{
int intpart;
float number,floatpart;
scanf("%f",&number);
big(number,&intpart,&floatpart);
printf("%d %f",intpart,floatpart);
return 0;
}
void brek(float x,int *intpart,float *floatpart)
{
*intpart=x;
floatpart=x-intpart;
}`

![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210212946646-1813415606.png)


###1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。

include<stdio.h>

void brek(float x,int *intpart,float *floatpart);
int main(void)
{
int intpart;
float number,floatpart;
scanf("%f",&number);
brek(number,&intpart,&floatpart);
printf("%d %f",intpart,floatpart);
return 0;
}
void brek(float x,int *intpart,float *floatpart)
{
*intpart=x;
floatpart=x-intpart;
}

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

int a[100],*p;
p=a;

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

char *p;
char a[10];
p=a;

###1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210213713115-1772652593.png)


 - 比较好解题
##2.本周你不会内容有什么?
 - 不会指针的熟练运用
 - 不会冒泡法.
###2.1 课堂派错题罗列及如何订正。
 - ![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210214131318-1458229416.png)
 - 通过devc编译
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210214319568-1054655711.png)
 - &是个地址,*p是个值,两者不能合在一起.
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210214540115-2102686674.png)
 - 把p当作值来做导致选了A,而p所指向的是个地址,故选D.
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210215009068-1954178322.png)
 - num  p+10  max<*q

###2.2 其他不会的?打算怎么解决
##3.数组上机考试小结
###3.1 那题错了,请罗列?
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210215213271-1376626040.png)

![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210215339130-1847846470.png)

![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210215412755-1675640504.png)


###3.2 错题如何订正,为什么错了?
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210215529224-114029880.png)

 - 题目中定义的数组是整形数组,故不能b[i]!='\0'来结束循环,得用n<来判断.
posted @ 2017-12-10 22:00  ljy1139  阅读(439)  评论(3编辑  收藏  举报