指针练习题

合集下载

时分秒画指针练习题

时分秒画指针练习题

时分秒画指针练习题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,经过()秒。

C语言指针经典练习题-及答案

C语言指针经典练习题-及答案

C语言指针练习题及答案一、选择题1. 变量的指针,其含义是指该变量的____.a)值b)地址c)名d)一个标志2.若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是__ _.a)a,point,*&a b)&*a,&a,*pointc)*&point,*point,&a d)&a,&*point ,point3.若有说明;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. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是__ _____.main(){int *p,*q,a,b;p=&a;printf(“input a:”);scanf(“%d”,*p);……}a)*p表示的是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p只能用来说明p是一个指针变量5. 已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是______.void print_value(int *x){ printf(“%d\n”,++*x);}a)23 b)24 c)25 d)266.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是A) *p=&a;scanf("%ld",p);B) p=(long *)malloc(8);scanf("%ld",p);C) scanf("%ld",p=&a);D) scanf("%ld",&a);7.有以下程序#include<stdio.h>main(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1C)2,1,2,1 D)2,1,1,28. 有以下程序main(){ int a=1, b=3, c=5;int *p1=&a, *p2=&b, *p=&c;*p =*p1*(*p2);printf("%d\n",c);}执行后的输出结果是A)1 B)2 C)3 D)49. 有以下程序main(){ int a,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}程序运行后的输出结果是()A)4 B)1 C)0 D)运行时出错,无定值10. 在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是()A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价11.有以下程序段int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3], b; b=p[5]; b中的值是()A)5 B)6 C)8 D)912.若有以下定义,则对a数组元素的正确引用是_________.int a[5],*p=a;a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)13.若有以下定义,则p+5表示_______.int a[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设已有定义: int a[10]={15,12,7,31,47,20,16,28,13,19},*p; 下列语句中正确的是()A) for(p=a;a<(p+10);a++);B) for(p=a;p<(a+10);p++);C) for(p=a,a=a+10;p<a;p++);D) for(p=a;a<p+10; ++a);15.有以下程序段#include <stdio.h>int main(){ int x[] = {10, 20, 30};int *px = x;printf("%d,", ++*px); printf("%d,", *px);px = x;printf("%d,", (*px)++); printf("%d,", *px);px = x;printf("%d,", *px++); printf("%d,", *px);px = x;printf("%d,", *++px); printf("%d\n", *px);return 0;}程序运行后的输出结果是( )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,20 D)20,10,11,20,11,12,20,2016.设有如下定义则程序段的输出结果为int arr[]={6,7,8,9,10};int *ptr;ptr=arr;*(ptr+2)+=2;printf ("%d,%d\n",*ptr,*(ptr+2));A)8,10 B)6,8 C)7,9 D)6,1017.若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是_4__. *(a+5)的值是__12__.18.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是___ __.A) p+1 B) *(p+3) C) *(p+1)+3 D) *(p[0]+2))19.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为__ __.a)*(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j20.若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_8_. *(*(a+1)+0)的值是_ _8.21.有以下定义char a[10],*b=a; 不能给数组a输入字符串的语句是()A)gets(a) B)gets(a[0]) C)gets(&a[0]); D)gets(b);22.下面程序段的运行结果是___ __.char *s="abcde";s+=2;printf("%d",s);a)cde b)字符'c' c)字符'c'的地址d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()A) char s[10]="abcdefg"; B) char t[]="abcdefg",*s=t;C) char s[10];s="abcdefg"; D) char s[10];strcpy(s,"abcdefg");24.设已有定义: char *st="how are you"; 下列程序段中正确的是()A) char a[11], *p; strcpy(p=a+1,&st[4]);B) char a[11]; strcpy(++a, st);C) char a[11]; strcpy(a, st);D) char a[], *p; strcpy(p=&a[1],st+2);25.有以下程序输出结果是()main(){char a[]="programming",b[]="language";char *p1,*p2;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)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是_____.a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);27.以下正确的程序段是____.a)char str[20]; b)char *p;scanf("%s",&str); scanf("%s",p);c)char str[20]; d)char str[20],*p=str;scanf("%s",&str[2]); scanf("%s",p[2]);28.若有说明语句则以下不正确的叙述是____.char a[]="It is mine";char *p="It is mine";a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运行结果是___.#include <stdio.h>#include <string.h>main(){ char *s1="AbDeG";char *s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}a)正数b)负数c)零d)不确定的值30.有以下程序运行后的输出结果是____。

C语言 数组和指针练习题

C语言  数组和指针练习题

若当堂没做完,下周四之前上交也可。

至ftp://211.64.82.253/用户名和密码:stuC语言程序设计练习题——数组一、选择题77、以下对一维数组a的正确说明是_d ___A、char a(10);B、int a[ ];C、int k=5,a[k];D、char a[ ]={'a' , 'b' , 'c'};78、若有说明语句:int a[2][4];,则对a数组元素的正确引用是_a___A、a[0][3]B、a[0][4]C、a[2][2]D、a[2][2+1]79、以下能对二维数组y进行初始化的语句是_b__A、static int y[2][ ]={{1,0,1}, {5,2,3}};B、static int y[ ][3]={{1,2,3}, {4,5,6}};C、static int y[2][4]={{1,2,3}, {4,5} , {6}};D、static int y[ ][3]={{1,0,1,0}, { }, {1,1}};80、若有说明语句:int y[ ][4]={0,0};则下面叙述不正确的是_d___A、数组y的每个元素都可得初值0B、二维数组y的行数为1C、该说明等价于int y[ ][4]={0};D、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值081、以下各组选项中,均能正确定义二维实型数组s的选项是_c___A、float s[3][4];B、float s(3,4);float s[ ][4]; float s[ ][ ]={{0};{0}};float s[3][ ]={{1},{0}}; float s[3][4];C、 float s[3][4];D、float s[3][4];static float s[ ][4]={{0},{0}}; float s[3][ ];auto float s[ ][4]={{0},{0},{0}}; float s[ ][4];82、若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8}; ,则a数组的行数为__a__A、3B、2C、无确定值D、183、若二维数组y有m列,则在y[i][j]前的元素个数为_B___A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+184、下面程序中有错误的行是____1、 main( )2、 {3、 int x[3]={1};4、 int k;5、 scanf("%d", &x);6、 for (k=1; k<3; k++)7、 x[0]=x[0]+x[i];8、 printf("x[0]=%d\n", x[0]);9、 }A、3B、6C、7D、585、若有以下语句,则正确的描述是__b__char x[ ]="12345";char y[ ]={'1', '2', '3', '4', '5'};A、x数组与y数组的长度相同B、x数组长度大于y数组长度C、x数组长度小于y数组长度D、x数组等价于y数组86、以下不正确的数组定义语句是__b__A、double x[5]={2.0, 4.0, 6.0, 8.0, 10.0};B、int y[5]={0, 1, 3, 5, 7, 9};C、char ch1[ ]={'1', '2', '3', '4', '5'};D、char ch2[ ]={'\x10', '\xa', '\x8'};87、以下正确的数组定义语句是_c___A、char a[5]={'1', '2', '3', '4', '5', '\0'};B、int b[2][ ]={{1}, {2}};C、float c[ ][3]={1, 2, 3, 4, 5};D、char d[5]="CHINA";88、判断字符串str1是否大于字符串str2,应当使用__d__A、if (str1>str2)B、if (strcmp(str1, str2))C、if (strcmp(str2, str1)>0)D、if (strcmp(str1, str2)>0)89、下面程序段的运行结果是_c___char x[5]={'a', 'b', '\0', 'c', '\0'};printf("%s", x);A、'a''b'B、abC、ab└┘cD、abc90、有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是_d___A、gets(a, b);B、scanf("%s%s", &a, &b);C、getchar(a); getchar(b);D、gets(a); gets(b);91、有字符数组s1[80]和s2[80],则以下能正确对s1, s2进行输出的语句是___b_A、puts(s1, s2)B、printf("%s, %s", s1, s2);C、putchar(s1, s2);D、puts(s1), puts(s2);92、以下程序段的运行结果是_c___char a[7]="abcdef";char b[4]="ABC";strcpy(a, b);printf("%c", a[5]);A、└┘B、\0C、eD、f93、以下描述正确的是_d___A、两个字符串所包含的字符个数相同时,才能比较字符串B、字符个数多的字符串比字符个数少的字符串大C、字符串"STOP└┘"与"STOP"相等D、字符串"That"小于字符串"The"94、以下对字符数组的描述中错误的是_c___A、字符数组中可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D、不可以用关系运算符对字符数组中的字符串进行比较95、若有语句:char s1[10], s2[10]={"books"},则能将字符串books赋给数组s1的正确语句是_b___A、s1={"books"};B、strcpy(s1, s2);C、s1=s2;D、strcpy(s2, s1);96、以下printf语句的输出结果是____printf("%d\n", strlen("school");A、7B、6C、存在语法错误D、不定值97、下面程序的功能是将字符串s中所有的字符c删除。

函数、指针与结构体练习题-参考答案

函数、指针与结构体练习题-参考答案

(一)选择题1.以下正确的说法是_________.建立函数的目的之一是 a)提高程序的执行效率b)提高程序的可读性c)减少程序的篇幅d)减少程序文件所占内存2.以下正确的函数原型声明形式是________.a)double fun(int x,int y)b)double fun(int x; int y)c)double fun(int x, int y);d)double fun(int x,y);3.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为______.A)地址传递B)单向值传递C)由实参传给形参,再由形参传回给实参D)由用户指定传递方式4.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是______.a)floatb)intc)longd)double5.已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array 的错误定义方式为________.int a[3][4];f(a);a)f(int array[][6])b)f(int array[3][])c)f(int array[][4])d)f(int array[2][5])6.以下程序的正确运行结果是_________.#include <>void num(){ extern int x,y;int a=15,b=10;x=a-b;y=a+b;}int x,y;main(){int a=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n",x,y);}a)12,2 b)不确定 c)5,25 d)1,127.以下正确的描述是____________.a)C语言的预处理功能是指完成宏替换和包含文件的调用b)预处理指令只能位于C源程序文件的首部c)凡是C源程序中行首以"#"标识的控制行都是预处理指令d)C语言的编译预处理就是对源程序进行初步的语法检查8.在"文件包含"预处理语句的使用形式中,当#include后面的文件名用< >(尖括号)括起时,找寻被包含文件的方式是_______.a)仅仅搜索当前目录b)仅仅搜索源程序所在目录c)直接按系统设定的标准方式搜索目录d)先在源程序所在目录搜索,再按照系统设定的标准方式搜索9.当调用函数时,实参是一个数组名,则向函数传送的是_____.A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值10.函数的值通过return语句返回,下面关于return语句的形式描述错误的是_____.表达式; (表达式);C.一个return语句可以返回多个函数值D.一个return语句只能返回一个函数值11.设函数fun的定义形式为void fun(char ch,float x){…}则以下对函数fun的调用语句中,正确的是_____.("abc",; =fun('D',; ('65',; (32,32);12.以下程序的输出结果是_____.void reverse(int a[],int n){ int i,t;for(i=0;i<n/2;i++){ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}}main( ){ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf(" %d\n ",s);}B.1013.阅读下列程序,则运行结果为_____.fun( ){ static int x=5;x++;return x;}main( ){ int i,x;for(i=0;i<3;i++)x=fun( );printf("%d\n",x);}B.614.若使用一维数组名作函数实参,则以下正确的说法是_____.A.必须在主调函数中说明此数组的大小B.实参数组类型与形参数组类型可以不匹配C.在被调用函数中,不需要考虑形参数组的大小D.实参数组名与形参数组名必须一致15.在C语言中,定义函数时函数的类型可以缺省,此时函数的隐含类型是_____. 16.在C语言中,形参的缺省存储类别是( ).17.以下关于字符串的叙述中正确的是_____.语言中有字符串类型的常量和变量B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.空串一定比空格打头的字符串小18.阅读程序,选择程序的运行结果。

c语言指针的习题答案

c语言指针的习题答案

指针练习题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。

指针练习题及答案

指针练习题及答案

六、指针习题及答案一、单项选择题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.已有定义i‎n 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‎_valu‎e(&a);下面函数的‎输出结果是‎。

void print‎_valu‎e(int *x){ print‎f(“%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循环‎的执行次数‎是。

指针字符串练习题及答案

指针字符串练习题及答案

单项选择==================================================题号:4074若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是().A、p=aB、p=&a[2][1]C、q[i]=a[i]D、p=a[i]答案:A题号:4333执行下列语句后的结果为().int x=3,y;int *px=&x;y=*px++;printf("x=%d,y=%d\n",x,y);A、x=3,y=3B、x=4,y=4C、x=3,y不知D、x=3,y=4答案:A题号:4876下列程序的运行结果是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、0 0B、3 6C、编译出错D、6 3答案:B题号:4116若说明int *p,n;则通过语句scanf能够正确读入数据的程序段是().A、scanf("%d",n);B、p=&n;scanf("%d",&p);C、p=&n;scanf("%d",*p);D、p=&n;scanf("%d",p);答案:D题号:4120下面程序:int aa[3][3]={{2},{4},{6}};main(){int i,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是().A、25B、30C、26D、23答案:D题号:4124若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是().A、i=*p;B、*p=*&j;C、i=**p;D、i=&j;答案:B题号:4165阅读下面程序,程序执行后的结果为().#include"stdio.h"main(){ char *str="abcdefghijklmnopq";while(*str++!='e');printf("%c\n",*str);}A、fB、qC、eD、a答案:A题号:4167关于指针概念说法不正确的是().A、指针变量可以由整数赋,不能用浮点赋B、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中,C、一个指针变量只能指向同一类型变量D、一个变量的地址称为该变量的指针答案:A题号:4173设有以下定义:int w[2][3],(*pw)[3];pw=w;,则对w数组元素非法引用是().A、pw[0][0]B、*(pw[1]+2)C、*(pw+1)[2]D、*(w[0]+2)答案:C题号:4532若有定义:char s[3][10],*k[3],*p;,则以下赋值语句正确的是().A、k=s;B、p=k;C、p=s;D、p=s[0];答案:D题号:4174当运行以下程序时输入OPEN THE DOOR<CR>,则输出结果是#include<stdio.h>char fun(char *c){if(*c<='Z' && *c>='A')*c -='A' - 'a';return *c;}main(){char s[8],*p=s;gets(s);while(*p){*p=fun(p);putcahr(*p);p++;}putchar('\n');}A、Open The DoorB、OPEN THE DOORC、open the doorD、oPEN tHE dOOR答案:C题号:4175下列程序执行后的输出结果是().void func(int *a,int b[]){b[0]=*a+6;}main(){int a,b[5]={0};a=0; b[0]=3;func(&a,b); printf("%d\n",b[0]);}A、8B、9C、7D、6答案:D题号:4390已知有声明"char a[]="prongram",*p=a+1;",则执行以下语句不会输出字符a的是()oA、putchar(*p+4);B、putchar(*(p+4));C、putchar(a[sizeof(a)-3]);D、putchar(*(a+5));答案:A题号:4181定义语句int *swap();指的是A、其他说法都不对B、swap是一个返回指向整型值指针的函数C、swap是一个返回整型值的函数D、swap是一个指向函数的指针答案:B题号:4184有以下程序:#include<stdio.h>void swap(char *x,char *y){char t;t=*x;*x=*y;*y=t;}main(){char *s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2); }程序执行后的输出结果是().A、1bc,a23B、123,abcC、321,cbaD、abc,123答案:A题号:4211若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,则输出结果不为5 的语句为().A、printf("%d",p[5]);B、printf("%d",*p[5]);C、printf("%d",*(a+5));D、printf("%d",*(p+5));答案:B题号:4215有以下程序:void fun(int *a,int i,int j){int t;if(i<j){t=a[i];a[i]=a[j];a[j]=t;fun(a,++i,--j);}}main(){int a[]={1,2,3,4,5,6},i;fun(a,0,5);for(i=0;i<6;i++)printf("%d",a[i]);}执行后输出结果是().A、6 5 4 3 2 1B、2 1 4 3 6 5C、3 2 4 1 5 6D、1 2 3 4 5 6答案:A题号:4113以下程序运行后的输出结果是(). main(){char ch[]="uvwxyz",*pc; pc=ch;printf("%c\n",*(pc+5));}A、字符y的地址B、0C、元素ch[5]地址D、z答案:D题号:4695有以下程序#include<stdio.h>main(){int a[]={1,2,3,4},y,*p=&a[3]; --p; y=*p; printf("y=%d\n",y); }程序的运行结果是().A、y=0B、y=2C、y=1D、y=3答案:D题号:4298若有语句:char *line[5];下列叙述中正确的是().A、定义line是一个指针数组,语句中的*号称为间址运算符B、定义line是一个数组,每个数组元素是一个基类型为char 的指针变量C、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组D、定义line是一个指向字符型函数的指针答案:B题号:2457设有数组定义:char array[]="China";,则数组 array所占的空间为().A、5个字节B、4个字节C、6个字节D、7个字节答案:C题号:2468下述对C语言字符数组的描述中错误的是().A、字符数组中的字符串可以整体输入,输出.B、不可以用关系运算符对字符数组中的字符串进行比较.C、字符数组中可以存放字符串.D、可以通过赋值运算符"="对字符数组整体赋值.答案:D题号:2479以下程序:#include<stdio.h>#include<string.h>main(){ char str[]="abcd\n\123\xab";printf("%d",strlen(str));}运行后的输出结果是().A、10B、9C、14D、7答案:D题号:2485已知有声明"char s[20]="Hello";",在程序运行过程中若要想使数组s中的内容修改为"Good",则以下语句能够实现此功能的是().A、strcpy(s,"Good");B、strcat(s,"Good");C、s[20]="Good";D、s="Good";答案:A题号:2499以下程序段的输出结果是pritnf("%d\n",strlen("ATS\n012\1\\"));A、11B、8C、9D、10答案:C题号:2510char a1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是().A、strcat(a2,a1);B、strcpy(a2,a1);C、strcpy(a1,a2);D、strcat(a1,a2);答案:A题号:2530设有以下语句,若0<k<4,下列选项中对字符串的非法引用是().char str[4][2]={"aaa","bbb","ccc","ddd"},*strp[4];int j;for(j=0;j<4;j++)strp[j]=str[j];A、*strpB、strpC、strp[k]D、str[k]答案:B题号:2543选择正确的输入语句().(其中:char string[10];)使得string的内容为"Hello".A、scanf("%s",&string);B、scanf("%c",string);C、scanf("%c",&string);D、scanf("%s",string);答案:D题号:2874下列数组说明中正确的是().A、static char str1[5],str2[]={"China"};str1=str2;B、static char str[];str="China";C、static char str1[],str2[];str2={"China"};strcpy(str1,str2);D、static char str[]="China";答案:D题号:2633已定义char string[20];使得string的内容为"You are student"的正确输入语句是().A、scanf("%c",&string);B、gets(string);C、scanf("%s",&string);D、scanf("%s",string);答案:B填空题==================================================题号:4875若有定义: char ch;定义指针p,并使其指向变量ch的初始化语句是_____。

指针选择题练习

指针选择题练习

指针选择题练习1、以下程序段运行后*(++p )的值为(C )char a[6]=“work ”;char *p;p=a;A 、‘w ’B 、存放‘w ’的地址C 、‘o ’D 、存放的‘o ’地址2.以下程序运行后*(P+3)的值为( A )char a[]=“good ”; char *P ;P=a ;A.‘d ’B.‘\0’C.存放‘d ’的地址 .D.‘0’3.以下程序运行段运行后x 的值为( D )int a[]={1,2,3,4,5,6,7,8};int i,x *p;x=1;p=&a[2];for(i=0,i <3,i++)x*=(p+i);A. 不确定B. 24C. 120D. 604、下面程序的输出结果是(A )#include<stdio. h>int main ( ){int i;char *s= “ abc ”;for ( i=0 ; i<3; i++)printf ( “% s\n ” , s+i );}A B C D 5.执行以下程序段的输出结果是( B )int a=10,*p=&a;printf(“%d ”,++*p);A .10 B.11 C.变量a 的地址 D.变量a 的地址加16. 语句int a=10,*point=&a ; D 其值不为地址。

A. pointB. &aC. &pointD. *point7. 若有说明:int *p, a=1, b; 以下正确的程序段是(D )。

A . p=&b;B . scanf("%d", &b);scanf("%d", &p); *p=b;C . p=&b;D . p=&b;scanf("%d", *p); *p=a8. 变量的指针,其含义是指该变量的(B )。

A . 值B . 地址C . 名D . 一个标志9.若定义:int a=511, *b=&a ;,则printf("%d\n", *b);的输出结果为: D a b c b c c c b ca b c a b c c b c aa ba b cA.无确定值B.a的地址C.512 D.51110. 已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是(B)。

(完整word版)C语言指针练习+答案+讲解

(完整word版)C语言指针练习+答案+讲解

第七章指针7.1 选择题1.若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D)。

A. p=q; B. *p=*q; C. a=*q; D. q=a;a是整型数,int *p,*q定义了指针,p,q是指向整型的指针.p取得a的地址,而q取得p的地址p,q是指针(也就是一个地址),而*p和*q是这个指针指向的整型数值(存放在这个地址的值).A)把q的地址赋给p,则p和q完全一样了,都指向一个数2B)把q中数据个pC)把q中数据给aD)a中数据是2,不能够给一个地址。

除非*q=a2.若定义:int a=511, *b=&a;,则printf("%d\n”, *b);的输出结果为:D A.无确定值 B. a的地址 C. 512 D. 511int a=511,*b=&a;a 是整形变量b 是整形指针变量,指向 aprintf("%d\n",*b);就是输出指针变量 b,所指变量的值输出结果5113.已有定义int a=2, *p1=&a, *p2=&a; 下面不能正确执行的赋值语句是(B)。

A. a=*p1+*p2; B. p1=a; C. p1=p2; D. a=*p1*(*p2);47、已知在程序中定义了如下的语句:int *P1,*P2;int k;p1=&k;p2=&k;则下列语句中不能正确执行是( B )A、k=*P1+*P2;B、p2=k;C、P1=P2;D、K=*P1 * (*P2);P1 P2是指针,K是整型变量,变量怎么可以赋值给指针呢?A其实是执行了K=K+K(P1和P2都指向K,所以*P1 *P2其实都是指K)C是赋值语句D其实执行了K=K*K4.变量的指针,其含义是指该变量的(B)。

A.值 B.地址 C.名 D.一个标志5.若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。

指针练习题

指针练习题

指针练习题1.有四组对指针变量进行操作的语句,以下判断正确的选项是(a )A. int p,q; q=p; int a,*p,*q; p=q=&a;B. int a,*p,*q; q=&a; p=*q; int a=20,*p; p=a;C. int a=b=0,*p; P&a; b=*p;int a=20,*p,*q=&a; p=q;D. int a=20,*p,*q+&a; p=q; int p,*q;A.正确(1) 不正确(2)(3)(4)B.正确(1)(4) 不正确(2)(3)C.正确(3) 不正确(1)(2)(4)D.以上结论都不正确5.以下程序中调用scanf 函数给变量a输入值的方法是错误的,其错误原因是(b )main(){int*p, q, a, b;,};p=&a;printf(“input a:”);scanf(“%d”,*p);……}a.*p表示的是变量a的值,而不是变量a的地址b*p表示的是指针变量p的地址C.*p表示的是指针变量p的值D.*p只能用来说明p是一个指针变量6 以下程序有错误,错误原因是( )main(){int*p,I; char*q,ch;p=&I; q=&ch; *p=40; *p=*q;……}A. p和q的类型不一致,不能执行*p+*q语句B.*p中存放的是地址值,因此不能执行*p=40语句。

C. q没有指向具体的存储单元,所以*q没有实际意义。

D. q虽然指向具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句7.已有定义int k=2; int*ptr1,*ptr2;且ptr1和ptr2均已main() 指向变量k,下面不能正确执行赋值语句的是( )A. k=*ptr1+*ptr2;B.ptr2=k;C.ptr1=ptr2;D. k=*ptr1*(*ptr2);8.变量的指针,其含义是指该变量的( )A.值B.地址C.名D.一个标志9.若有语句int*point,a=4和point=&a;下面均代表地址的一组选项是( )A. a,point,*&aB.&*a,&a,*pointC. &point,&point,&aD.&a,&*point,point10.若有说明:int *p,m=5,n;以下正确的程序段是( )A. p=&n;scanf(“%d”,&p);B. p=&n; scanf(“%d”,*p);C. scanf(“%d”,&n);*p=n;D. p=&n; *p=m;11.若有说明:int p1,p2,m=5,n;以下均是正确的赋值语句的选项是( )A. p1=&m; P2=&p1;B.p1=&m; p2=&n; *p1=*p2C. p1=&m; p2=p1;Dp1=&m; p2=p112已有变量定义和函数调用语句: int a=25;print_value(&a); 下面函数的正确输出结果是( )void print_value(int *x){printf(“%d\n”,++*x);}A. 23B. 24C. 25D. 2613.下面判断正确的是( )A. char*a=”china”;等价于char *a; *a=”china”;B. char str[10]={“china”};等价于char str[10];C. char*s=”china”;等价于char str[10]D. char c[4]=”abc”,d[4]=”abc”等价于char c[4]=b[4]=”abc”;14.设char*s=”\ta\017bc”;则指针变量s指向的字符串所占的字节数是 ( )A.9B.5C.6D.715.下面能正确进行字符串赋值的操作的是( )A. char s[5]={“ABCDE”};B. char s[5]={‘A’,’B’,’C’,’D’,’E’,};C. char*s; s=”ABCDE”;D.chars;scanf(“%s”,s);16.下面程序段的运行结果是( )char*s=”abcde”; s+=2; printf(“%d”,s);A.cdeB.字符’c’C.字符’c’的地址D.无确定结果17.设有以下程序段:char s[]=”china”; char*p; p=s; 则下列叙述正确的是( )A.s和p完全相同B.数组s中的内容和指针变量p中的内容相等C.s数组长度和p所指向的字符串长度相等D.*p与s[0]相等18下面程序段的运行结果是( )char*format=”%s, a=%d, b=%d\n”;int a=1,b=10; a+=b;printf(“format,” a+=b,”, a, b);A. for,”a+=”,abB.format,”a+=b”C.a+=b,a=11,b=10D.以下结果都不对19.以下正确的程序段是( )A.char str[20]; scanf(“%s”,&str);B.char*p; scanf(“%s”,p);C.char str[20];Scanf(“%s”,&str[2]);D.char str[20], *p=str;scanf(“%s”,p[2]);20.下面程序段的运行结果是( )char str[]=”ABC”, *p=str;printf(“%d\n”,*(9+3));A. 67B. 0C.字符’C’的地址D.字符’C’21.下面程序段运行结果是( )char a[]=”language”,*p;p=a;while(*p!=’u’) {pirntf(“%c”,*p-32);p++;}A. LANGUAGEB. languageC. LANGD. language22.下面说明书不正确的是( )A.char a[10]=”china”;B.char a[10],*p=a;p=”china”;C.char*a;a=”china”;D.char a[10],*p; p=a=”china”;23. 若有说明语句char a[]=”It is mine”; char*p=”It is mine”;则以下不正确的叙述是( )A.a+1表示的是字符t的地址B.p指向另外的字符串时,字符串的长度不受限制C.p变量中存放的地址值可以改变D.a中只能存放10个字符24.若已定义char s[10];则在下面表达式中不表示s[1]的地址是( )A.s+1B.s++C.&s[0]+1D. &s[1]25 下面程序段的运行结果是( )char s[6]; s=”abcd” printf(“\”%s\”\n”,s);A”abcd” B”abcd “ C\”abcd\” D编译出错26当运行以下程序时,从键盘输入Happy!<CR> ,则下面的程序运行结果是()#include<stdio.h>#include<string.h>main(){char str [10],*p=str;gest(p); printf(“%d\n”,stre(p));}stre(char str[]){int num=0;while(*(str+num)!=’0’)num++;return(num);}A.7B.6C.5D.1027.下面程序的运行结果是( )#include<stdio.h>main(){static char a[ ]=“Language”,b[ ]=”programe”;char p1, p2; int k;p1=a; p2=b; printf(" %c”,*(p1+k));}A. gaeB. gaC. LanguageD.有语法错误28.下面程序运行结果( )#include<stdio.h>main(){int a=28,b;char s[10],*p;p=s;do{b=a%16;if(b<10) *p=b+48;else *pb+55;p++;a=a/5;}while(a>0);*p=’\0’;puts(s);}A.10B. C2C.C51D.\029.下面程序的运行结果是( )#include<stdio.h>void delch(char *s){int I,j;char *a;a=s;for(I=0,j=0;a[I]!=’\0’;I++)if(a[I]>=’0’&&a[I]<=’9’){s[j]=a[I];j++;} s[j]=’\0’;}main(){char*item=”a34bc”;delch(item);printf("\n%s",item);}A.abcB.34 c.a34 D.a34bc30.下面程序运行结果是( )#include<stdio.h>#include<string.h>main(){char*s1=”AbDeG”; char*s2”AbdEg”;s1+=2; s2+=2;printf(“%d\n”,strcmp(sl,s2));}A.正数B.负数C.零D.不确定的值31.下面的程序的运行结果是( )#include<stdio.h>#include<string.h>fun(char*s){char a[7]; s=a; strcpy(a,”look”);}main(){char *p; fun(p); puts(p);}A.look□□□B.lookC.look□□D.不确定的值32.下面的程序的运行结果是( )#include<stdio.h>main(){char *p,s[ ]=”ABCDEFG”;for(p=s; *p!=’\0’;){printf(“%s\n”,p);p++;else break;k}}A.ABCDEFG ABCDE ABC AB.ABCDEFG BCDEF CDE DC.A C E GD.ABCDEFG CDEFG EFG G33.下面和序的运行结果是( )#include<stdio.h>#incude<string.h>main(){char* p1,*p2,str[50]=”abc”;p1=”abc”; p2=”abc”;strcpy(str+1,strcat(p1,p2));printf(“%s\n”,str);}A.abcabcabcB.bcabcabcC.aabcabcD.cabcabc34.下面程序的运行结果是( )#include<stdio.h>main(){char str[]=”cdalb”;abc(str); puts(str);}abc(char*p){int I,j;for(I=0,j=0;*(p+I)!=’\0’;I++)if(*(p+I)>=’d’){*(p+j)=*(p+I); j++} C.p=b[I];*(p+j)=’\0’;}A.dalbB.cdC.dlD.c35.若有以下定义,则对a数组元素的正确引用是inta[5],*p=a;A.*&a[5]B.a+2C.*(p+5)D.*(a+2) 正确操作是()36.若有定义:int a[2][3];则对a数组的第I行,第j列元素值的正确引用是()A.*(*a+I)+j) B.(a+I)[j] C*(a+I+j) D.*(a+I)+j37.若有以下定义和语句,则对a数组的地址的正确引用为()inta[2][3],(*P)[3]; p=a;A.*(p+2)B.p[2]C.p[1]+1D.(p+1)+238.若有以下定义和语句,则对a数组元素的正确引用为()int a[2][3],(*p)[3]; p=a;A.(p+1)[0]B.*(*(p+2)+1)C.*(p[1]+1)D.p[1]+239.若有定义:int a[5];则a数组中首元素日地址可以表示为()A.&aB.a+1C.aD.&a[1]40.若有定义:int(*p)[4];则标识符p( )A.是一个指向整形变量的指针B.是一个指针数组名C.是一个指针,它指向一个含有四个整形元素的一维数组D.定义不合法41.若有以下定义和赋值语句,则以s数组的第I行第j列元素地址的合法引用为()int s[2][3]={0},(*p)[3]; p=s;A.*(*p+I)+j)B.*(p[I]+j)C.(p+I)+jD.(*(p+I))[j]42.以下与int*q[5];等价的定义语句是()A.intq[5];B.int*q;C.int*(q[5]);D.int(*q)[5];43.设有以下程序段:charstr[4][10]={“frist”,”second”,”third”,”forurth”},*strp[4];int n;for(n=0;n<4;n++) strp[n]=str[n];若k为int型变量且0<=k<4,则对字符串的不正确引用是( )A. strpB. str[k]C.strp[k]D.*strp44若有以下定义,则*(p+5)表示( )int a[10],*p=a;A.元素a[5]的地址B.元素a[5]的值C.元素a[6]的地址D.元素a[6]的值45.若有定义:int*p[4]:则标识符p( )A.是一个指向整形变量的指针B.是一个指针数组名C,是一个指针,它指向一个含有四个整形元素的一维数组D.说明不合法46.以下正确的说明语句是( )A.int*b[]={1,3,5,7,9};B.int a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};C.int a[]{1,3,5,7,9};D.int a[3][4],(*num)[4];num[1]=&a[1][3];47.若有以下定义,且0<=I<4,则不正确的赋值语句是( )int b[4][6],*p,*q[4];A.q[I]=b[I];B.p=b;C.p=b[I];D.q[I]=&b[0][0];48.若有以下定义,则p+5表示( )int a[10],*p=a;A.元素a[5]的地址B.元素a[5]的值C.元素a[6]的地址D.元素a[6]的值49.以下选项中,对指针变量p的不正确操作是()A.inta[5],*p;p=&a;B.int a[5],*P;p=a;C.inta[5];int*p=a=1000D.inta[5]; int*p1,*p2=a *p1=*p2;50.若有以下定义,且0<=I<5,则对a数组元素的非法引用是()int a[5],*p=a;A.a[1]B.*(a+1)C.*(p+1)D.*(&a+I)51.若有以下定义,则数值不为3的表达式是()int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;A.x[3]B.p1=x+3,*p1++C.p1=x+2,*(p1++)D.p1=x+2,*++p152.阅读以下程序:main(){int a[10]={2,4,6,8,10,12,14,16,18,20},*p;p=a;printf(“%x\n”,p);printf(“%x\n”,p+9);}若第一个printf语句输出的是ffca,则第二个printf语句输出的是()A.ffdd B.ffdc C.ffde D.ffcd53.设有以下定义:char *cc[2]={“1234”,”5678”};则正确的叙述是()数组的两个元素中各自存放了字符串“1234”和“5678”的首地址数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址是指针变量,它指向含有两个数组元素的字符型一维数组数组元素的值分别是“1234”和“5678”54、若有以下定义int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}int(*p)[3]=x;则能够正确表示数组元素x[1][2]的表达式是()A *((*p+1)[2])B (*p+1)+2C *(*p+5)D *(*p+1)+2)55 下面程序的运行结果是()main(){int x[5]={2,4,6,8,10},*p,**pp;p=x;pp=&p;printf(“%d”,*(p+1));printf(“%3d\n,”**pp);}A 4 4B 2 4C 2 2 D, 4 656,若有说明:char*language[]={“fortran,””basic,””pascal,”java,””c”};则表达式language[1]>*language[3]比较的是()A 字符f和字符pB 字符窜basic和字符窜javaC 字符b和字符jD 字符窜fortran和字符窜pascal57.若有说明charlanguage[]={“fortran,””basic,”,”pascal,””java,””c”}则language[2]的值是A一个字符B一个地址C一个字符窜D一个不定直58. 若有说明char*languiage []={“fortran,””basic,”pascal,”java,”c”}则以下不正确的是()nguage+2表示字符窜”pascal”的首地址nguage[2]的值是字母pnguage是一个字符行指针数组,它包含5个元素每个元素都是一个指向字符窜变量的指针nguage是一个字符型指针数组,它包含5个元素其初直分别是:fortran,basic,pascal,java,c,59.语句int(“ptr)9()的含义是()A.ptr是指一维数组的指针变量B.ptr是指向int型数据的指针变量C.ptr是指向函数的指针,该函数返回一个int型数据D.ptr 是一个函数名,该函数的反回值是指向int型数据的指针60.若有函数max(a,b)并且已使函数指针变量p指向max,当调用该函数时正确的调用方法是()A.(*p)max(,b)B.pmax(a,b)C.(p)(a,b)D.*p(a,b)61.已有函数max(a,b),为了让函数指针变量p指向函数max正确的赋值方法是()A.p=maxB.*p=maxC.p=max(a,b)D.*p=max(a,b)62.已有定义int(*p)( )指针p可以()A.代表函数的返回值B.指向函数的入口地址C.表示函数的类型D.表示函数返回值的类型63.若有以下说明和语句:char*language[]={“fortran,”basic,”pascal,”java,c,}char**p;q=language+2则语句printf(“%o/n,”*p);( )A.输出的是language[2]元素的地址B.输出的是字符窜pascalC.输出的是language[2]元素的值,它是字符窜pascal的首地址D.格式说明不正确,无法得到确定的输出64.若要对a进行++运算,则a应具有下面说明()A.int a[3][2]B.char *a[]{“12”,ab}C.char(*a)[3]D.int b[10],*a=b;。

c++指针练习题答案

c++指针练习题答案

12.不能将一个对象复制到自己。 x=12,y=22 14.Constructor5 5 Destructor5 16.2
20.Default Constructor called Default Constructor called Default Constructor called Default Constructor called Destructor called Constructor1 called Destructor called Constructor2 called Destructor called x=0,y=0 x=7,y=0 x=5,y=9 Destructor call Destructor call Destructor call
{ if((*p1)->retotal()<(*p2)->retotal()) { student *tmp=*p1; *p1=*p2; *p2=tmp; } 6. } class stack; class node { int data; node *prev; public: node(int d,node *n) { data=d; prev=n; } friend class stack; }; class stack { node * top; public: stack( ){top=0;} void push(int i); int pop( ); }; void stack::push(int i) { node *n=new node(i,top); top=n; } int stack::pop( ) { node *t=top; if(top) { top=top->prev; int c=t->data; delete t; return c; }

指针练习题及答案

指针练习题及答案

指针练习题及答案1. 请编写一个程序,交换两个变量的值,并通过指针来实现。

```c#include<stdio.h>void swap(int *a, int *b){int temp = *a;*a = *b;*b = temp;}int main(){int num1 = 10, num2 = 20;printf("交换前的值:num1=%d, num2=%d\n", num1, num2);swap(&num1, &num2);printf("交换后的值:num1=%d, num2=%d\n", num1, num2);return 0;}```2. 编写一个函数,统计字符串中某个字符出现的次数,并通过指针返回结果。

```c#include<stdio.h>int countChar(const char *str, char target){int count = 0;while(*str != '\0'){if(*str == target)count++;str++;}return count;}int main(){char str[] = "hello world";char target = 'l';int count = countChar(str, target);printf("字符 %c 出现的次数为:%d\n", target, count); return 0;}```3. 编写一个函数,找到整型数组中的最大值,并通过指针返回结果。

```c#include<stdio.h>int findMax(const int *arr, int size){int max = *arr;for(int i = 1; i < size; i++){if(*(arr+i) > max)max = *(arr+i);}return max;}int main(){int arr[] = {10, 20, 30, 40, 50};int size = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, size);printf("数组中的最大值为:%d\n", max);return 0;}```4. 编写一个函数,将字符串反转,并通过指针返回结果。

c++指针类练习题及答案

c++指针类练习题及答案

1、利用指针,编写用于交换两个整型变量值的函数。

程序运行结果如下:输入:5 6输出:6 5#include <iostream>using namespace std;void swap(int *xp,int *yp){int tmp;tmp=*xp;*xp=*yp;*yp=tmp;}int main(){int a,b;cin>>a>>b;swap(&a,&b);cout<<a<<" "<<b<<endl;return 0;}2、编写主程序,将输入字符串反序输出。

程序运行结果如下:输入:ABCDEFGHIJK输出:KJIHGFEDCBA#include<iostream>#include<cstring>using namespace std;int main(){char str[100];cin>>str;int len;len=strlen(str);char *p=&str[len-1];while(p>=str){cout<<*p;p--;}cout<<endl;return 0;}3、使用指针编写一个用于对整型序列进行排序的函数,排序方法使用简单选择排序法。

程序的运行结果如下所示:输入(第一个数是序列的长度):62 7 2 23 1输出:1 2 2 2 3 7#include <iostream>using namespace std;void selectsort(int *list,int count){for(int i=0;i<count-1;i++){int k=i;for(int j=i+1;j<count;j++)if(*(list+j)<*(list+k))k=j;if(k!=i){int tmp=*(list+i);*(list+i)=*(list+k);*(list+k)=tmp;}}}int main(){int n;cin>>n;int array[20];for(int j=0;j<n;j++)cin>>array[j];selectsort(array,n);for(int i=0;i<n;i++)cout<<array[i]<<" ";return 0;}4、用指针编写一个对整型数组进行冒泡排序函数。

小学数学3年级钟表练习题

小学数学3年级钟表练习题

小学数学3年级钟表练习题一、读时钟(50分)根据钟表上的指针,写出对应的时间。

1.a) ____________b) ____________2.a) ____________b) ____________3.a) ____________b) ____________4.a) ____________b) ____________5.a) ____________b) ____________二、指针位置(25分)根据所给的时间,在钟表上画出对应的指针位置。

1. 8:30_____________2. 4:45_____________3. 12:15_____________4. 2:20_____________5. 9:55_____________三、时间计算(25分)1. 从9点到10点过了多长时间?_____________2. 从3点到5点过了多长时间?_____________3. 从1点到9点过了多长时间?_____________4. 从6点到12点过了多长时间?____________5. 从7点到7点半过了多长时间?_____________四、翻转时间(50分)根据所给的时间写出对应的翻转时间。

1. 9:45_____________2. 12:30_____________3. 4:10_____________4. 7:20_____________5. 1:55_____________五、比较时间(50分)写出下列时间的大小关系:(大于>, 小于<, 等于=)1. 10:30 ____ 9:002. 12:45 ____ 12:303. 6:20 ____ 6:504. 3:15 ____ 3:155. 8:00 ____ 7:45六、选词填空(25分)根据句子意思,从方框中选择合适的词填空。

方框:前、后、相等、差1. 午夜12点 ______ 小时的时候。

指针经典练习题(含答案版)一

指针经典练习题(含答案版)一

指针一.填空题(20分)1. 指针变量是把内存中另一个数据的地址作为其值的变量。

2. 能够直接赋值给指针变量的整数是 0。

3. 如果程序中已有定义:int k;1)定义一个指向变量k的指针变量p的语句是 int* p = &k; 。

2)通过指针变量,将数值6赋值给k的语句是 *p = 6; 。

3)定义一个可以指向指针变量p的变量pp的语句是 int ** pp; 。

4)通过赋值语句将pp指向指针变量p的语句是 pp = &p; 。

5)通过指向指针的变量pp,将k的值增加一倍的语句是 *(*pp)*= 2; 。

4. 当定义某函数时,有一个形参被说明成int *类型,那么可以与之结合的实参类型可以是int型指针、 int型数组等。

4. 以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。

例如,输入的字符串为:556,则输出十进制整数366。

请填空。

45*8#include <stdio.h>main( ){ char *p,s[6]; int n; p=s; gets(p); n=*p-'0';while( *++p != '\0') //先++ ,后*n=n*8+*p-'0';printf("%d \n",n);}二.选择题(22分)1. 以下count函数的功能是统计substr在母串str中出现的次数。

int count(char *str,char *substr){ int i,j,k,num=0;for(i=0; ①B ;i++){for( ②B ,k=0;substr[k]==str[j];k++,j++)if(substr[ ③C ]==’\0’){num++;break;}}return num;}①A) str[i]==substr[i] B) str[i]!=‘\0’C) str[i]==‘\0’ D) str[i]>substr[i]②A) j=i+1 B) j=i C) j=i+10 D) j=1③A) k B) k++ C) k+1 D) ++k2. 以下Delblank函数的功能是删除字符串s中的所有空格(包括Tab、回车符和换行符)。

CH6-指针练习题及答案

CH6-指针练习题及答案

第六章指针练习题及答案一、填空题1、定义int a[]={1,2,3,4,5,6},*p=a;语句printf("%d",(*++p)++);的输出结果是()。

2、以下程序的执行结果是()。

main(){ char s[]="abcdefg"; char *p;p=s; printf("ch=%c\n",*(p+5)); }3、以下程序的执行结果是()。

main(){ int a[][={1,2,3,4,5,6};for(p=&a[5];p>=a;p--) printf("%d",*P);printf("\n"); }4、以下程序的执行结果是()。

main(){ int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;for(i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);}5、设包含如下程序的文件名为myprog.c,编译后键入命令:myprog one two three,则执行结果是()。

main(int argc,char *argv[]){ int i;for(i=1;i<argc;i++)printf("%s%c",argv[i],(i<argc-1)?":');}6、下面程序的运行结果是()char s[80],*sp="HELLO!";sp=strcpy(s,sp); s[0]='h'; puts(s);7、下面程序段的运行结果是()char *s1="AbcdEf",*s2="aB";s1++; t=(strcmp(s1,s2)>0); printf("%d\n",t);8、下面程序段的运行结果是()char str[]="abc\0def\0ghi"; char *p=str; printf("%s",p+5)9、若有以下定义和语句:int a[4]={0,1,2,3},*p; p=&a[1]; 则++(*p)的值是()。

指针 练习题

指针 练习题

指针练习题指针是C语言中非常重要的概念之一。

掌握指针的使用和理解对于C语言程序的编写至关重要。

本文将介绍一些指针的练习题,帮助读者巩固对指针的理解和应用。

练习题一:交换变量的值请编写一个函数,使用指针作为参数,交换两个整型变量的值。

函数原型为:void swap(int* p1, int* p2);在主函数中调用该函数进行测试,并输出交换后的结果。

练习题二:查找数组中的最大值和最小值请编写一个函数,使用指针作为参数,实现在一个整型数组中查找最大值和最小值的功能。

函数原型为:void findMinMax(int* arr, int size, int* max, int* min);其中,arr表示整型数组的首地址,size表示数组的大小,max和min分别表示最大值和最小值的指针。

在主函数中调用该函数进行测试,并输出最大值和最小值。

练习题三:统计字符出现次数请编写一个函数,使用指针作为参数,统计一个字符串中某个字符的出现次数。

函数原型为:int countChar(char* str, char ch);其中,str表示字符串的首地址,ch表示要统计的字符。

在主函数中调用该函数进行测试,并输出字符出现的次数。

练习题四:字符串反转请编写一个函数,使用指针作为参数,将一个字符串进行反转。

函数原型为:void reverseString(char* str);其中,str表示字符串的首地址。

在主函数中调用该函数进行测试,并输出反转后的字符串。

练习题五:动态分配内存并初始化请编写一个函数,使用指针作为参数,动态分配一块内存,并将其中的每个元素初始化为给定的初始值。

函数原型为:int* initArray(int size, int initialValue);其中,size表示要分配的内存块的大小,initialValue表示初始化的值。

在主函数中调用该函数进行测试,并输出分配的内存块中的元素。

通过以上的练习题,读者可以进一步巩固和提升对指针的理解和应用。

一年级数学有钟表的练习题

一年级数学有钟表的练习题

一年级数学有钟表的练习题时钟是一种用来测量时间的仪器,而在小学数学中,学生常常会遇到与钟表相关的练习题。

这些练习题既可以帮助学生巩固对于时间概念的理解,同时也能够培养学生对于观察和分析的能力。

下面是一些适合一年级学生的钟表练习题,帮助他们在愉快的学习中巩固时间的概念。

练习题一:时钟上的数字在时钟上,我们可以看到十二个数字,分别代表了一天中的十二个小时。

请你在下面的空格中写出时钟上各个数字所代表的时间。

1. 1表示______点。

2. 5表示______点。

3. 9表示______点。

4. 12表示______点。

5. 6表示______点。

练习题二:时间的指针时钟上有两个指针,一个长指针和一个短指针。

下面是一些关于指针的练习题,请你根据题目中的要求,找出指针所指的时间。

1. 当长指针指向12时,短指针指向几点?2. 当长指针指向3时,短指针指向几点?3. 当长指针指向9时,短指针指向几点?4. 当短指针指向6时,长指针指向几点?5. 当短指针指向2时,长指针指向几点?练习题三:时钟的时间读法对于每个指针所指的时间,我们可以使用特定的读法来表示。

请你阅读下面的句子,并在空格中填上合适的时间。

1. 当长指针指向12时,我们说“正午______点”。

2. 当长指针指向6时,我们说“下午______点”。

3. 当长指针指向9时,我们说“早上______点”。

4. 当短指针指向3时,我们说“傍晚______点”。

5. 当短指针指向9时,我们说“晚上______点”。

练习题四:时间的计算除了读取时间之外,我们还可以进行一些时间的计算。

请你解决下面的问题:1. 从8点到12点,经过了______个小时。

2. 从4点到2点,经过了______个小时。

3. 从10点到10点,经过了______个小时。

4. 从6点到8点,经过了______个小时。

5. 从2点到4点,经过了______个小时。

通过这些练习题,相信一年级的学生们能够更好地理解时钟的概念,掌握时间的读取和计算能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

B
C
4、以下能正确进行字符串赋值操作的是 A、char s[5]={"ABCDE"}; B、char s[5]={'A', 'B', 'C', 'D', 'E'}; C、char *s; *s="ABCDE"; D、char *s="ABCDE";
D
5、以下程序段的运行结果是____ char b[ ]="Basic", *p; for (p=b; p<b+5; p++) printf("%s\n", p);
CD
3、以下判断正确的是____ A、char *s="string"; 等价于char *s; *s="string"; B、char str[10]={"string"}; 等价于char str[10]; str={"string"}; C、char *s="string"; 等价于char *s; s="string"; D、char str[10]={"string"}; 等价于char str[10];*str={"strint"};
D
7、若有以下定义和语句,则对a数组元素 的正确引用是____ int a[2][3], (*p)[3]; p=a; A、(p+1)[0] B、*(*(p+2)+1) C、*(p[1]+1) D、p[1]+2
C

8、下面程序的运行结果是____ main( ) { int x[5]={1, 2, 3, 4, 5}, *p=x, **pp; pp=&p; printf("%d, ", *(p++) ); printf("%d\n", **pp); } A、1, 1 B、1, 2 C、2, 2 D、2, 3
A、
Basic asic
sic ic c
B、 B
C、
c ic sic asic Basic
D、
Basic
a
s i c
A
6、若有说明语句:int a[2][3], m, n; 且 0≤m≤1,0≤n≤2,则以下对数组元素的正 确引用形式是__ A、a[m]+n B、(a+m)[n] C、*(a+m)+n D、*(*(a+m)+m)
B

9、语句int (*ptr)( );的含义是____ A、ptr是指向一维数组的指针变量 B、ptr是指向int 型数据的指针变量 C、ptr是指向函数的指针,该函数返回一 个int 型数据 D、ptr是一个函数名,该函数的返回值是 指向int 型数Байду номын сангаас的指针
C
10、下面程序的运行结果是____
#include <stdio.h> #include <string.h> main() { int a[3][3]={{2},{4},{6}}; int k,*q=&a[0][0]; for(k=0;k<2;k++) { if(k==0) a[k][k+1]=*q+1; else ++q; printf(“%d”,*q); } } A、26 B、23 C、36 D、33
指针练习题
1、以下对指针变量的操作中,不正确的是 ___ A、int p, *q; q=&p; B、int *p, *q; q=p=NULL; C、int a=5, *p; *p=a; D、int a=5, *p, *q=&a; *p=*q;
CD
2、以下对指针变量的操作中,不正确的是 ___ A、int a, *p, *q; p=q=&a; B、int a=6, *p, *q=&a; p=q; C、int a=b=6, *p; p=&a; b=*p; D、int a, *p, *q; q=&a; p=*q;
相关文档
最新文档