指针练习题
- 格式:doc
- 大小:63.50 KB
- 文档页数:7
时分秒画指针练习题1. 时钟上有()小格,有()大格。
钟面上时针走一大格是(),分针走一大格是(),秒针走一大格是()。
2. 时针从8走到11,分针要走()圈;分针从3走到5,经过了()分;秒针从12走到7,经过了()秒。
3. 写出下面钟面上的时刻。
4. 钟面上,时针刚过了9,分针从12起走了6小格,现在是();时针指在5与6之间,分针指着5,现在是();时针接近9,分针指着11,现在是()。
5. 小华绕操场跑一圈用58秒,小文跑一圈用1分。
()跑得快,快()秒。
6. 钟面上时针刚过了5,分针指着5,这时是( : ); 钟面上时针靠近9,分针指着10,这时是(:)。
7. 妈妈8点上班,从家到妈妈单位要15分钟,妈妈最迟要在()时()分从家里出发。
8. 妈妈8点下班,从妈妈单位到家里要15分钟,妈妈最早在()时()分能到家。
9. 星期天,小明从上午7: 30开始做作业,10: 30正好做完,小明做作业共用了()。
时分秒综合练习21.1时=()分 1分=()秒2. ()走一圈是12小时;分针从12走到4,经过了(); 秒针走15圈,分针走()大格,从3走到()。
3. 写出下面钟面上的时刻。
:::::4.钟面上时针刚走过6,分针从12起走了5个小格,这时是()时()分;时针指在7和8之间,分针指着7,这时是()时()分。
5. 小芳从早上6时开始,先用10分洗脸刷牙,然后用15分吃早饭,再用()分读书,正好是一-小时,这时是(:)。
6. 小朋友参加50米赛跑。
小文用了12秒,小亮用了10秒,小刚用了9秒,小宁用了14秒。
()跑得最快,()跑得最慢。
跑得最快的比跑得最慢的少用()秒。
7. 左边的钟面上的时间是(); 20分钟前是()时()分;15分钟后是()时()分。
8. 时针从12走到5,经过()小时,从4走到11,经过()小时;分针从12走到6,经过()分,从3走到10,经过()分;秒针从12走到9,经过()秒,从12走到12,经过()秒。
复习题(二)一、基础题1、设有:int k[]={2,4,6,8,10,12}, *p=k+2; 表达式*(p+2)*p[2] 的值:100 。
2、设有:int a[10], *p1, *p2; 则执行语句:p1=a; p2=&a[5]; 则p2-p1的值:5。
3、设有:int x[]={4,3,2,1},q,*p=&x[1];则执行语句:q=(*--p)++ ; 后;变量q的值为4。
4、设有:int *p, a=10, b=1; 则执行以下语句:p=&a; a=*p+b; 后;a的值为:11。
5、下列程序段的输出结果是2,1 。
int k=1, j=2, *p=&k, *q=p;p=&j;printf("%d, %d",*p, *q);6、设x为整型变量,p为指向整型的指针变量,则让p指向x变量的赋值表达式是P=&x。
7、设有变量定义:float d[]={1.0,2.0,3.0,4.0,5.0}, *p=d+3;请写出printf("\n %f %f", *p, d[0]); 的输出结果为:4.0和 1.0。
8、设有变量定义如下:char s[]="Hello!", *p=s; int i;执行完for(i=0; *(p+i); i++); 后,变量i的值是_6_;*(p+i)的值是‟\0‟_。
9、函数void f(char s[ ], char t[ ]){ int k=0;while (s[k]=t[k]) k++;}等价于void f(char *s, char *t)1、{ while (*s++=*t++); }二、选择题1、下面的程序段用来定义指针并赋值,请选出语法正确的程序段( C )。
A)int *p; scanf(“%d”,p); B)int *s,k; *s=100;C) int *s,k; D) int *s,kchar *p,*c; char *p,*c;s=&k; p=&c; s=&k; p=&c;*p=‟a‟; s=p; *s=1;2、程序段:int *p,a,b=1; p=&a; *p=10; a=*p+b; 执行后,a的值(B)。
编程题1用指向数组的指针变量输出数组的全部元素#include<iostream.h>void main( ){ int a[10], i;int *p;for (i=0; i<10; i++)cin>>a[i];for (p=a; p<a+10; p++)cout<<*p<<‘\t’;}#include<iostream.h>void main( ){ int a[10], i;int *p=a;for (i=0; i<10; i++)cin>>a[i];for (i=0; i<10; i++)cout<<*p++<<‘\t’;}2 使用函数调用,形参为指针,实参为数组,把一个数组逆序存放在输出#include<iostream.h>void inv(int *x, int n);void main( ){ int i, a[10]={3,7,9,11,0,6,7,5,4,2};inv(a,10);for (i=0;i<10; i++)cout<<a[i]<<‘\t’;}void inv(int *x, int n){ int *p, t, *i, *j, m=(n-1)/2;i=x; j=x+n-1; p=x+m;for (; i<=p; i++,j--){ t=*i; *i=*j; *j=t;}}void inv(int x[ ], int n){ int t, i, j, m=(n-1)/2;for (i=0;i<=m; i++){ j=n-1-i;t=x[i]; x[i]=x[j]; x[j]=t;}}一判断题× 1.指针是变量,它具有的值是某个变量或对象的地址值,它还具有一个地址值,这两个地址值是相等的。
指针练习题1.有以下程序main(){char a[]="programming",b[]="language";char *p1,*p2;int i;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}输出结果是A)gm B)rg C)or D)ga2.设有说明int(*ptr)[m];其中的标识符ptr是A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量3.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是A) p+1 B) a+1 C) a++ D) ++p4.若有语句int *point ,a=4;和point =&a;下面均代表地址的一组选项是A. a,point,*&aB. &*a,&a,*pointC. &point,*point,&aD. &a,&*point,point5.下面程序段的运行结果是char a[]=”language”,*p;p=a;while(*p!=’u’) {printf(“%c”, *p-32);p++;}A. LANGUAGEB. LANGuageNGngUAGE6.以下程序的运算结果是*p=1,m=3,n=5 。
#include<stdio.h>void main(){int a[5]={1,2,3,-4,5};int m,n,*p;p=&a[0];m=*(p+2);n=*(p+4);printf("*p=%d,m=%d,n=%d",*p,m,n);}7.写一通用函数slength,求出一个字符串的长度,并用main函数调用slength。
指针编程练习题指针是一种特殊的数据类型,在C语言中有着重要的作用。
通过指针,我们可以直接访问和操作内存中的数据。
为了熟悉和掌握指针的使用,下面将给出一些指针编程练习题供大家参考。
1. 交换两个变量的值请编写一个程序,使用指针来交换两个整数变量的值。
要求在程序中定义两个整数变量a和b,通过指针交换它们的值,并打印交换后的结果。
示例输入:a = 10,b = 20示例输出:交换前:a = 10, b = 20交换后:a = 20, b = 102. 求数组元素的和请编写一个程序,使用指针来计算一个整型数组中所有元素的和。
要求在程序中定义一个整型数组array,并使用指针访问数组中的元素,计算它们的和,并打印结果。
示例输入:array = {1, 2, 3, 4, 5}示例输出:数组元素的和为:153. 查找数组中的最大值和最小值请编写一个程序,使用指针来查找一个整型数组中的最大值和最小值。
要求在程序中定义一个整型数组array,并使用指针访问数组中的元素,找到数组中的最大值和最小值,并打印结果。
示例输入:array = {7, 4, 9, 2, 5}示例输出:最大值为:9最小值为:24. 字符串长度计算请编写一个程序,使用指针来计算一个字符串的长度。
要求在程序中定义一个字符数组string,并使用指针访问字符数组中的元素,计算字符串的长度,并打印结果。
示例输入:string = "Hello, World!"示例输出:字符串长度为:135. 动态内存分配请编写一个程序,使用指针来动态分配内存空间,并进行数据的读写操作。
要求在程序中使用malloc函数动态分配内存空间,读取用户输入的整数值并存储到动态分配的内存中,然后使用指针访问该内存中的数据,并打印结果。
示例输入:请输入一个整数: 10示例输出:读取到的整数为: 10以上是几个指针编程练习题的示例,通过练习这些题目,可以提高对指针的理解和使用技巧。
1、int *p 的含义是(B)A.p是一个指针, 用来存放一个整型数B.p是一个指针, 用来存放一个整型数据在内存中的地址C.p是一个整型变量D. 以上都不对2、以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
void func(int x,int y, ___int*____ z){ *z=x+y; }3、有如下程序段(B)int *p,a=10,b=1;p=&a; a=*p + b;执行该程序段后,a的值是A. 12B. 11C. 10D. 编译出错4、若己定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( C)A) p+1B) a+1C) a++D) ++p5、以下程序运行后的输出结果是(A)void main( ){ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++) printf("%d,",*p);}A)1,2,3,4,5,6,7,8,9,0,B)2,3,4,5,6,7,8,9,10,1,C)0,1,2,3,4,5,6,7,8,9,D)1,1,1,1,1,1,1,1,1,1,6、下面程序的输出是(D)void prtv(int *x)printf("%d\n", ++*x);}main(){ int a=25;prtv(&a);}A) 23 B) 24 C) 25D) 267、有以下函数(B)char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值C) 一个临时存储单元的地址D) 形参p自身的地址值8、下列程序的输出结果是(7)#include<stdio.h>void fun (int *p1, int *p2){ if (*p1>*p2) printf ("%d\n",*p1);else printf ("%d\n",*p2);}void main ( ){ int a=3,b=7;fun (&a, &b);}9、下列程序的运行结果是(B)void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf("%d %d", a, b);}A) 6 3 B) 3 6 C) 编译出错D) 0 010、以下程序调用findmax函数返回数组中的最大值(B)findmax(int *a,int n){ int *p,*s;for(p=a,s=a; p-a<n; p++)if ( ) s=p;return(*s);}main(){ int x[5]={12,21,13,6,18};printf("%d\n",findmax(x,5));}在下划线处应填入的是(B)A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s11、下列程序段的输出结果是(A)void fun(int *x, int *y){ printf("%d %d", *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf("%d %d",x, y);}A) 2 1 4 3 B) 2 1 3 4 C) 1 2 1 2 D) 2 1 1 212、以下程序执行后输出的结果是___84________。
六、指针习题及答案一、单项选择题1. *p最终值是( D)int *p,b=10;static int a[]={2,3,4,1,5,6};p=a;p+=3;a[3]=b;A. 1B. 3C. 4D. 102. *p最终值是( A )char b[10]= "abcdefghi",*p;p=b+5;A. ’f’B. ’g’C. ’h’D. ’e’3. 有一个二维数组a[3][4],其2行3列元素a[2][3]的正确表示方法为( D )。
A. &a[2][3]B. a[2]+3C. *(a+2)+3D. *(a[2]+3)4. 指向一个包含4个整型元素的一维数组的行指针变量的定义形式为( D )。
A. int (*p)[]B. int *p[4]C. int *(p[])D. int (*p)[4]5. 4个指向int型元素的指针构成一个一维指针数组的定义形式为( B )。
A. int (*p)[]B. int *p[4]C. int *(p[])D. int (*p)[4]6. 若char *str1="china",char *str2="student";则语句strcpy(str2,str1)执行后,str2的值为( A )。
A. chinaB. studentC. studentchinaD. chinastudent7.若有以下定义和语句:int a[]={1,2,3,4,5,6,7,8,9,0}, *p=a;则值为3的表达式是( B )。
A. p+=2,*(++p)B.p+=2,*p++C.p+=3,p++D. p+=2,++*p8.若有以下定义:char s[20]="programming", *ps=s;则下列不能代表字符“o”的表达式是( A )。
A. ps+2B. s[2]C. ps[2]D.ps+=2,*ps9. 若有定义和语句:int **pp,*p, a=10,b=20;pp=&p;p=&a;p=&b;cout<<*p<<","<<**pp;则输出结果是: ( D )。
第十章指针一.选择题1.变量的指针,其含义是指该变量的。
A)值B)地址C)名D)一个标志2.已有定义in t k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是。
A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2) 3.若有说明:int *p,m=5,n;以下程序段正确的是。
A)p=&n ; B)p = &n ;scanf(“%d”,&p); scanf(“%d”,*p);C)scanf(“%d”,&n); D)p = &n ;*p=n ; *p = m ;4.已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是。
void print_value(int *x){ printf(“%d\n”,++*x); }A)23 B)24 C)25 D)265.若有说明:int *p1, *p2,m=5,n;以下均是正确赋值语句的选项是。
A)p1=&m; p2=&p1 ; B)p1=&m; p2=&n; *p1=*p2 ;C)p1=&m; p2=p1 ; D)p1=&m; *p1=*p2 ;6.若有语句:int *p,a=4;和p=&a;下面均代表地址的一组选项是。
A)a,p,*&a B)&*a,&a,*p C)*&p,*p,&a D)&a,&*p,p7.下面判断正确的是。
A)char *a=”china”; 等价于char *a; *a=”china” ;B)char str[10]={“china”}; 等价于char str[10]; str[ ]={“china”;}C)char *s=”china”; 等价于char *s; s=”china” ;D)char c[4]=”abc”,d[4]=”abc”; 等价于char c[4]=d[4]=”abc” ;8.下面程序段中,for循环的执行次数是。
指针练习题1 填空题【1】下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
int add( int x, int y, ){ =x+y;}【2】若有定义: char ch;(1) 使指针p 可以指向变量ch的定义语句是。
(2) 使指针p指向变量ch的赋值语句是。
(3) 通过指针p给变量ch读入字符的scanf函数调用语句是。
(4) 通过指针p 给变量ch赋字符A的语句是。
(5) 通过指针p输出ch中字符的语句是。
(6) 在16位微机上,指针变量p在内存中所占字节数是,变量ch在内在所占字节数是。
2 选择题【3】若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是()。
A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;【4】若有定义:int x,*pb;则正确的赋值表达式是()。
A.pb=&xB.pb=xC. *pb=&xD.*pb=*x【5】对于类型相同的指针变量,不能进行的运算是()。
A.< B. = C. + D. –【6】以下程序的输出结果是()。
A.23 B. 24 C. 25 D. 26Void fun ( int *x){ printf(%d\n”,++*x); }main( ){ int a=25;fun (&a);}【7】以下程序的输出结果是()。
A.6 B. 7 C. 8 D. 9main(){int k=2,m=4,n=6;int *pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf("%d\n",n);}【8】以下程序的输出结果是()。
A.100 B. 50 C. 101 D.200main(){int *v,b;v=&b;b=100;*v+=b;printf("%d\n",b);}【9】以下程序的输出结果是()。
A.2,3 B. 6,2 C. 3,2 D. 2,6 int ast(int x,int y,int *cp,int *dp){*cp=x*y;*dp=x%y;}main(){int a,b,c,d;a=2;b=3;ast(a,b,&c,&d);printf("%d,%d\n",c,d);}【10】以下程序的输出结果是()。
A.1,3 B. 2,3 C. 1,6 D.2,6main(){int a[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}3 改错题【11】main( ){ int a=1,b=2;printf(“a=%d b=%d\n”,a,b);swap(a,b);printf(“a=%d b=%d\n”,*a,*b);}swap ( int *p1, int *p2){int *p;*p=*p1; *p1=*p2;*p2=*p;}【12】void add (int a,int b,int c){ c=a+b;return c;}main( ){ int *ap,*bp,a,b,c;ap=&a,bp=&b;scanf(“%d %d”,&ap,&bp);add(ap,bp,c);printf("%d\n",c);}4 读程序写结果【13】main(){static int a[ ][3]={{1,2,3},{4,5},{6}};int i,*p=a[0];int (*q)[3]=a;for(i=0;i<3;i++)printf("%2d",*++p);printf("\n");for(i=0;i<3;i++)printf("%2d",*(*(q+i)+1));printf("\n");}【14】main(){int a=10,b=20;void test( );printf("a=%d,b=%d\n",a,b);test(a,&b);printf("a=%d,b=%d\n",a,b);}void test(int x,int *y){int t;t=x;x=*y;*y=t;}【15】#define PRINTA printf("%d,%d\n",a,b); #define PRINTB printf("%d,%d\n",*pa,*pb); void swap(int *p,int *q){int t;t=*p;*p=*q;*q=t;}main( ){int a=1,b=2,*pa=&a,*pb=&b;PRINTAPRINTBswap(pa,pb);PRINTAPRINTB}【16】main(){int a[]={1,2,3,4,5,6,7,8,9};int *p=a,i,t;for(i=0;i<9/2;i++){t=*(p+i);*(p+i)=*(p+8-i);*(p+8-i)=t*10;}for(i=0;i<9;++i)printf("%d,",a[i]);}【17】#include "stdio.h"sub1(char *a,char b){char c;c=*a;*a=b;b=c;}sub2(char a,char b){char c;c=a;a=b;b=c;}sub3(char *a,char *b){char c;c=*a;*a=*b;*b=c;}main(){char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(a,b);putchar(a);putchar(b);a='A';b='B';sub1(&a,b);putchar(a);putchar(b); }【18】void exc(int *i,int *j){int k;k=*i;*i=*j;*j=k;}void opr(int x,int y,int *z){exc(&x,&y);*z=x%y;}main(){int a=89,b=10,*c;c=&a;opr(a,b,c);printf("%d,%d,%d",a,b,*c);}【19】main(){int **k,*a,b=100;a=&b;k=&a;printf("%d\n",**k);}【20】fun1(int x,int y,int *cp,int *dp) {*cp=x+y;*dp=x-y;}fun2(int *a,int b){int c;c=*a;*a=b;b=c;}main(){int a,b,c,d;a=30;b=50;fun1(a,b,&c,&d);fun2(&c,d);printf("%d,%d\n",c,d);}【21】void sub(int x,int y,int *z) {*z=y-x;}main(){int a,b,c;sub(20,15,&a);sub(a,9,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}【22】fun(int *a,int *b){int w;*a=*a+*a;w=*a;*a=*b;*b=w;}main(){int x=9,y=5,*px=&x,*py=&y;fun(px,py);printf("%d,%d\n",x,y);}【23】sub(float x,float *y,float *z){*y=*y-1.0;*z=*z+x;}main(){float a=2.5,b=0,*pa,*pb;pa=&a;pb=&b;sub(b-a,pa,pb);printf("%f\n",a);}【24】main(){static char a[]="Language",b[]="Programe";char *p1,*p2;int k;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}【25】main(){int i,k;for(i=0;i<4;i++){k=sub(&i);printf("%3d",k);}printf("\n");}sub(int *s){static int t=0;t=*s+t;}【26】#include "stdio.h"main(){char a[]="123456789",*p;int i=0;p=a;while(*p){if(i%2==0) *p='*';p++;i++;}puts(a);}【27】main(){int x[]={0,1,2,3,4,5,6,7,8,9};int s,i,*p;s=0;p=&x[0];for(i=1;i<10;i+=2)s+=*(p+i);printf("sum=%d",s);}5 编程题【28】编写一个使用指针的C函数,交换数组a和数组b中对应元素。
【29】编写函数,通过指针连接两个字符串。
【30】产生动态数组。
编写程序,输入数组大小后,通过动态分配内存函数malloc产生数组。