一、PTA实验作业

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

1. 本题PTA提交列表

2. 设计思路

定义循环变量i,j定义不为空格的字符数count,定义单词数number,i,j,count,number赋初值0;
定义字符数组a
输入字符数组a
遍历数组
每次进入循环,对count赋初值0
fori=jtoa[i]=='\0'
如果a[i]为空格
j=i+1
跳出循环
否则
count++记录非空格字符数
end for
如果count>=1
number++记录单词个数
如果a[i]=='\0',数组遍历结束
输出单词个数

3.代码截图

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

没有考虑好空格的问题,一开始使用的判断方法是如果连续俩个数据,前一个是非空格,后一个是空格,就表示一个单词。但是这种判断就不适合末位是空格,单词数会多一。还有就是出现连续空格如何跳过这些空格继续数下去。最后发现利用一个循环可以解决多空格问题。通过判断出的非空格字符来记录单词个数。

题目2:7-6 Jack cheng的烦恼2

1. 本题PTA提交列表

2. 设计思路

【考虑不完整】
定义字符数组a
定义循环变量,括号数n
定义变量flag,并赋初值0
输入n
如果n不是偶数,一定不配对
输出False
如果n是偶数
for i=0 to i<n
输入字符元素
end for
for i=0 to i<n
flag=0;
如果a[i]为(或{ a[n-i]对应
flag=1
end for
如果i为奇数
for i=0 to i<=n/2
flag=0
如果a[i]为(或{ a[i+1]为对应的)或}
flag=1
end for
如果 flag==1
输出True
如果flag==0
输出False

3.代码截图

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

只考虑到像(){}或者(({}))这种配对排列情况,还有类似({}())这种样子的就没考虑到,找规律发现可以找(和{的配对,剩下没有能配对左括号的就是配对错误了,但是还没想好怎么写代码。

所以正确思路应该是:遍历数组,找左括号的配对,配对成功就接着配下一对,如果最后有没能配对的,这个字符串就括号配对错误

题目3:7-11 藏头诗

1. 本题PTA提交列表

2. 设计思路

3.代码截图

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

一开始直接输出输不出来,注意到题目中一个汉字俩个字节,将俩个元素赋给新数组中一个元素,实现输出(借鉴了相关的代码,如何实现一个汉字俩个字节)

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

三、同学代码结对互评

1.互评同学名称 周炳辉

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

我的代码

周炳辉的代码

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

我将z值放在一个数组里,然后遍历数组,找到与mo对应的z值,而炳辉直接把mo当做下标值,这样少了一次循环,而且也好读些。

PTA提交结果:

发现X没大写,改了还是不对。在炳辉大佬指点下,发现代码有漏洞,因为每次输入后,我都给flag赋0值。这样的话,如果最后一组的身份证是正确的,我的flag没改变,是0.就会执行flag==0这一语句,输出全对。

解决办法:增加了一个变量flag1,赋初值为1,只要身份证有误,就执行flag1=0.判断最后flag1,如果为1,输出全对。

正确代码:

四、本周学习总结

1.你学会了什么?

1.1指针变量如何定义

定义指针变量的一般形式: 类型名 *指针变量名

(1)必须是有效的数据类型:如int,float,char等

(2)指针变量名是指针变量的名称,必须是一个合法标识符

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

指针加法用在指针变量加一个常量,+n表示下移n个存储单元,-n表示上移n个存储单元。俩个指针变量相加就是地址相加,没有什么意义

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

会指向一个不确定的单元

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

void splitfloat(float x,int *intpart,float *fracpart);
int main(){
float x;
int intpart;
float fracpart;
scanf("%f",&x);//输入实数
splitfloat( x,&intpart,&fracpart);//调用函数
printf("%d\n",intpart);
printf("%f",fracpart);
return 0;
}
void splitfloat(float x,int *intpart,float *fracpart){
*intpart=(int)x;//强制转换,取整
*fracpart=x-*intpart;//小数部分
}

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

#include<stdio.h>
void bubble (int a[],int n);
int main(){
int n,a[8];
int *p;
p=a;
int i;
scanf("%d\n",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
bubble(a,n);
for(i=0;i<n;i++){
printf("%d",a[i]);
}
return 0;
}
void bubble(int a[],int n){
int i,j,t;
int *p=a;
int *pi,*pj,item;
for(i=1;i<n;i++){
for(j=0;j<n-i;j++){
pi=p+j;
p=p+j+1;j
if(*pi>*pj){
item=*pi;
*pi=*pj;
*pj=item;
}
}
}
}

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

int *p;

int a[80];

int i,n;

scanf("%d",&n);

for(i=0;i<n;i++){

scanf("%d",a[i]);

指针变量指向数组

(1)p=&a[0]

(2)p=a

用指针变量表示数组元素

(1)p=a+i

(2)p=&a[i]

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

char *p;

char a[80];

int i,n;

scanf("%d",&n);

for(i=0;i<n;i++){

scanf("%c",a[i]);

字符指针指向字符串

(1)p=&a[0]

(2)p=a

初始位置在字符串首地址

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

如果将某个变量的地址作为函数的实参,相应的形参是指针。通过改变指针常量的值,就改变了存储单元中的内容,返回主调函数时,变量值也就改变了

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

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

循环结束后,指针p已经不再指向数组,而是未知的位置,指针指向内容不明确,输出的会是随机值

改正:在printf("\n")后加一句 p=a

a表示地址常量,常量不能使用自增符

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

删除字符串中的子串,目前只会删除一个字符还有计算字符串中子串个数。还不大有思路,项借大佬的代码看看,再自个敲敲。几种排序方法还是排的乱七八糟的,理论有了,实践不够吧。先理一遍伪代码吧,再改成代码。觉得这部分是考试重点,不能丢。

3.数组上机考试小结

3.1 那题错了,请罗列?

6-1 数组循环右移

7-3 jmu-c-输出字符间的字符子串

数组开始写题就很慢了,尤其字符串学的太垃圾了,考试就试着写了几题,排序错了还改好久改不出来

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

6-1错的很不应该,之前循环左移会,改成右移和调用函数就乱七八糟,输出实现不了,改都不知道改哪。以为会这种方法的思路就会了,一操作全是问题,糟心

7-3遍历数组,首先寻找起始字符,继续向后找,如果找到终止字符,表示存在子串。如果存在子串,遍历数组,把起始字符和终止字符以及之间的字符放在一个新的数组里,遍历结束后,输出这个子串。

C语言---字符数组的更多相关文章

  1. C语言 字符数组与字符指针比较

    C语言 字符数组与字符指针比较 #include<stdio.h> /* 字符数组会在定以后预先分配内存空间字符串是常量所以会直接把字符串拷贝到数组中, 因为数组地址不同,所以不相等· 字 ...

  2. C语言字符数组超细讲解

    看到标题,有不少朋友会想:字符数组不也是数组吗?为什么要单独拿出来讲哩?莫非它是朵奇葩? 哈哈,确实,一起来认识一下这朵数组界的奇葩吧! 一.字符数组的定义.引用.初始化 大家好!我是字符数组,看我的 ...

  3. [c语言]字符数组、字符串定义

    C语言中字符串通常用字符指针和字符数组来定义: char* pS="abcdef"; char s[]="abcdef"; 这两种方式都会在结尾为字符串隐式补结 ...

  4. 【转】C语言 字符数组与字符串

    原文:http://blog.csdn.net/metasearch/article/details/2856097 在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串.总结起来 ...

  5. c语言字符数组与字符串的使用详解

    转自:http://www.jb51.net/article/37456.htm 1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ ...

  6. c语言字符数组和指针的经典用法

    1.字符数组 许多情况下,对字符串的处理使用字符数组会更加方便,比如: 我觉得不改变字符串的原有顺序,对字符串进行删除等操作时,使用字符数组效果会更好. eg:给定字符串(ASCII码0-255)数组 ...

  7. C 语言字符数组的定义与初始化

    1.字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素.char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'} ...

  8. C语言字符数组和字符串

    用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ' ', 'p', 'r', 'o' ...

  9. c语言字符数组的初始化问题

    1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y ...

随机推荐

  1. asp.net mvc razor布局页中a标签的href的跳转问题

    笔者做了一个文件上传系统,文件上传后,保存在wwwroot目录的file文件夹中,并把该文件的路径保存到数据库中, 如这样的一个路径保存在数据库: file/b775f487-0127-41e0-9d ...

  2. 小程序版好友对战实战-wss部署与小程序用户登录时序

    上一篇文章是对需求的分析,本次将逐渐进入代码阶段.本次主要的内容包括服务端wss的部署以及小程序端用户授权的时序及逻辑. wss的配置与部署 微信小程序出于安全考虑,要求所有涉及到网络的操作,必须使用 ...

  3. C#图解教程 第二十一章 命名空间和程序集

    命名空间和程序集 引用其他程序集 mscorlib库 命名空间 命名空间名称命名空间的补充命名空间跨文件伸展嵌套命名空间 using 指令 using命名空间指令using别名指令程序集的结构 程序集 ...

  4. PyTorch官方中文文档:torch

    torch 包 torch 包含了多维张量的数据结构以及基于其上的多种数学操作.另外,它也提供了多种工具,其中一些可以更有效地对张量和任意类型进行序列化. 它有CUDA 的对应实现,可以在NVIDIA ...

  5. I2C总线协议的软件模拟实现方法

    I2C总线协议的软件模拟实现方法 在上一篇博客中已经讲过I2C总线通信协议,本文讲述I2C总线协议的软件模拟实现方法. 1. 简述 所谓的I2C总线协议的软件模拟实现方法,就是用软件控制GPIO的输入 ...

  6. RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用

    Get Network Connection Status关键字用来获取手机的网络连接状态.在获取到连接状态后,会返回不同的数字. Set Network Connection Status关键字用来 ...

  7. 【NOIP2014】解方程(枚举)

    题面 题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入格式 输入共n + 2 行. 第一行包含2 个整数 ...

  8. CF813E Army Creation

    题意 \(n\)个数\(a[i] ,q\)次询问,\(n,a[i],q<=10^5\)每次问\([l,r]\)内最多可以选多少个数,满足同一个数的出现次数不超过\(k\) 强制在线 Sol 处理 ...

  9. [Luogu3527][POI2011]MET-Meteors

    BZOJ权限题!提供洛谷链接! sol 昨晚突发奇想去学了一下整体二分. 这道题应该算是整体二分的板子题吧. 整体二分 首先要求可离线,不然还是安心码数据结构吧. 整体二分简单的来讲,就是时间复杂度可 ...

  10. 最长k可重线段集问题

    和那道可重区间集一样 不过这道题可能有垂直于x轴的线段,这就很烦了,直接连会有负环,判掉又会WA 可以想办法把r端点和l端点分开,又要保证答案不变 那么直接把区间l,r都乘以2,l=r时r++,否则l ...