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

一、PTA实验作业

7-3 找最长的字符串

1. 本题PTA提交列表

2. 设计思路

3.代码截图

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

一是没有吸收回车,而是flag1 没有为下一次循环赋初值0,导致每一次输出都是最后一个字符串

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

1. 本题PTA提交列表

2. 设计思路

  • 1.定义1000长度的数组,flag记单词个数,m,i用于循环
  • 2.gets(a)
  • 3.使用for循环,for(i=0;a[i]!='\0';i++){
    while(m==0){
    if(a[m]!=' ')
    flag++;
    m++;//
    }
  • 4.遇到空格且下一个字符不为空格时flag加一
  • 5.输出

3.代码截图

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

一开始当开头为空格时但只有一个单词,会输出2,因为我的代码从一开始就加了1,后来改了重写,添加一个m,当开头不为空格时才能加1,输出正确,没有截图

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

1. 本题PTA提交列表

2. 设计思路

  • 1.定义i,j用于循环,flag用于统计,number用于计算最后输出的十进制数,字符型数组a[],b[]
  • 2.gets(a)
  • 3.使用for循环统计十六进制字符数
  • 4.如果a[i]'-'&&flag10,那么flag2++;flag1++;
  • 5.开始统计字符数 if(a[i]>='a'&&a[i]<='f'){
    b[j]=a[i];flag1++;j++;
    }
    else if(a[i]>='A'&&a[i]<='F'){
    b[j]=a[i];flag1++;j++;
    }
    else if(a[i]>='0'&&a[i]<='9'){
    b[j]=a[i];flag1++;j++;
    }
    if(a[i]=='\0')break;
  • 6.此时数组b是十六进制数,使用for循环将其转成十进制
  • 7.for(j=0;b[j]!='\0';j++)
    {
    if (b[j]>='0'&&b[j]<='9')
    number=number16+b[j]-'0';
    else if(b[j]>='A'&&b[j]<='F')
    number=number
    16+b[j]-'A'+10;
    else if(b[j]>='a'&&b[j]<='f')
    number=number*16+b[j]-'a'+10;
    }
  • 8.输出 if(flag20)printf("%d",number);
    if(flag2
    1&&j!=0)printf("-%d",number);
    if(flag21&&j0)printf("0");

3.代码截图

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

一开始把不知道如何将十六进制字符转成十进制整形数输出,上网搜了才有如上截图,然后在判断负号打的环节只有一个flag,这样无法控制输出何时输负号,调试后都改正了。

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

三、同学代码结对互评

1.互评同学名称

林晓露

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

晓露的代码

我的代码

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

  • 显而易见,晓露的代码比我短很多,首先,我的代码是非常僵硬的代码,算出每一个sum值再一起输出,这样的代码在这道题可以写,但不实用。
  • 晓露的代码用一个if((i+1)%8==0),代替了相对我代码中的四个for循环,她的代码量我少很多,变量也定义的很少,故而我非常喜欢她的代码。

四、本周学习总结

1.你学会了什么?

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

类型名 *指针变量名

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

指针的加法只能是指针加整型数据,两个指针不能相加

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

我还以为会是停止工作,不知道为什么是这样。

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

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

void bubble ( int *p ,int n )
{
    int i,j,temp;
    for(i=1;i<n;i++)
       for(j=0;j<n-i;j++)
           if(*p>*(p+1))
            { temp=*p;*p=*(p+1);*(p+1)=t; }
}

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

指针变量指向数组
int a[100],*p;
p=a(p=&a[0]);
指针变量指向数组元素,比如求和
p=a;
sum=0;
for(i=0;i<100;++i)sum+=p[i];

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

char *p="abc",指针指向字符串后,初始位置是字符的首地址

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

char a[5],b[5];
gets(a);
gets(b);
printf("%s%s",a,b);
return 0;

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

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

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

3.数组上机考试小结

3.1 那题错了,请罗列?

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

posted @ 2017-12-10 21:58  一叶落而秋将至  阅读(299)  评论(11编辑  收藏  举报