下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. 写一个将整数转换成字符串的函数itoa解析:整数转化成字符串,可以采用加'0',然后再逆序,整数加'0'就会隐形转化为char类型的数。#include <iostream>#include <stdio.h>using namespace std;int main(void)int num = 12345, j=0, i=0;char temp7, str7;while(num)tempi = num%10 + '0'i+;num = num/10;tempi = 0;printf("temp = %sn
2、",temp);i=i-1;while(i>=0)strj = tempi;j+;i-;strj=0;printf("string = %sn", str);return 0;2. 编程实现字符串数转化成整数的方法。解析:可以采用减 '0' 再乘10累加的方法,字符串减 '0' 就会隐性转换为int类型的数#include<iostream.h>#include<stdio.h>int main(void)int num=12345, j=0, i=0, sum=0;char temp7='1&
3、#39;, '2', '3', '4', '5', '0', str7;while (tempi)sum=sum*10+(tempi-'0');i+;printf("sum=%dn", sum)return 0;3. 字符串拷贝函数strcpy#include <stdio.h> char * strcpy(char * strDest, const char * strSrc) / 实现strSrc到strDest的复制if (strDest = NULL) | (
4、strSrc = NULL) /判断参数strDest和strSrc的有效性return NULL; char *strDestCopy = strDest; /保存目标字符串的首地址while (*strDest+ = *strSrc+)!='0'); /把strSrc字符串的内容复制到strDest下return strDestCopy;strcpy函数返回char *类型的原因是为了能使用链式表达式。拷贝函数的一个完整的标准写法如下:#include<stdio.h>#include<malloc.h>#include<assert.h>
5、;#include<string.h>void stringcpy(char *strdest, const char *strsrc)assert(strdest!=NULL && strsrc!=NULL);while(*strsrc!='0')*strdest+=*strsrc+;*strdest='0'int main(void)char *f;char *t;f=(char *)malloc(15);t=(char *)malloc(15);stringcpy(f, "asdfghjkl");string
6、cpy(t, f);printf("%sn", f);printf("%sn", t);return 0;4. strcpy和memcpy主要有以下3方面的区别: 1) 复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等; 2) 复制的方法不同。strcpy不需要指定长度,它遇到字符串结束符"0"便结束。memcpy则是根据其第3个参数决定复制的长度。 3) 用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。5. malloc函数 函数原
7、型:void *malloc (unsigned int size) 作用:在内存的动态存储区中分配一个长度为size的连续空间,其参数为一个无符号整型数,返回值是一个指向所分配的连续存储域的起始地址的指针。 注意:若函数未能成功分配存储空间(如内存不足)就会返回一个NULL指针,所以在调用该函数时应检测返回值是否为NULL并执行相应的操作。例如: if (array (int *) malloc(10*sizeof(int)=NULL)printf("不能成功分配存储空间。");exit(1);6. "回文数"是一种数字。如:98789, 这个数字正读
8、是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。思路1:建立数组,按位存储。比较首位和末位是否相同。如不同,则不是回文数。相同则继续比较,首位递增,末位递减,直到首位不再小于末位。思路2:求反转后的数是否与原先相同。7. 有100个整数,其中有负数,找出连续三个数之和最大的部分。#include<iostream.h>void main()int a10=-3, 4, 6, 8, -9, 7, 10, -6, 20, -9;int i, index, sum=a0+a1+a2;for (i=1; i<8; i+)if (sum<ai+ai+1+a
9、i+2)sum=ai+ai+1+ai+2;index=i;cout<<aindex<<","<<aindex+1<<","<<aindex+2<<endl;8. 关于sizeofcout<<sizeof(1=2)<<endl; / = 操作符返回bool类型,相当于 cout<<sizeof(bool)<<endl; 1)union的sizeofunion udouble a;int b;union u2char a13;int b;u
10、nion u3char a13;char b;cout<<sizeof(u)<<endl; / 8cout<<sizeof(u2)<<endl; / 16cout<<sizeof(u3)<<endl; / 13 union的大小取决于它所有的成员中占用空间最大的一个成员的大小。所以对于u来说,大小就是最大的double类型成员a了,所以sizeof(u)=sizeof(double)=8。但是对于u2和u3,最大的空间都是char13类型的数组,为什么u3的大小是13,而u2是16呢?关键在于u2中的成员int b。由于i
11、nt类型成员的存在,使u2的对齐方式变成4,也就是说,u2的大小必须在4的对界上,所以占用的空间变成了16(最接近13的对界)。结论:复合数据类型,如union,struct,class的对齐方式为成员中对齐方式最大的成员的对齐方式。2)struct和对齐struct s1char a;double b;int c;char d;struct s2char a;char b;int c;double d;cout<<sizeof(s1)<<endl; / 24cout<<sizeof(s2)<<endl; / 16 对于s1,首先把a放到8的对界
12、,假定是0,此时下一个空闲的地址是1,但是下一个元素b是double类型,要放到8的对界上,离1最接近的地址是8了,所以b被放在了8,此时下一个空闲地址变成了16,下一个元素c的对界是4,16可以满足,所以c放在了16,此时下一个空闲地址变成了20,下一个元素d需要对界1,也正好落在对界上,所以d放在了20,结构体在地址21处结束。由于s1的大小需要是8的倍数,所以21-23的空间被保留,s1的大小变成了24。对于s2,首先把a放到8的对界,假定是0,此时下一个空闲地址是1,下一个元素的对界也是1,所以b摆放在1,下一个空闲地址变成了2;下一个元素c的对界是4,所以取离2最近的地址4摆放c,下
13、一个空闲地址变成了8,下一个元素d的对界是8,所以d摆放在8,所有元素摆放完毕,结构体在15处结束,占用总空间为16,正好是8的倍数。struct s1 char a8;struct s2 double d;struct s3 s1 s; char a;struct s4 s2 s; char a;cout<<sizeof(s1)<<endl; / 8cout<<sizeof(s2)<<endl; / 8cout<<sizeof(s3)<<endl; / 9cout<<sizeof(s4)<<end
14、l; / 16; s1和s2大小虽然都是8,但是s1的对齐方式是1,s2是8(double),所以在s3和s4中才有这样的差异。 32位C+中的基本数据类型,也就char,short int(short),int,long int(long),float,double, long double大小分别是:1,2,4,4,4,8,10。3)class A1public: int a; static int b;A1();A1();sizeof(A1)=4;静态变量是存放在全局数据区的,而sizeof计算栈中分配的大小。9. sizeof作用1). sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。例如: void *malloc(size_t size) size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。2) . 用它可以看看一类型的对象在内存中所占
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年音乐厅装修设计合同
- 2024年度销售代理合同销售目标和分成比例2篇
- 二零二四年度快递行业广告投放合同2篇
- 白蛾防治合同
- 房地产开发商与智能化系统供应商2024年度合作合同2篇
- 印刷服务合同
- 停车位钢结构安装合同
- 二零二四年度劳动合同范本(含派遣、试用等)
- 二零二四年度股权转让合同标的和交易条件3篇
- 二零二四年度股权转让合同中的股东权益保护3篇
- 2024中国中信金融资产管理股份有限公司北京市分公司招聘笔试核心备考题库及答案解析
- 医药代表培训完整教程
- GB/T 44713-2024节地生态安葬服务指南
- 一年级家长会课件2024-2025学年
- 2024年教资考试时政高频考点141条
- 《扣件式钢管脚手架安全技术规范》JGJ130-2023
- 装修设计需求模版
- 欠薪清零台账
- 烟草专用贮柜
- 大学学生社团管理办法
- 植物蛋白肽生产建设项目可行性研究报告
评论
0/150
提交评论