欢迎来到天天文库
浏览记录
ID:18537687
大小:73.50 KB
页数:11页
时间:2018-09-18
《嵌入式系统的开发与应用实习任务书new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式系统的开发与应用实习任务书一、实习目的:通过一个参数个数不固定函数的设计和调试,练习嵌入式系统C程序的设计方法。二、实习内容编写一个简化的仿scanf函数,名为myscanf函数,实现从键盘中输入十进制整数和小数型实数的功能。该函数格式如下intmyscanf(char*formatstr,...)在VC平台上开发。三、实习具体要求1.第一个参数是格式字符串,格式只识别%d和%f这两种格式,分别表示十进制int型数据(32位有符号整数)和小数格式的double型数据。在格式字符串中,如果发现%后有
2、其它字符(非d和非f),认为有错,停止处理,并打印出错信息,返回-1。2.当然输入的整数数据超出范围时,按出错处理,停止处理,并打印出错信息,返回-1。由于小数格式double类型的整数部分最多可以到达三百多位,因此我们不处理超出数据范围的错误。3.在格式的其他字符匹配中,只要有不匹配的字符,按出错处理,停止处理,并打印出错信息,返回-1。4.该函数只处理一行数据,不处理跨行数据。5.当处理正确完成后,返回值就是输入的整数和实数的总个数。6.可以使用C语言本身所带的gets函数。五、实习报告要求1.所提
3、交内容包括程序设计书和程序清单两部分2.所做程序必须保证程序的健壮性。在完成基本功能的同时,能处理各种错误处理以及意外事件。3.提交的程序设计书应该包含各个过程的功能、参数说明。并用流程图表示该过程的算法。4.所提交的程序必须结构清晰,层次分明。程序应该有比较好的可读性。程序清单中至少30%是注解。//test.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include#include4、ring.h>#include#defineMAX_LEN200#defineMAX_POSINTSTR"2147483647"//最大整数字符串#defineMAX_NEGINTSTR"2147483648"//最小整数绝对值字符串/*判断一个整数字符串是否越界如果越界则返回1-,否则返回0intstr:用于判断的整数字符串*/intdefineoverflow(char*intstr){intn1,i,n2;charstandstr[15];if(intstr[0]=='-'){5、//如果是负数,则用最小整数绝对值进行判断strcpy(standstr,MAX_NEGINTSTR);intstr++;//越过负号}else{//如果是负数,则用最小整数绝对值进行判断strcpy(standstr,MAX_POSINTSTR);if(intstr[0]=='+')intstr++;//越过正符号}n1=strlen(intstr);n2=strlen(standstr);//整数字符串位数过长,则定越界,返回-1if(n1>n2)return-1;//整数字符串位数较短,则肯定不越6、界,返回0if(n1standstr[i])return-1;}//如果刚好是极限值return0;}/*从整型字符串得到整数值intstr:整形字符串返回值是所得到的整数*/intgetintvalue(char*intstr){intsgn;//符号变量,表示该整数的正负intv=0;char*p=intstr;if7、(intstr[0]=='-'){sgn=-1;p++;}else{sgn=1;if(intstr[0]=='+')p++;}while(*p!=' '){v=v*10+(*p-'0');p++;}v=v*sgn;returnv;}/*从实型字符串得到double值doublestr:整形字符串返回值是所得到的实数值*/doublegetdoublevalue(char*doublestr){intsgn;//符号变量,表示该整数的正负doublev=0;char*p=doublestr;double8、k=10;//小数的比例因子if(doublestr[0]=='-'){sgn=-1;p++;}else{sgn=1;if(doublestr[0]=='+')p++;}while(*p!=' '&&*p!='.'){v=v*10+(*p-'0');p++;}if(*p=='.'){p++;while(*p!='0'){v+=(*p-'0')/k;k=k*10;p++;}}v=v*sgn;returnv;}/*匹配普通字符串,要求输入字符
4、ring.h>#include#defineMAX_LEN200#defineMAX_POSINTSTR"2147483647"//最大整数字符串#defineMAX_NEGINTSTR"2147483648"//最小整数绝对值字符串/*判断一个整数字符串是否越界如果越界则返回1-,否则返回0intstr:用于判断的整数字符串*/intdefineoverflow(char*intstr){intn1,i,n2;charstandstr[15];if(intstr[0]=='-'){
5、//如果是负数,则用最小整数绝对值进行判断strcpy(standstr,MAX_NEGINTSTR);intstr++;//越过负号}else{//如果是负数,则用最小整数绝对值进行判断strcpy(standstr,MAX_POSINTSTR);if(intstr[0]=='+')intstr++;//越过正符号}n1=strlen(intstr);n2=strlen(standstr);//整数字符串位数过长,则定越界,返回-1if(n1>n2)return-1;//整数字符串位数较短,则肯定不越
6、界,返回0if(n1standstr[i])return-1;}//如果刚好是极限值return0;}/*从整型字符串得到整数值intstr:整形字符串返回值是所得到的整数*/intgetintvalue(char*intstr){intsgn;//符号变量,表示该整数的正负intv=0;char*p=intstr;if
7、(intstr[0]=='-'){sgn=-1;p++;}else{sgn=1;if(intstr[0]=='+')p++;}while(*p!=' '){v=v*10+(*p-'0');p++;}v=v*sgn;returnv;}/*从实型字符串得到double值doublestr:整形字符串返回值是所得到的实数值*/doublegetdoublevalue(char*doublestr){intsgn;//符号变量,表示该整数的正负doublev=0;char*p=doublestr;double
8、k=10;//小数的比例因子if(doublestr[0]=='-'){sgn=-1;p++;}else{sgn=1;if(doublestr[0]=='+')p++;}while(*p!=' '&&*p!='.'){v=v*10+(*p-'0');p++;}if(*p=='.'){p++;while(*p!='0'){v+=(*p-'0')/k;k=k*10;p++;}}v=v*sgn;returnv;}/*匹配普通字符串,要求输入字符
此文档下载收益归作者所有