c语言字符类型作业

一、PTA实验作业

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

1. 本题PTA提交列表

1232392-20171210194732396-1585728050.png

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.判断输入的数组是否flag==1&&str[i]==' '&&str[i-1]!=' '.是,count++.
  • 10.输出count的值.

    3.代码截图

    1232392-20171210201416740-1187450746.png

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

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

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

    1. 本题PTA提交列表

    1232392-20171210201104943-1919466521.png

2. 设计思路

1232392-20171210220002427-897434989.png

3.代码截图

1232392-20171210202025286-1339646146.png

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

  • 没有问题.

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

    1. 本题PTA提交列表

    1232392-20171210202209724-1402344293.png

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.代码截图

    1232392-20171210210257005-320533875.png

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

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

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

    1232392-20171210210534677-1392664796.png

1232392-20171210210558052-1774914221.png

三、同学代码结对互评

1.互评同学名称

  • 吴军霖.

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

    1232392-20171210210656896-804363104.png

1232392-20171210210857865-374579071.png

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

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

    四、本周学习总结

    1.你学会了什么?

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

  • 类型 *p

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

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

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

    1232392-20171210212456333-2106460715.png

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

1232392-20171210213713115-1772652593.png

  • 比较好解题

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

  • 不会指针的熟练运用
  • 不会冒泡法.

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

  • 1232392-20171210214131318-1458229416.png
  • 通过devc编译
    1232392-20171210214319568-1054655711.png
  • &是个地址,*p是个值,两者不能合在一起.
    1232392-20171210214540115-2102686674.png
  • 把p当作值来做导致选了A,而p所指向的是个地址,故选D.
    1232392-20171210215009068-1954178322.png
  • num p+10 max<*q

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

3.数组上机考试小结

3.1 那题错了,请罗列?

1232392-20171210215213271-1376626040.png

1232392-20171210215339130-1847846470.png

1232392-20171210215412755-1675640504.png

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

1232392-20171210215529224-114029880.png

  • 题目中定义的数组是整形数组,故不能b[i]!='\0'来结束循环,得用n<来判断.

转载于:https://www.cnblogs.com/lyc1139/p/8017269.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值