c语言指针编程练习题.docx
- 文档编号:24948891
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:14
- 大小:17.76KB
c语言指针编程练习题.docx
《c语言指针编程练习题.docx》由会员分享,可在线阅读,更多相关《c语言指针编程练习题.docx(14页珍藏版)》请在冰豆网上搜索。
c语言指针编程练习题
c语言指针编程练习题
2.从命令行输入两个实型数据,请比较大小并输出。
参考答案
3.输入3个数a,b,c,按大小顺序输出。
利用指针方法参考答案
4.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
参考答案
5.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数参考答案
6.有n个人围成一圈,顺序排号。
从第一个人开始报数,凡报到3的人
退出圈子,问最后留下的是原来第几号的那位。
参考答案
7.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
参考答案
8.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调
用函数1/1+1/3+…+1/n参考答案
9.八进制转换为十进制参考答案
10.编一个函数fun,函数的功能是分别求出数组中所有奇数之
和以及所有偶数之和。
形参n给了数组中数据的个数:
利用指针odd返回奇数之和,利用指针even返回偶数之和。
例如:
数组中的值依次为:
1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。
参考答案
11.复制字符串。
参考答案
一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include
voidswap
{
inttemp;
temp=*pa;
*pa=*pb;
*pb=temp;
}
voidmain
{
inta,b,c,temp;
scanf;
if
swap;
if
swap;
if
swap;
printf;
}
二、C语言用指针方法输入3个字符串按由小到大顺序输出
#include“stdio.h”
#include“string.h”
intmain
{
char*t;
char*p1=NULL,*p2=NULL,*p3=NULL;
charch1[20]={0},ch2[20]={0},ch3[20]={0};
p1=ch1;
p2=ch2;
p3=ch3;
printf;
scanf;
fflush;
printf;
scanf;
fflush;
printf;
scanf;
}
fflush;if>0){t=p1;p1=p2;p2=t;}if>0){t=p1;p1=p3;p3=t;}if>0){t=p2;p2=p3;p3=t;}printf;return0;
9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数
#include
voidmain
{
inta=0,b=0,c=0,d=0,e=0,i=0;
char*p,s[20];
while)!
=‘\n’)i++;
p=s;
while
{
if
a++;
elseif
b++;
elseif
c++;
elseif
d++;
elsee++;
p++;
}
printf;
printf;
}
9.5写一个函数,将3矩阵转置
#include“stdio.h”
voidTranspose[3])
{
inttemp;
inti,j;
for/*转置*/
{
for
{
temp=*+i);
*+i)=*+j);
*+j)=temp;
}
}
}
voidmain
{
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};
Transpose;
for
{
for
{
printf;
}
printf;
}
}
}.6用指向一维数组的指针做函数参数
#include
#include
intmain
{
voidsort[6]);//一维数组的指针做函数参数
inti;
charstr[10][6];char[6];//定义一维数组的指针做函数参数
printf;
for
scanf;
p=str;//将str一维数组指针,赋值给p;
sort;
printf;
for
printf;
return0;
}
voidsort[6])//s指向一维数组的指针做函数参数;
{
inti,j;
chartemp[6],*t;
t=temp;
for//i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,for//第一次比较需要9次就是i=0到i=8共九次;第二次需要比较8次;依次类推;
if>0)
{
strcpy;
strcpy;
strcpy;
}
}
9.7编一程序,用指针数组在主函数中输入十个等长的字符串。
用另一函数对它们排序,然后在主函数中输出10个已排好序的字符串
//用指针数组处理
#include
#include
intmain
{
voidsort;
inti;
charstr[10][6],*p[10];
printf;
for//首先将10个str的首地址赋值给10个p[i];
p[i]=str[i];//将第i个字符串的首地址赋予指针数组p的第i个元素;
for
scanf;//scanf输入到&p[i]
sort;
printf;
for
printf;//输出到p[i];
}
voidsort
{
char*temp;
inti,j;
for
for
if,*)>0)
{
temp=*;//*指向数组指针,我想应该是字符串的首地址;所以可以直接赋值给temp指针;
*=*;
*=temp;
}
}
9.8指针将n个数按输入时顺序的逆序排列,用函数实现
#include
一、选择题
1.变量的指针,其含义是指该变量的_________.
a)值b)地址
c)名d)一个标志
2.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是_____.a)a,point,*&ab)&*a,&a,*point
c)*&point,*point,&ad)&a,&*point,point
3.若有说明;int*p,m=5,n;以下正确的程序段的是________.
a)p=&n;b)p=&n;
scanf;scanf;
c)scanf;d)p=&n;
*p=n;*p=m;
4.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________.
main
{
int*p,*q,a,b;
p=&a;
printf;
scanf;
……
}
a)*p表示的是指针变量p的地址
b)*p表示的是变量a的值,而不是变量a的地址
c)*p表示的是指针变量p的值
d)*p只能用来说明p是一个指针变量
5.已有变量定义和函数调用语句:
inta=25;print_value;下面函数的正确输出结果是________.
voidprint_value
{printf;}
a)23b)c)d)26
6.若有说明:
long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是
A)*p=&a;scanf;
B)p=malloc;scanf;
C)scanf;
D)scanf;
7.有以下程序
#include
main
{intm=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf;
}
程序运行后的输出结果是
A)1,2,1,2
C)2,1,2,1
8.有以下程序
main{inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*;printf;}
执行后的输出结果是
A)1
9.有以下程序
main
{inta,k=4,m=4,*p1=&k,*p2=&m;
a=p1==&m;
printf;
}
程序运行后的输出结果是
A)4
10.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是
A)p向高地址移了一个字节
C)p向高地址移了两个字节
B)p向高地址移了一个存储单元D)p与a+1等价B)1C)0D)运行时出错,无定值B)2C)3D)B)1,2,2,1D)2,1,1,2
11.有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是
A)5B)C)D)9
12.若有以下定义,则对a数组元素的正确引用是_________.
inta[5],*p=a;
a)*&a[5]b)a+c)*d)*
13.若有以下定义,则p+5表示_______.
inta[10],*p=a;
a)元素a[5]的地址b)元素a[5]的值
c)元素a[6]的地址d)元素a[6]的值
14.设已有定义:
inta[10]={15,12,7,31,47,20,16,28,13,19},*p;下列语句中正确的是
A)for;a++);
B)for;p++);
C)for;
D)for;
15.有以下程序段
#include
intmain
{intx[]={10,0,0};
int*px=x;
printf;printf;
px=x;
printf++);printf;
px=x;
printf;printf;
px=x;
printf;printf;
return0;
}
程序运行后的输出结果是
A)11,11,11,12,12,20,20,20
B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20D)20,10,11,20,11,12,20,20
16.设有如下定义:
intarr[]={6,7,8,9,10};
int*ptr;
ptr=arr;
*+=2;
printf);
则程序段的输出结果为
A)8,10B)6,8C)7,D)6,10
17.若有定义:
inta[]={2,4,6,8,10,12},*p=a;则*的值是______.*的值是_________.
18.若有以下说明和语句,intc[4][5],[5];p=c;能正确引用c数组元素的是______.
A)p+1B)*C)*+3D)*)
19.若有定义:
inta[2][3],则对a数组的第i行j列元素地址的正确引用为______.a)*b)c)*d)a[i]+j
20.若有以下定义:
inta[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____.*+0)的值是________.
21.有以下定义
chara[10],*b=a;
不能给数组a输入字符串的语句是
A)getsB)getsC)gets;D)gets;
22.下面程序段的运行结果是_________.
char*s=“abcde”;
s+=2;printf;
a)cdeb)字符’c’c)字符’c’的地址d)无确定的输出结果
23.以下程序段中,不能正确赋字符串的是
A)chars[10]=“abcdefg”;B)chart[]=“abcdefg”,*s=t;
C)chars[10];s=“abcdefg”;D)chars[10];strcpy;
24.设已有定义:
char*st=“howareyou”;下列程序段中正确的是
A)chara[11],*p;strcpy;
B)chara[11];strcpy;
C)chara[11];strcpy;
D)chara[],*p;strcpy;
25.有以下程序
main
{
chara[]=“programming”,b[]=“language”;
char*p1,*p2;
inti;
p1=a;p2=b;
for
if==*)
printf);
}
输出结果是
A)gmB)rgC)orD)ga
26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是________.
a)c=*p1+*p2;b)p2=cc)p1=p2d)c=*p1*;
27.以下正确的程序段是_________.
a)charstr[20];b)char*p;
scanf;scanf;
c)charstr[20];d)charstr[20],*p=str;
scanf;scanf;
28.若有说明语句
chara[]=“Itismine”;
char*p=“Itismine”;
则以下不正确的叙述是________.
a)a+1表示的是字符t的地址
b)p指向另外的字符串时,字符串的长度不受限制
c)p变量中存放的地址值可以改变
d)a中只能存放10个字符
29.下面程序的运行结果是_______.
#include
#include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 指针 编程 练习题