- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【荐】c指针练习题【荐】.doc
C指针练习题
使用的编译软件是visual c++ 6.0软件。练习的结果还没仔细检测,对程序的质量还待考虑。对指针的程序还没很好理解,先了解指针的含义及格式。
及理解指针的灵活之处,多上机做题培养指针的思维方式。
在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)。指针一般出现在比较近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免用指针。指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的变量或函数的值。*和两个地方要注意:? ? 在程序声明变量的时候的*,只是表明“它是一个整数,这个整数指向某个内存地址,一次访问sizeof(type)长度”。这点不要和(*)操作符混淆;? ? 在C++程序声明变量的时候的,只是表明“它是一个引用,这个引用声明时不开辟新空间,它在内存分配表加入新的一行,该行内存地址等于和调用时传入的对应参数内存地址”。? ? 这点不要和(*)声明符,()操作符混淆。双重指针(指向指针的指针)? ? 指针数组:就是一个整数数组,那个数组的各个元素都是整数,指向某个内存地址。? ? 数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是一个常数。? ? 指向函数的指针:从二进制角度考虑,数组名是该数组数据段首地址,函数名就是该代码段的首地址,可以用“int *fun()”。在二进制层面,代码段和数据段什么区别?没什么区别。#includestdio.h
int number(int a,int b,int c)
{
int t;
if(ab)
{
t=a;a=b;b=t;
}
if(ac)
{
t=a;a=c;c=t;
}
if(bc)
{
t=b;b=c,c=t;
}
return printf(%d %d %d,a,b,c);
}
void main()
{
int a,b,c,t;
printf(input 3 numbers:);
scanf(%d %d %d,a,b,c);
number(a,b,c);
}
题2. 输入三个字符串,按由小到大的顺序输出 (要求使用函数,使用指针)
题3. 输入10个整数,将其中最小的数和第一个数对换,把最大的数与最后一个数对换。(要求使用函数,使用指针)
编写三个程序,1、输入十个数,2.进行处理,3输出十个数
#include stdio.h
main()
{
void input(int *a);
void sort(int *a);
void output(int *a);
int array[10];
printf(input 10 int\n);
input(array);
sort(array);
output(array);
return 0;
}
void input(int *a)
{
int i;
for(i=0;i10;i++) scanf(%d,a[i]);
}
void sort(int *a)
{
int i,max,min,t1=0,t2=0,v;
max=a[0];
min=a[0];
for(i=1;i10;i++)
{
if (a[i] min) { min = a[i]; t1= i;};
if (a[i] max) { max = a[i]; t2= i;};
}
if ( (t1==0) (t2 == 9)) {}
else if ( (t1==9) (t2 ==0)) { a[0]=min; a[9]=max;
} else if (t2==0) { a[0]=min; a[t1]=a[9]; a[9]=max;
} else if (t1==9) { a[9]=max; a[t2]=a[0]; a[0]=min;
} else
{
a[t1]=a[0]; a[t2]=a[9]; a[0]=min;a[9]=max;
};
}
void output(int *a)
{
int i;
for(i=0;i10;i++) printf(%d , a[i]);
printf(\n);
}
题4 有n个整数,使其前面各数顺序向后移m个位置,最后M个数变成最前面m个数 (要求使用函数,使用指针)
#include stdio.h
void reverse(int *p, int s, int t)
{
int *ps = p + s;
int *pt = p + t;
int tmp;
for(;ps pt; ++ps, --pt)
{
文档评论(0)