曾文惠

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、PTA实验作业(4分)

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

1. 本题PTA提交列表

2. 设计思路(伪代码或流程图)

3.代码截图

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

  • (1)部分正确
  • 解决:在第二个if判断条件上将&&与||搞混

  • (2)部分正确

  • 解决:因为我的代码是以回车键结尾的,而且之前代码中也有出现空格,所以我不知道怎么判断哪个空格是结尾的,也有问过助教,助教说我后面的或且关系太混乱了,所以就放弃了这种做法

错误代码:

#include<stdio.h>
int main(){
	char ch[1000];
	int count=0,i=0,g=0;
	while((ch[g]=getchar())!='\n')
	g++;

for(i=0;i<g;i++){
	
	if((ch[i]<'a'||ch[i]>'z')&&(ch[i]<'A'||ch[i]>'Z')&&(ch[i]<'0'||ch[i]>'9')){
		if((i+1)!=g&&((ch[i-1]<='z')&&(ch[i-1]>='a')||(ch[i-1]<='Z')&&(ch[i-1]>='A'))||(i+1)!=g&&((ch[i+1]<='z')&&(ch[i+1]>='a')||(ch[i+1]<='Z')&&(ch[i+1]>='A')))//if((ch[i-1]<='z')&&(ch[i-1]>='a')&&(ch[i+1]<='z')&&(ch[i+1]>='a')||(ch[i-1]<='Z')&&(ch[i+1]>='A')&&(ch[i-1]<='Z')&&(ch[i+1]>='A'))
	    count++;
		}
	}
	
	printf("%d",count);
	return 0; 
} 

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

1. 本题PTA提交列表

2. 设计思路

      定义数组op[80],循环变量i,辅音字母数量count,
for i=0 to i=79     op[i]=输入
     if op[i]不等于‘\n’
     if op[i]不等于元音字母且为字母
               count++;
     else 
               break;
 end  for;
           输出count

3.代码截图

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

  • 错误一:最开始没有对结束语句条件进行设计,导致程序要输入80个数才会输出结果
  • 错误二:没有判断是大写字母,结果为5
  • 错误三:答案为5,进行调试 ,count没有初始化为0

题目 3 :7-3 找最长的字符串

1. 本题PTA提交列表

2. 设计思路(伪代码或流程图)

定义整型变量字符串长度1count1字符串长度2count2,循环变量i,j,字符串数量n
定义字符型变量 a[80],longest[80]
输入n
读入数组longest
count1=此时longes的长度
for i=0 to i=n-1
      读入数组a
      count2=a的长度
      如果 count2大于count1
              count1等于count2
end for

for j=0  to a[j]=‘\0’
      longest[j]等于a[j];

end for
longest[j]=‘\0’
输出 The longest is: 数组longest
     

3.代码截图

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

  • 我把输出结束标志‘\0'赋错了数组位置,应该是longest[j],我赋给了longest[j+1]导致longest[j]没有内容;

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

三、同学代码结对互评(1分)

1.互评同学名称:王宵莹

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

-(1)王宵莹的代码

  • (2)我的代码

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

  • 王宵莹的代码思路是定义两个字符型变量,不断的循环赋值,且赋的值为前后关系,当前面的为空格后面的为字符时判断为一个单词,
  • 我的代码思路是,直接将所有字符赋值到数组中,不过也是通过前一个数组为空格后一个不是的方法判断单词
  • 不同之处:
    感觉这道题的难点在于对第一个词的处理,在这方面,王宵莹是自己给第一个单词前增加了一个空格,我则是对它进行判断,若是有空格,则单词数量变量count初始化0,若没有则初始化为1
  • 优势:
    王宵莹的代码比较简洁,代码行数较少
    我的代码比较清晰,如果第一个单词前面已有了空格了,则王宵莹的代码就会有点多余
  • 我更喜欢王宵莹的,因为和其他的题目搞混了,导致代码中出现了一些没有必要存在的语句,而王同学的代码总是很简洁,既然可以达到相同的结果,为什么不选择更简单的方法呢!

四、本周学习总结(3分)

1.你学会了什么?

1.1指针变量如何定义?

    1. 定义指针变量的一般形式如下:
      类型名指针变量名1,指针变量名2,... *指针变量名n ;
     int *p;        char *q;      char *p,*q;
    1. 空指针

    空指针是一个特殊的指针,它的值是0,C语言中用符号常量NULL(在stdio.h中定义)表示这个空值,并保证这个值不会是任何变量的地址。空指针对任何指针类型赋值都是合法的。一个指针变量具有空指针值表示当前它没有指向任何有意义的东西。

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

  • 指针加法运用在其指向的地址元素时,例如输入数组时
int *p,a[10];
p=a;
for(i=0;i<10;i++,p++)
scanf("%d",p)

  • 指针之间可以相减,可以相乘,可以相除,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素

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

  • 如图

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

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

  • 对指针的概念还不是很熟练。。。,所以不会。

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

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

此时p为指向数组a的指针

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

char *p;
char str[10] = "asdfghj";
p = str;

-初始位置为str[0].

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

-字符串指针只占用一个可以存放地址的内存单元,存储字符串首字符的地址,而不是将字符串放到字符指针变量中去,总之,字符串指针可以指向一个不需要分配内存的地址

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

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

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

(1)对于指针的概念还是懵懵懂懂

  • 解决:多刷题目,多读题目,积累阅读量,看多了,做多了,自然就会了。

3.数组上机考试小结

3.1 那题错了,请罗列?

  • 虽然很丢人,但确实是全都错了

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

  • 刚开始的时候就在一题纠结了一小时,导致后来情绪紧张,会的题目也不会了,也还是平时积累不够,做题不多

  • 6-1

  • 之前一直不明白前面的1,2要怎么跑到后面去,后来跟踪变量看到1是从第一个到最后一个,然后2从第二个变成第一然后重复1的步骤到了最后一个,这时候的1变成了倒数第二个

  • 6-2

  • 我将转置和排序分开,发现转置时就出现了错误

  • (1)转置

  • 我之前的思路是在33上建立的,就是最开始是a[0][1]和a[1][0],a[0][2]和a[2][0]转换,共两次,即(行-1)次,然后是沿着a[0][0]对角线下来,内部的22数组,转换的是a[1][2]和a[2][1]转换,共一次,比上次少了1.

  • 问题:循环次数一直搞错,导致转置得不完整

  • 于是我上网查转置的方法
  • 相对于我的三重循环,网上的方法比较简单
    如下:
void  trans_array(int a[][10],int n){
int k,g,temp; 
	for(g=0;g<n;g++){
	    for(k=0;k<g;k++){
	    	temp=a[g][k];
	    	a[g][k]=a[k][g]; 
			a[k][g]=temp; 
		}
}
   return a;	
  • 问题:对于换了之后本来数组位置的数是否变化,还不是很清楚,

  • 解决:所以观察变量发现转置的时候对角线上的数是不会变的,即k<g

  • (2)排序

  • 问题:反了且错误

  • 解决:if判断条件错误 ,应该是 a[j][l]>a[j][l+1]时,继续

  • 正确

  • 其他的由于还要做数据数组pta,所以还未解决,计划期限为这周五之前。

posted on 2017-12-10 22:39  曾文惠  阅读(554)  评论(3编辑  收藏  举报