C语言博客作业--字符数组

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

1. 本题PTA提交列表

2. 设计思路

定义变量a[1000]储存文本出现的单词
变量i用于循环,变量m表示字符串长度,变量k表示单词个数;
if a[0] !=  空格 则k=0;反之 k=1;
for i=0 to i<m-1
  if a[i]==空格并且a[i+1] != 空格 则k++
输出k

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

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

(PTA提交列表中的每个错误详细说明为什么及如何解决。)
写这道题的时候,想过用a[i]!=空格并且a[i+1] == 空格,但是最后一个字符并不是空格,总会造成输出个数少一i个

解决方法:先通过一个条件判断a[0]是否等于空格来给k初赋值,这样既可以考虑到只有一个单词的情况,也可以使结果正确。

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

1. 本题PTA提交列表

2. 设计思路

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

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

(PTA提交列表中的每个错误详细说明为什么及如何解决。)
这道题没有遇见问题

题目:7-1 字符串转换成十进制整数

1. 本题PTA提交列表

2. 设计思路

	int i=0,k=0; 循环变量
	char hexad[80],str[80]; 数组str用于储存输入的字符串,数组hexad为数组str滤去非十六进制后生成新字符串
	long number=0,flag=1;
	输入字符串str[i],将'\0'存入数组,遇见#停止
	for i=0 如果str[i]!='\0' 则i++)
	如果 str[i]=='-'并且k==0    则flag=-1;   //存在'-'情况 
	如果 str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='f'||str[i]>='A'&&str[i]<='F'  滤去非十六进制后生成新字符串hexad
		hexad[k]=str[i];
		k++;
		hexad[k]='\0';
	for i=0 如果hexad[i]!='\0' 则i++  转化成十进制 
		如果 hexad[i]>='0'&&hexad[i]<='9'  
			计算number=number*16+hexad[i]-'0';
		如果hexad[i]>='a'&&hexad[i]<='f'
			计算number=number*16+hexad[i]-'a'+10;
	        如果hexad[i]>='A'&&hexad[i]<='F'
			计算number=number*16+hexad[i]-'A'+10;	
		输出number*flag

3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)

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

(PTA提交列表中的每个错误详细说明为什么及如何解决。)
没有考虑‘-’存在的情况,造成代码部分正确
解决方法:定义一个flag表示符号,考虑负号存在的情况,利用flag转换符号

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

PTA排名

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

1.互评同学名称 管正

2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)

管正的代码

我的代码

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

(注意:第3项是评分重点,一定要有针对性说出问题,别都说好话,请专业去说他代码有哪些优势、哪些劣势。)
我们两个在字符串的输入和滤去非十六进制后生成新字符串hexad的代码基本一致,但是在考虑‘-’存在的情况下有巨大的差异。管正是在计算number处的地方,通过判断a[i]'-',a[i+1]为16进制字符后,把‘-’赋值给op,并且利用变量time来保证‘-’为开头出现,而不存在中间出现的情况。而我则是利用滤去非十六进制的过程中,通过判断 str[i]'-'并且k0,对符号进行定义。这也是为什么我的代码步骤少,而他的步骤却比较繁多。虽然他的很多步骤必不可少,但是却很多余。为什么说必不可少,因为如果把他三种情况下的计算中的time++去掉,或者把他对于数组a的判断中的time1去掉都会造成结果错误。说他的代码多余是因为他本来可以不用这么多变量定义一个符号,而且他最后的结果输出还要通过判断x=1,再分别输出。所以我更喜欢我的代码。针对我们的代码出现的问题,我也意识到相同的pta问题,即使前面的代码步骤一致,但只要有一步不一样,代码也会大不相同。而且代码的难易程度有时候往往是一步之差。

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

1.你学会了什么?
1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?
变量的类型 *变量名
int *p;
char *p;
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
指针指向数组时,递增表示指针下移;不能相加。
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
出现随机数字

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


指针变量做函数形参 void spllitfloat(float x,int* intpart,float* fracpart)
函数实参spllitfloat(x,ip,fp);
可以在函数中改变主函数中变量的值
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++,p++)
    if(*p>*(p+1))
    {
        t=*p;
        *p=*(p+1);
        *(p+1)=t;
    }
}

1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
将数组名赋给指针变量名
int *p;
int a[5];
p=a;
1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
char *p,str[11]={yjsyjsyjsnb};
p=str;
初始位置为str[0]
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?

更灵活,更简短。
2.本周你不会内容有什么?
2.1 课堂派错题罗列及如何订正。

这道题错的很不应该,应该说这道题和指针没多大关系,考的是运算符号的优先级,我应该先判断p1==&m是否成立,成立为1,不成立为0;

地址常量不能变化

A的值为10,c的值超过9,D的值不能相加,所以是B;

字符型变量不能赋值

2.2 其他不会的?打算怎么解决
看书,百度,问同学
3.数组上机考试小结
3.1 那题错了,请罗列?
函数第二题,数组所有题
3.2 错题如何订正,为什么错了?
ip地址

#include<stdio.h>
int main(){
  char ch[33];
  int i=0,sum=0,count=0,time=0;
  scanf("%c",&ch[i]);
  while(ch[i]!='\n'){
    i++;
    scanf("%c",&ch[i]);
  }
  for(i=0;i<32;i++){
    sum=sum*2+ch[i]-'0';
    count++;
    if(count%8==0){
      time++;
      if(time==1) {
      	printf("%d",sum);
	  }
	  else{
	  	printf(".%d",sum);
	  } 
      sum=0; 
    }
  }
  return 0;
}

其他题都没思路

posted @ 2017-12-10 21:15  l杨发热  阅读(261)  评论(2编辑  收藏  举报