欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式系统的开发与应用实习任务书.doc

    • 资源ID:70339441       资源大小:73.50KB        全文页数:11页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式系统的开发与应用实习任务书.doc

    嵌入式系统的开发与应用实习任务书一、实习目的:通过一个参数个数不固定函数的设计和调试,练习嵌入式系统C程序的设计方法。二、实习内容编写一个简化的仿scanf函数,名为myscanf函数,实现从键盘中输入十进制整数和小数型实数的功能。该函数格式如下int myscanf(char *formatstr,.)在VC平台上开发。三、实习具体要求1 第一个参数是格式字符串,格式只识别%d和%f这两种格式,分别表示十进制int型数据(32位有符号整数)和小数格式的double型数据。在格式字符串中,如果发现%后有其它字符(非d和非f),认为有错,停止处理,并打印出错信息,返回-1。2 当然输入的整数数据超出范围时,按出错处理,停止处理,并打印出错信息,返回-1。由于小数格式double类型的整数部分最多可以到达三百多位,因此我们不处理超出数据范围的错误。3 在格式的其他字符匹配中,只要有不匹配的字符,按出错处理,停止处理,并打印出错信息,返回-1。4 该函数只处理一行数据,不处理跨行数据。5 当处理正确完成后,返回值就是输入的整数和实数的总个数。6 可以使用C语言本身所带的gets函数。五、实习报告要求1所提交内容包括程序设计书和程序清单两部分2所做程序必须保证程序的健壮性。在完成基本功能的同时,能处理各种错误 处理以及意外事件。3提交的程序设计书应该包含各个过程的功能、参数说明。并用流程图表示该 过程的算法。4所提交的程序必须结构清晰,层次分明。程序应该有比较好的可读性。程 序清单中至少30%是注解。/ test.cpp : Defines the entry point for the console application./#include "stdafx.h"#include <stdio.h> #include <string.h>#include <stdarg.h>#define MAX_LEN 200#define MAX_POSINTSTR "2147483647" /最大整数字符串#define MAX_NEGINTSTR "2147483648" /最小整数绝对值字符串/*判断一个整数字符串是否越界如果越界则返回1-,否则返回0intstr:用于判断的整数字符串*/int defineoverflow(char *intstr)int n1,i,n2;char standstr15;if(intstr0='-')/如果是负数,则用最小整数绝对值进行判断strcpy(standstr, MAX_NEGINTSTR);intstr+; /越过负号else/如果是负数,则用最小整数绝对值进行判断strcpy(standstr, MAX_POSINTSTR);if(intstr0='+')intstr+; /越过正符号n1 = strlen(intstr);n2 = strlen(standstr);/整数字符串位数过长,则定越界,返回-1if(n1 > n2)return -1;/整数字符串位数较短,则肯定不越界,返回0if(n1 < n2)return 0;/如果位数一样,从最高位开始比较for(i = 0; i < n1;i+)if(intstri < standstri)return 0;if(intstri > standstri)return -1;/如果刚好是极限值return 0;/*从整型字符串得到整数值intstr:整形字符串返回值是所得到的整数*/int getintvalue(char *intstr)int sgn; /符号变量,表示该整数的正负int v = 0;char *p = intstr;if(intstr0='-')sgn = -1;p+; elsesgn = 1;if(intstr0='+')p+;while(*p!='0')v = v*10 + (*p - '0');p+;v = v * sgn;return v;/*从实型字符串得到double值doublestr:整形字符串返回值是所得到的实数值*/double getdoublevalue(char *doublestr)int sgn; /符号变量,表示该整数的正负double v = 0;char *p = doublestr;double k = 10; /小数的比例因子if(doublestr0='-')sgn = -1;p+; elsesgn = 1;if(doublestr0='+')p+;while(*p!='0' && *p!='.')v = v*10 + (*p - '0');p+;if(*p='.')p+;while(*p!='0')v += (*p - '0')/k;k = k* 10;p+;v = v * sgn;return v;/*匹配普通字符串,要求输入字符串中指定位置之处存在一个完全匹配的子串ppf :一个二维指针,它所指向的指针值就是格式字符串中的开始匹配的位置,当匹配结束后,它所指向的指针值应该是下一个匹配的起始位置,传回给调用函数ppin:一个二维指针,它所指向的指针值就是输入字符串中的开始匹配的位置,当匹配结束后,它所指向的指针值应该是下一个匹配的起始位置,传回给调用函数成功返回0,否则返回-1。#include "stdafx.h"#include <stdio.h> #include <string.h>#include <stdarg.h>#define MAX_LEN 200#define MAX_POSINTSTR "2147483647" /最大整数字符串#define MAX_NEGINTSTR "2147483648" /最小整数绝对值字符串/*判断一个整数字符串是否越界如果越界则返回1-,否则返回0intstr:用于判断的整数字符串*/int defineoverflow(char *intstr)int n1,i,n2;char standstr15;if(intstr0='-')/如果是负数,则用最小整数绝对值进行判断strcpy(standstr, MAX_NEGINTSTR);intstr+; /越过负号else/如果是负数,则用最小整数绝对值进行判断strcpy(standstr, MAX_POSINTSTR);if(intstr0='+')intstr+; /越过正符号n1 = strlen(intstr);n2 = strlen(standstr);/整数字符串位数过长,则定越界,返回-1if(n1 > n2)return -1;/整数字符串位数较短,则肯定不越界,返回0if(n1 < n2)return 0;/如果位数一样,从最高位开始比较for(i = 0; i < n1;i+)if(intstri < standstri)return 0;if(intstri > standstri)return -1;/如果刚好是极限值return 0;/*从整型字符串得到整数值intstr:整形字符串返回值是所得到的整数*/int getintvalue(char *intstr)int sgn; /符号变量,表示该整数的正负int v = 0;char *p = intstr;if(intstr0='-')sgn = -1;p+; elsesgn = 1;if(intstr0='+')p+;while(*p!='0')v = v*10 + (*p - '0');p+;v = v * sgn;return v;/*从实型字符串得到double值doublestr:整形字符串返回值是所得到的实数值*/double getdoublevalue(char *doublestr)int sgn; /符号变量,表示该整数的正负double v = 0;char *p = doublestr;double k = 10; /小数的比例因子if(doublestr0='-')sgn = -1;p+; elsesgn = 1;if(doublestr0='+')p+;while(*p!='0' && *p!='.')v = v*10 + (*p - '0');p+;if(*p='.')p+;while(*p!='0')v += (*p - '0')/k;k = k* 10;p+;v = v * sgn;return v;/*匹配普通字符串,要求输入字符串中指定位置之处存在一个完全匹配的子串ppf :一个二维指针,它所指向的指针值就是格式字符串中的开始匹配的位置,当匹配结束后,它所指向的指针值应该是下一个匹配的起始位置,传回给调用函数ppin:一个二维指针,它所指向的指针值就是输入字符串中的开始匹配的位置,当匹配结束后,它所指向的指针值应该是下一个匹配的起始位置,传回给调用函数成功返回0,否则返回-1。*/int matchstr(char *ppf, char *ppin)char *pf = *ppf;char *pin = *ppin;while(*pf!='0' && *pf!='%')if(*pf!=*pin)*ppf = pf;*ppin = pin;return -1;pf+;pin+;*ppf = pf;*ppin = pin;return 0;/*匹配整数,要求输入字符串中指定位置之处提取一个整数intstr :存放所提取的整数字符串ppin:一个二维指针,它所指向的指针值就是输入字符串中的开始匹配的位置,当匹配结束后,它所指向的指针值应该是下一个匹配的起始位置,传回给调用函数成功返回0,否则返回-1。*/int matchint(char *intstr, char *ppin)char *pin = *ppin;int i = 0;int j;/略去所有空格while(*pin=' ')pin+;if(*pin='-')intstri+ = *pin+;else if(*pin='+')intstri+ = *pin+;j = i;while(*pin>= '0' && *pin<= '9')intstrj+ = *pin+;if(i = j)/一个整数不能没有任何数字return -1;intstrj = '0'*ppin = pin;return 0;/*匹配实数,要求输入字符串中指定位置之处提取一个实数doublestr :存放所提取的实数字符串ppin:一个二维指针,它所指向的指针值就是输入字符串中的开始匹配的位置,当匹配结束后,它所指向的指针值应该是下一个匹配的起始位置,传回给调用函数成功返回0,否则返回-1。*/int matchdouble(char *doublestr, char *ppin)char *pin = *ppin;int i = 0;int j;/略去所有空格while(*pin=' ')pin+;if(*pin='-')doublestri+ = *pin+;else if(*pin='+')doublestri+ = *pin+;j = i;while(*pin>= '0' && *pin<= '9')doublestrj+ = *pin+;if(*pin = '.')doublestrj+ = '.'pin+;while(*pin>= '0' && *pin<= '9')doublestrj+ = *pin+;if(i = j)return -1;doublestrj = '0'*ppin = pin;return 0;int myscanf(char *formatstr,.)char inputstrMAX_LEN; /存放从键盘输入的字符串char *pin;char *pf;char intstrMAX_LEN;char doublestrMAX_LEN;va_list marker;int *d; /存放整数参数的地址double *r; /存放实数参数的地址/参数列表初始化va_start(marker, formatstr);gets(inputstr);pin = inputstr;pf = formatstr;while(*pf!='0')if(*pf='%')pf+;if(*pf='d')/匹配整数if(matchint(intstr, &pin)=-1)va_end(marker);return -1;if(defineoverflow(intstr)=-1)va_end(marker);return -1;d = va_arg(marker, int* );*d = getintvalue(intstr);pf+;else if(*pf='f')/匹配实数if(matchdouble(doublestr, &pin)=-1)va_end(marker);return -1;r = va_arg(marker, double* );*r = getdoublevalue(doublestr);pf+;elseva_end(marker);return -1;else/匹配普通字符串if(matchstr(&pf, &pin)=-1)va_end(marker);return -1;va_end(marker);return 0;void main()int x;double y,z;if(myscanf("%d#%f#%f",&x, &y, &z)=-1)printf("EERORn");return ;printf("%d %lf %lfn", x,y,z);

    注意事项

    本文(嵌入式系统的开发与应用实习任务书.doc)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开