C语言程序设计指针作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计指针作业
一、选择题
【习题1】变量的指针,其含义是指该变量的________
A)值B)地址
C)名D)一个标志
【习题2】若有语句int *point,a; 则point=&a;中运算符&的含义是_____
A)位与运算B)逻辑与运算
C)取指针内容D)取地址
【习题3】若x是整型变量,pb是整型的指针变量,则正确的赋值表达式是
A) pb=&x B) pb=x; C) *pb=&x; D) *pb=*x
【习题4】下面程序段的运行结果是_________
char *s="abcde";
s+=2;
printf("%d",s);
A)cde B)字符’c’C)字符’c’的地址D)无确定的输出结果【习题5】设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是______
A)c=*p1+*p2; B)p2=c C)p1=p2 D)c=*p1*(*p2);
【习题6】若有定义语句
char a[]="It is mine";
char *p="It is mine";
则以下不正确的叙述是________.
A)a+1表示的是字符t的地址
B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
【习题7】若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为___
A)*(a[i]+j) B)(a+i) C)*(a+j) D)a[i]+j
【习题8】设有如下定义:int (*ptr)( );
则以下叙述中正确的是:
A)ptr是指向一维组数的指针变量
B)ptr是指向int型数据的指针变量
C)ptr是指向函数的指针,该函数返回一个int型数据
D)ptr是一个函数名,该函数的返回值是指向int型数据的指针
【习题9】设有定义int (*ptr)[m];其中的标识符ptr是
A)m个指向整型变量的指针
B)指向m个整型变量的函数指针
C)一个指向具有m个整型元素的一维数组的指针
D)具有m个指针元素的一维指针数组,每个元素都只能指向整型量
【习题10】若要用下面的程序片段使指针变量p指向一个存储整型变量的动态
存储单元:int *p;
p=__________ malloc( sizeof(int));
则应填入
A) int B) int * C) (*int) D) (int *)
二、阅读下列程序,填空或给出程序运行结果。
【习题11】以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。
#include "stdio.h"
main()
{
int *a,*b,*c,num,x,y,z;
a=&x; b=&y; c=&z;
printf("输入3个整数:");
scanf("%d%d%d",a,b,c);
printf("%d,%d,%d\n",*a,*b,*c);
num=*a;
if (*a>*b) _______;
if (num>*c) _______;
printf("输出最小整数:%d\n",num);
}
【习题12】下面程序的功能是将两个字符串s1和s2连接起来,将s2连接到s1后面。请填空。
#include “stdio.h”
#include “string.h”
main()
{ char s1[80],s2[80];
gets(s1); gets(s2);
conn(s1,s2);
puts(s1);
}
conn(char *p1,char *p2)
{ while(*p1) ______;
while(*p2)
{ *p1=______;
p1++; p2++; }
*p1=’\0’;
}
【习题13】以下程序将数组a中的数据按逆序存放,请填空。
#define M 8
#include “stdio.h”
main()
{ int a[M],i,j,t;
for(i=0;i scanf("%d",a+i); i=0;j=M-1; while(i { t=*(a+i); *(a+i)= _______; *(______)=t; i++; j--; } for(i=0;i printf("%3d",*(a+i)); } 【习题14】给出程序运行结果。 #include “stdio.h” void f(int *x,int *y); main() { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p { f(p,q); p++;q--;} for(i=0;i<8;i++) printf("%d,",a[i]); } void f(int *x,int *y) { int t; t=*x;*x=*y;*y=t; } 【习题15】给出以下程序的输出结果: #include “stdio.h” void prt(int *m,int n); main() { int a[]={1,2,3,4,5},i; prt(a,5);