字符数组

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

1. 本题PTA提交列表:

1232310-20171210191631536-1724455854.jpg

2. 设计思路:

  • 1.count判断十六进制字符前是否有负号,i和k是循环控制变量;
  • 2.flag判断负号是否在十六进制字符前flag=0,sum=0,y,sum用于累加16转10进制数;
  • 3.a存储输入字符,b存储过滤后的16进制字符 char a[80],b[80];
  • 4.while((a[i]=getchar())!='#')输入字符 i++;
  • 5.a[i]='\0';//令结束符为空操作;
    1. for(i=0;a[i]!='\0';i++)if(flag==0&&a[i]=='-')判断负号是否在十六进制字符前count++;//是的话count++;
  • 7.if(a[i]>='0'&&a[i]<='9'||a[i]>='A'&&a[i]<='F'||a[i]>='a'&&a[i]<='f')当满足此条件时,b[k]=a[i];k++;flag=1;b存储a[i],flag=1说明此时后若出现负号,无效
  • 8.y=k-1;//为下面十六转十进制做准备
  • 9.b[k]='\0';//令b最后一个值为空操作
  • 10.for(i=0;b[i]!='\0';i++)
  • 11.如果b为大写字母b[i]=b[i]-55; sum=sum+pow(16,y)*b[i];
  • 12.如果b为小写字母b[i]=b[i]-87;sum=sum+pow(16,y)*b[i];
  • 13.如果b为数字字符 sum=sum+pow(16,y)*(b[i]-'0');
  • 14.y--;为下一次循环做准备
  • 15.if(count!=0&&flag==1)说明a前有负号输出负号
  • 16.printf("%d",sum);输出十进制数

    3.代码截图:

    1232310-20171210194518271-2095458934.jpg

1232310-20171210194528630-1762255306.jpg

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

  • 1.把y=k-1写成y=i-2,将y与k和i的关系混淆
    1232310-20171210194657146-864918723.jpg
  • 2.把y=k-1;b[k]='\0';放到for(i=0;a[i]!='\0';i++)循环里,将其移出即可;
    1232310-20171210195032146-799542128.jpg
  • 3.将flag==0写成flag=0;
    1232310-20171210195433490-1680994855.jpg

  • 4.把if(b[i]>='A'&&b[i]<='F')b[i]=b[i]-55;写成if(b[i]>='A'&&b[i]<='F')b[i]=b[i]-7,原因是把字符‘10’当成整数10来计算;
    1232310-20171210195840318-673487861.jpg

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

    1. 本题PTA提交列表:

    1232310-20171210200428583-1674111581.jpg

    2. 设计思路:

  • 1.i=0,count=0,flag;count统计单词个数,i是循环控制变量;
    1. line[1500];储存输入字符
  • 3.while((line[i]=getchar())!='\n')输入字符 i++;改变下标
  • 4.line[i]='\0';让结束符变为空操作
  • 5.重置i,为下一次循环做准备
  • 6.while(line[i]!='\0')当遇到'\0'退出循环 ;
  • 7.重置flag=0,使之可以不停判断是否进入以下循环
    1. while(line[i]!=' ')当遇到空格符结束循环flag=1;表示有进入此循环,而不是连续空格i++; 如果(line[i]=='\0')break;
    1. if(line[i]!='\0') i=i+1;进入空格后的下一个字符
  • 10.当不是连续空格时,即flag==1,count加1
  • 11.输出("%d",count);

3.代码截图:

1232310-20171210200300130-314895493.jpg

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

  • 1.没有令i=0
    1232310-20171210201502146-1808872800.jpg

  • 2.i=i+1;表示进入空格后的下一个字符 中,没有加执行条件if(line[i]!='\0'),导致无法结束循环
    1232310-20171210201851036-987177778.jpg

  • 3.定义line[80]太小,因为题目没有给出具体范围,所以定义为稍大一点的line[1500];这样PTA才让过;
    1232310-20171210202253380-786280360.jpg

7-4 查验身份证:

1. 本题PTA提交列表:

1232310-20171210204144302-1232854908.jpg

2. 设计思路:

1232310-20171211224703009-687063667.jpg
1232310-20171211224725712-470226326.jpg

3.代码截图:

1232310-20171210204347896-845088185.jpg
1232310-20171210204402849-1852678556.jpg

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

  • 1.没有将line4中的元素变成字符
    1232310-20171211224935493-409146138.jpg
  • 2.line2中少写一个‘\0’;
    1232310-20171211225139790-1040608525.jpg
  • 3.忘加等号;
    1232310-20171211225302243-2020118575.jpg
  • 4.因为i值的改变会影响最后的大循环的i值,所以应用k来替代;
    1232310-20171211225518665-357749386.jpg
  • 5.没有加换行符,影响输出;
    1232310-20171211225636212-306847800.jpg
  • 6.少加一个条件flag==1&&integer==0;
    1232310-20171211225801696-73407211.jpg
  • 7.将i改成k后,没有将i改成k;
    1232310-20171211225930712-1594145253.jpg

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

1.你学会了什么?

  • 1.指针变量如何定义(设计代码可以用markdown代码符号渲染)?
    整型变量:int p,a[8];p=a;
    字符型变量:char
    p,a[8];p=a;
    调用函数函数:
    实参str(a,&n);
    形参str(int p,int n )

2 指针加法运算运用在哪种情况,2个指针变量能否相加?
p++;(p)++;++*p;
两个指针不能相加;
3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
1232310-20171214123342795-1263557977.jpg
1232310-20171214123406701-1782968312.jpg

4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?
1232310-20171214132218123-480548455.jpg
函数形参:intpart,y,fracpart;
函数实参:x,&intpart,&fracpart;
可以一次返回多个值;

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

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

6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
int xp,x[8];xp=x;其中*xp指向数组x;

7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
与指向数组相同,初始位置在数组首地址所在位置;
8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
1232310-20171214145711076-175801964.png
不用另外再设置一个新数组;

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

1 课堂派错题罗列及如何订正。
不会的还待解决;

3.数组上机考试小结

1 那题错了,请罗列?

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

转载于:https://www.cnblogs.com/guoruiqian/p/8017854.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值