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

合集下载

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删除。

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

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

c++指针类练习题及答案1、利用指针,编写用于交换两个整型变量值的函数。

程序运行结果如下:输入:5 6输出:6 5#includeusing 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;<="" bdsfid="81" p=""></a<<"> return 0;}2、编写主程序,将输入字符串反序输出。

程序运行结果如下:输入:ABCDEFGHIJK输出:KJIHGFEDCBA#include#includeusing 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;< bdsfid="105" p=""></endl;<>return 0;}3、使用指针编写一个用于对整型序列进行排序的函数,排序方法使用简单选择排序法。

程序的运行结果如下所示:输入(第一个数是序列的长度):62 7 2 23 1输出:1 2 2 2 3 7#includeusing namespace std;void selectsort(int *list,int count){for(int i=0;i<count-1;i++)< bdsfid="122" p=""></count-1;i++)<>{int k=i;for(int j=i+1;j<count;j++)< bdsfid="126" p=""></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++)< bdsfid="142" p=""></n;j++)<>cin>>array[j];selectsort(array,n);for(int i=0;i<n;i++)< bdsfid="146" p=""></n;i++)<>cout<<array[i]<<" ";<="" bdsfid="148" p=""></array[i]<<"> return 0;}4、用指针编写一个对整型数组进行冒泡排序函数。

c语言指针编程题

c语言指针编程题

1.统计一字符串在另一个字符串中出现的次数
参考答案
2.从命令行输入两个实型数据,请比较大小并输出。

参考答案
3.输入3个数a,b,c,按大小顺序输出。

利用指针方法
参考答案
4.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

参考答案
5.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
参考答案
6.有n个人围成一圈,顺序排号。

从第一个人开始报数(从1到3报数),凡报到3的人
退出圈子,问最后留下的是原来第几号的那位。

参考答案
7.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

参考答案
8.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调
用函数1/1+1/3+…+1/n(利用指针函数)
参考答案
9.八进制转换为十进制
参考答案
10.编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之
和以及所有偶数之和。

形参n给了数组中数据的个数:利用指针odd返回奇数之和,利用指针even返回偶数之和。

例如:数组中的值依次为:1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。

参考答案
11.复制字符串(不采用库函数strcpy( ))。

参考答案。

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。

指针基础练习题

指针基础练习题

指针基础练习题
指针是C语言中非常重要的概念之一,掌握指针的基本使用方法对于理解和编写复杂的程序至关重要。

本文将提供一些指针的基础练习题,帮助读者巩固和提升对指针的理解和应用。

请读者根据每个题目的要求完成代码,并注明每一步的思路和解答。

题目一:交换两个变量的值
要求:编写一个函数,使用指针交换两个整数变量的值,并在主函数中调用该函数进行测试。

题目二:计算数组元素的平均值
要求:编写一个函数,使用指针计算给定整型数组的元素平均值,并在主函数中调用该函数进行测试。

数组长度和元素的值可由用户输入。

题目三:查找数组中的最大值和最小值
要求:编写一个函数,使用指针查找给定整型数组中的最大值和最小值,并在主函数中调用该函数进行测试。

数组长度和元素的值可由用户输入。

题目四:字符串反转
要求:编写一个函数,使用指针将输入的字符串反转,并在主函数中调用该函数进行测试。

要求不能使用任何库函数。

题目五:动态分配内存
要求:编写一个函数,使用指针动态分配内存,在堆中存储指定数量的整型数据,并在主函数中调用该函数进行测试。

要求用户输入存储的整数个数,然后输入每个整数。

题目六:指针数组的排序
要求:编写一个函数,通过指针数组实现对字符串数组的排序,并在主函数中调用该函数进行测试。

要求用户输入字符串的个数和每个字符串的值。

以上是指针基础练习题的要求和内容,通过完成这些题目,读者可以加深对指针概念和使用方法的理解,在实际编程中能够熟练地运用指针操作。

希望读者能够通过不断的练习和实践,掌握指针的应用技巧,并在编程中取得更好的成果。

c 指针练习题

c  指针练习题

c 指针练习题C指针练习题C语言中的指针是一种强大而又复杂的概念。

它允许我们直接访问内存中的数据,并对其进行操作。

然而,由于指针的灵活性和复杂性,很多初学者在使用指针时会遇到困惑和错误。

为了帮助大家更好地理解和应用指针,下面将给出一些C指针的练习题。

1. 交换两个变量的值这是一个经典的C指针练习题。

请编写一个函数,接受两个整数指针作为参数,并交换这两个指针所指向的变量的值。

例如,如果输入为a=3,b=5,调用函数后,a=5,b=3。

2. 求字符串的长度请编写一个函数,接受一个字符串指针作为参数,并返回该字符串的长度。

注意,字符串的长度是指字符串中字符的个数,不包括字符串结尾的空字符'\0'。

3. 查找数组中的最大值请编写一个函数,接受一个整型数组指针和数组的长度作为参数,并返回数组中的最大值。

提示:可以使用指针来遍历数组,并使用一个变量来保存当前的最大值。

4. 字符串拷贝请编写一个函数,接受两个字符指针作为参数,并将第一个字符串拷贝到第二个字符串中。

注意,第二个字符串必须具有足够的空间来存储第一个字符串的内容。

5. 动态分配内存请编写一个函数,接受一个整数作为参数,并动态分配一个大小为该整数的整型数组。

然后,将数组的每个元素初始化为其下标的平方,并返回指向该数组的指针。

注意,使用完数组后,必须释放动态分配的内存。

6. 字符串反转请编写一个函数,接受一个字符串指针作为参数,并将该字符串反转。

例如,如果输入为"hello",则函数应该将其改为"olleh"。

7. 指针数组排序请编写一个函数,接受一个字符串指针数组和数组的长度作为参数,并按照字母顺序对字符串进行排序。

提示:可以使用字符串比较函数strcmp来比较两个字符串的大小,并使用指针来交换字符串的位置。

8. 指向函数的指针请编写一个函数,接受一个整数和一个指向函数的指针作为参数,并使用该函数对整数进行处理。

指针编程练习题

指针编程练习题

指针编程练习题指针是一种特殊的数据类型,在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以上是几个指针编程练习题的示例,通过练习这些题目,可以提高对指针的理解和使用技巧。

c语言第8章练习题--指针

c语言第8章练习题--指针

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________。

c语言指针题目及答案

c语言指针题目及答案

c语言指针题目及答案一选择题(7分,每小题0.5分)1.C语言源程序的基本单位是( )。

A 过程B 函数C 子程序D 标识符2.下列程序的输出结果是( )。

main( ){ int a=7,b=5;printf("%d",b=b/a);}A 5B 1C 0 D不确认值3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。

A 7B 8C 9D 24.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534; a=(int)125.521%4; a=5<<2;A 125,31,1B 125,1,20C 125,31,20D 125.534,2,205.建有如下程序段,下面叙述中恰当的就是 ( )。

int k=10; while(k=0) k=k-1;A 循环继续执行一次 B循环就是无穷循环 C循环体语句一次也不继续执行 D循环体语句继续执行一次6.以下程序的输出结果为( )。

int i;void prt( ){ for(i=5;i<8;i++) printf("%c",'*');printf(" ");}main( ){ for(i=5;i<=8;i++) prt( );}A ***B *** *** *** ***C *** ***D * * *7.在C语言程序中,以下说法正确的是( )。

A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和函数的调用都不可以嵌套D函数的定义和函数的调用都可以嵌套8.以下函数调用语句中所含( )个实参。

func((e1,e2),(e3,e4,e5));A 2B 3C 5D 语法错误9.以下程序的输出结果为( )。

#define ADD(x) x*xmain( ){ int a=4,b=6,c=7,d=ADD(a+b)*c;printf("d=%d",d);}A d=70B d=80C d=140D d=70010.未知职工记录叙述如下,在Turbo C中,系统为变量w分配( )字节的空间。

C语言指针精选习题和答案

C语言指针精选习题和答案

C语言指针精选习题和答案一、用指针方法编写一个程序,输入3个整数,将它们按由小到大的顺序输出#include <stdio.h>void swap(int *pa,int *pb) {int temp;temp = *pa;*pa = *pb;*pb = temp;}void main(){int a,b,c,temp;scanf("%d%d%d",&a,&b,&c); if(a>b)swap(&a,&b);if(b>c)swap(&b,&c);if(a>c)swap(&a,&c);printf("%d,%d,%d",a,b,c); }二、C语言用指针方法输入3个字符串按由小到大顺序输出#include "stdio.h"#include "string.h"int main(int argc, char* argv[]){char *t;char *p1=NULL,*p2=NULL,*p3=NULL;char ch1[20]={0},ch2[20]={0},ch3[20]={0}; p1=ch1;p2=ch2;p3=ch3;printf("No1:");scanf("%s",p1);fflush(stdin);printf("No2:");scanf("%s",p2);fflush(stdin);printf("No3:");scanf("%s",p3);fflush(stdin);if(strcmp(p1,p2)>0){t=p1;p1=p2;p2=t;}if(strcmp(p1,p3)>0){t=p1;p1=p3;p3=t;}if(strcmp(p2,p3)>0){t=p2;p2=p3;p3=t;}printf("%s\n%s\n%s\n",p1,p2,p3);return 0;}9.4编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数#include<stdio.h>void main(){int a=0,b=0,c=0,d=0,e=0,i=0; char *p,s[20];while((s[i]=getchar())!='\n')i++; p=s;while(*p!=10){if(*p>='A'&&*p<='Z') a++;else if(*p>='a'&&*p<='z') b++;else if(*p==' ')c++;else if(*p>='0'&&*p<='9') d++;else e++;p++;}printf("大写字母 %d 小写字母 %d\n",a,b); printf("空格 %d 数字 %d 非字符 %d\n",c,d,e); }9.5写一个函数,将3 3矩阵转置 #include "stdio.h"void Transpose(int (*matrix)[3]) {int temp;int i, j;for(i=1;i<3;i++)/*转置*/{for(j=0;j<i;j++){temp = *(*(matrix+j)+i);*(*(matrix+j)+i) = *(*(matrix+i)+j);*(*(matrix+i)+j) = temp;}}}void main(){int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; Transpose(a);for(int i = 0;i<3;i++){for(int j=0;j<3;j++){printf("%d ",a[i][j]);}printf("\n");}}}9.6用指向一维数组的指针做函数参数 #include<stdio.h>#include<string.h>int main(){void sort(char (*s)[6]);//一维数组的指针做函数参数int i;char str[10][6];char (*p)[6];//定义一维数组的指针做函数参数printf("please input string:/n");for(i=0;i<10;i++)scanf("%s",&str[i]);p=str;//将str一维数组指针,赋值给p;sort(p);printf("the output sequence :/n");for(i=0;i<10;i++)printf("%s/n",str[i]);return 0;}void sort(char (*s)[6])//s指向一维数组的指针做函数参数; {int i,j;char temp[6], *t;t=temp;for(i=0;i<9;i++)//i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则,for(j=0;j<9-i;j++)//第一次比较需要9次就是i=0到i=8共九次;第二次需要比较8次;依次类推;if(strcmp(s[j],s[j+1])>0){strcpy(t,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],t);}}9.7编一程序,用指针数组在主函数中输入十个等长的字符串。

c语言-指针选择提32道+填空题12道

c语言-指针选择提32道+填空题12道

(1)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()A)*p=*q; B)p=q; C)*p=&n1; D)p=*q;(2)若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是()A)随机值B)0 C)x的地址D)p的地址(3) 以下定义语句中正确的是()A) char a='A'b='B'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a;(4) 有以下程序()main(){ int a=7,b=8,*p,*q,*r;p=&a;q=&b;r=p; p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);}程序运行后的输出结果是A) 8,7,8,7 B) 7,8,7,8 C) 8,7,7,8 D) 7,8,8,7(5) 设有定义:int a,*pA=&a;以下scanf语句中能正确为变量a读入数据的是()A) scanf(“%d”,pA) ;B) scanf(“%d”,a) ;C) scanf(“%d”,&pA) ; D) scanf(“%d”,*pA) ;(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A) p=1; B) *q=2; C) q=p; D) *p=5;(7) 有以下程序()以下是引用片段:void fun(char *a, char *b){ a=b; (*a)++; }main (){ char c1="A", c2="a", *p1, *p2;p1=&c1; p2=&c2; fun(p1,p2);printf(“%c%c\n”,c1,c2);}程序运行后的输出结果是A) Ab B) aa C) Aa D) Bb(8) 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是()A) int *i=NULL; B) float *f=NULL;scanf("%d",i); *f=10.5;C) char t="m", *c=&t; D) long *L;*c=&t; L=…\0‟;(9) 有以下程序()以下是引用片段:#inc1udemain(){ printf("%d\n", NULL); }程序运行后的输出结果是A) 0 B) 1 C) -1 D) NULL没定义,出错(10) 已定义以下函数()fun (int *p){ return *p;}该函数的返回值是A) 不确定的值B) 形参p中存放的值C) 形参p所指存储单元中的值D) 形参p的地址值(11) 下列函数定义中,会出现编译错误的是()A) max(int x, int y,int *z) B) int max(int x,y){ *z=x>y ? x:y; } {int z ;z=x>y? x:y;return z ;}C) max (int x,int y) D) int max(int x,int y){ int z; { return(x>y?x:y) ; }z=x>y?x:y; return(z);}(12) 有以下程序段()以下是引用片段:main(){ int a=5, *b, **c;c=&b; b=&a;……}程序在执行了c=&b;b=&a;语句后,表达式:**c的值是A) 变量a的地址B) 变量b中的值C) 变量a中的值D) 变量b的地址(13) 有以下程序()以下是引用片段:main(){ char a,b,c,*d;a=‟\‟; b=…\xbc‟;c=…\0xab‟; d="\017";print("%c%c%c\n",a,b,c,*d);}编译时出现错误,以下叙述中正确的是A) 程序中只有a=‟\‟;语句不正确B) b=…\xbc‟;语句不正确C) d="\0127";语句不正确D) a=‟\‟;和c=…\0xab‟;语句都不正确(14) 若有以下定义和语句()以下是引用片段:#includeint a=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则以下选项中错误的语句是AA) *q=0; B) w=p; C) *p=a; D) *p=*w;(15) 有以下程序以下是引用片段:int *f(int *x,int *y){ if(*x<*y) return x;else return y;}main(){ int a=7,b=8,*p=&a,*q=&b,*r};r=f(p,q);printf(“%d,%d,%d”,*p,*q,*r); }执行后输出结果是()A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8,7,8(16) 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()A) p=q; B) *p=*q; C) n=*q; D) p=n;(17) 有以下程序()以下是引用片段:void fun(char *c,int d){ *c=*c+1;d=d+1;printf(“%c,%c,”,*c,d);}main(){ char a=‟A‟,b=‟a‟;fun(&b,a); printf(“%c,%c\n”,a,b);}程序运行后的输出结果是A)B,a,B,a B) a,B,a,B C) A,b,A,b D) b,B,A,b(18) 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()A) scanf("%d%d%d",&a,&b,d); B) scanf("%d%d%d",&a,&b,&d);C) scanf("%d%d%d",a,b,d); D) scanf("%d%d%d",a,b,*d);(19) 若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为()A) 无确定值B) a的地址C) 512 D) 511(20) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是()A) i=*p; B) p*=*&j; C) i=&j; D) i=**p;(21) 下列程序段的输出结果是()A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2以下是引用片段: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);}(22) 下列程序的运行结果是()A) 6 3 B) 3 6 C) 编译出错D) 0 0以下是引用片段: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);}(23) 有如下程序段()int *p,a=10,b=1p=&a; a=*p+b;执行该程序段后,a的值为A) 12 B) 11 C) 10 D) 编译出错(24) 有以下函数()char fun(char *p){ return p; }该函数的返回值是A) 无确切的值B) 形参p中存放的地址值B) 一个临时存储单元的地址D) 形参p自身的地址值(25) 请选出正确的程序段()A) int *p; B) int *s, k;scanf("%d",p); *s=100;… …C) int *s, k; D) int *s, k;char *p, c; char *p, e;s=&k; s=&k;p=&c; p=&c;*p='a'; s=p;… *s=1;…(26) 若有以下定义和语句:()double r=99,*p=&r;*p=r;则以下正确的叙述是A) 以下两处的*p含义相同,都说明给指针变量p赋值B) 在"double r=99,*p=&r;"中,把r的地址赋值给了p所指的存储单元C) 语句"*p=r;"把变量r的值赋给指针变量pD) 语句"*p=r;"取变量r的值放回r中(27) 以下程序运行后,a的值是()A) 4 B) 1 C) 0 D) 运行时出错,a无定值以下是引用片段:main(){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}(28) 有以下程序()以下是引用片段:int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c, d);}输出结果是A) 50,30 B) 30,J50 C) 80,-20 D) 80,20(29) 若有定义和语句()int **pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);则输出结果是:A)10,20 B)10,10 C)20,10 D)20,20(30) 以下程序的输出结果是()以下是引用片段:#includesubl(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;} { char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A) BABBAB B) ABBBBA C) BABABA D) BAABBA(31) 若有说明:int i,j=7,*p=&i;,则与i=j;等价的语句是()A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;(32) 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。

(完整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)。

c高级试题及答案

c高级试题及答案

c高级试题及答案C高级试题及答案1. 指针与数组- 问题:如何使用指针访问数组元素?- 答案:可以通过数组名加偏移量的方式使用指针访问数组元素。

例如,如果有一个数组`int arr[5]`和一个指针`int *ptr`,那么`ptr = arr;`将指针指向数组的首元素,然后可以通过`*(ptr + i)`访问第`i+1`个元素。

2. 结构体- 问题:如何定义一个包含两个整型成员的结构体?- 答案:定义一个包含两个整型成员的结构体可以使用如下语法: ```cstruct MyStruct {int member1;int member2;};```3. 函数指针- 问题:如何定义一个指向函数的指针?- 答案:定义一个指向函数的指针需要指定函数的返回类型和参数类型。

例如,如果有一个函数`int add(int, int)`,则可以定义一个指向该函数的指针如下:```cint (*funcPtr)(int, int);funcPtr = add;```4. 递归函数- 问题:编写一个递归函数,计算一个数的阶乘。

- 答案:阶乘的递归函数可以定义如下:```cint factorial(int n) {if (n <= 1) return 1;else return n * factorial(n - 1);}```5. 动态内存分配- 问题:如何使用malloc函数动态分配内存?- 答案:使用`malloc`函数动态分配内存需要指定分配的内存大小。

例如,分配一个整型数组的内存可以这样写:```cint *array = (int*)malloc(5 * sizeof(int));```使用后记得使用`free`函数释放内存:```cfree(array);```6. 位运算- 问题:如何使用位运算符交换两个变量的值?- 答案:可以使用位运算符`^`(异或)来交换两个变量的值,而不需要使用临时变量。

C语言指针选择题

C语言指针选择题

A) *(p+2)
B) *(s+2)
C) p="ABCD"
D) s="ABC"
D 33. 设有定义语句"double d[3][5]={{1},{2},{3}},(*p)[5]=d;", 则下列表达式中值不为 0.0 的表达式是
A) *&d[1][2]
B) p[1][2]
C) *(p+1*5+2)
D) *(*p+1)+2)
C) char *s; s="ABCDE";
D) char *s; scanf("%s",&s);
C
20. 若有以下定义语句,则不能表示 a 数组元素的表达式是
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
A) *p
B) a[10]
C) *a
D) a[p-a]
B
21. 若有以下定义语句,则值为 3 的表达式是
D) *P=*P*(*q)
B 38. 设有变量定义语句"int a[2][3];",能正确表示数组 a 中元素 地址的表达式是
A) a[1]+3
B) *(a+2)
C) *(a[1]+2)
D) *(a+1)
D
6
39. 设有变量定义语句"int b[5];", 能正确引用数组 b 中元素的 表达式是
A) *&b[5]
B) A B C D
C) B
D) BCD
C
CD
D
D
D
12. 下列程序的输出结果是

指针练习题及答案

指针练习题及答案

指针练习题及答案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语言指针习题及答案

c语言指针习题及答案C语言指针习题及答案C语言作为一门广泛应用于软件开发和系统编程的编程语言,指针是其重要的特性之一。

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

本文将介绍一些常见的C语言指针习题,并提供相应的答案,帮助读者更好地理解和掌握指针的概念和用法。

1. 习题一:交换两个变量的值请编写一个函数,接受两个整型指针作为参数,实现交换两个变量的值。

例如,如果输入a=10,b=20,函数执行后,a=20,b=10。

答案:```cvoid swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}```2. 习题二:查找数组中的最大值和最小值请编写一个函数,接受一个整型数组和数组长度作为参数,返回数组中的最大值和最小值。

例如,对于数组[5, 2, 9, 1, 7],函数应该返回最大值9和最小值1。

答案:```cvoid findMinMax(int *arr, int length, int *max, int *min) {*max = *min = arr[0];for (int i = 1; i < length; i++) {if (arr[i] > *max) {*max = arr[i];}if (arr[i] < *min) {*min = arr[i];}}}```3. 习题三:计算字符串长度请编写一个函数,接受一个字符串作为参数,返回字符串的长度。

例如,对于字符串"Hello, World!",函数应该返回12。

答案:```cint stringLength(char *str) {int length = 0;while (*str != '\0') {length++;str++;}return length;}```4. 习题四:复制字符串请编写一个函数,接受两个字符串指针作为参数,将第一个字符串复制到第二个字符串中。

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

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

指针一.填空题(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、回车符和换行符)。

c语言指针例题及解析

c语言指针例题及解析

c语言指针例题及解析题目:已知 char **p 指向一个字符指针数组的首地址,其中数组的每个元素指向一个字符串,要求将数组中的字符串按顺序输出。

解析:首先,需要理解指针的指针的含义。

在 C 语言中,指针的指针是指向指针的指针,即一个指针变量中存储的是另一个指针变量的地址。

在本题中,char **p 指向一个字符指针数组的首地址,即 p 是一个指向指针的指针变量。

接下来,需要了解如何通过指针访问数组元素。

在 C 语言中,可以通过解引用运算符 * 来访问指针所指向的内容。

在本题中,数组的每个元素指向一个字符串,因此可以通过*p[i] 来访问第 i 个字符串。

最后,需要使用 printf 函数输出字符串。

在 C 语言中,printf 函数用于格式化输出,可以通过 %s 格式化符来输出字符串。

根据以上解析,可以使用以下代码实现题目要求的功能:c#include <stdio.h>int main() {char *strs[] = {"hello", "world", "C","language"};char **p = strs; // p 指向 strs 的首地址// 输出每个字符串for (int i = 0; i < 4; i++) {printf("%s\n", *p[i]); // 通过解引用运算符 * 来访问第 i 个字符串}return 0;}在上面的代码中,首先定义了一个字符指针数组 strs,其中包含了四个字符串。

然后定义了一个指向指针的指针变量 p,并将其初始化为 strs 的首地址。

接下来使用 for 循环遍历数组中的每个字符串,并使用 printf 函数输出每个字符串。

在输出时,通过解引用运算符 * 来访问第 i 个字符串。

最后返回 0 表示程序正常退出。

C++数组指针题(含答案)

C++数组指针题(含答案)

数组指针01:逆序输出从键盘输入n个整数(n<100),存放在一个一维数组中,逆序输出能被3整除的元素,并逆序输出数组下标为3的倍数的元素。

输入格式:第一个整数为个数n,后续为n个整数输出格式:第一行能被3整除的元素,第二行为下标为3的倍数的元素,各个数值之间用空格分隔。

输入:10 2 7 9 10 5 4 3 6 8 20输出:6 3 920 3 10 2#include <iostream>using namespace std;const int MAX=100;int main(){int a[MAX],n,i;cin>>n;for(i=0;i<n;i++)cin>>a[i];for(i=n-1;i>=0;i--)if(a[i]%3==0)cout<<a[i]<<" ";cout<<endl;for(i=n-1;i>=0;i--)if(i%3==0)cout<<a[i]<<" ";cout<<endl;return 0;}数组指针02:逆序存储从键盘输入n(n<100)个整数,存放在一个一维数组a中,将它们逆序存放在另一个整型数组b中,并按b数组中下标从小到大的顺序输出下标为3的倍数的数组元素。

输入格式:第一个数为数组中元素个数n,之后为n个元素。

输出格式:下标为3的倍数的元素,各个数值之间用空格分隔。

输入:10 2 7 9 10 5 4 3 6 8 20输出:20 3 10 2#include <iostream>using namespace std;const int MAX=100;int main(){int a[MAX],b[MAX],n,i;cin>>n;for(i=0;i<n;i++){cin>>a[i];b[n-1-i]=a[i];}for(i=0;i<n;i++)if(i%3==0)cout<<b[i]<<" ";cout<<endl;return 0;}数组指针03:平均值从键盘输入任意个整数(以0结束,假设不超过100个),存放在一个一维数组中,计算这组数的平均值(实型)。

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

15 66 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;}2ABCDEFGHIJKKJIHGFEDCBA #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 11 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、用指果不符合所都排好序为止。

输入(第一个数是数组的长度)5503 87 512 61 90861 87 503 512 908 #include <iostream> using namespace std;void bubble_up(int *ptr,int count){for(int i=0;i<count;i=i+1)for (int j=count-1;j>i;j=j-1)if(*(ptr+j-1)>*(ptr+j)) {int tmp=*(ptr+j-1); *(ptr+j-1)=*(ptr+j); *(ptr+j)=tmp;}}int main(){int n;cin>>n;int list[100];for(int x=0;x<n;x++)cin>>list[x];bubble_up(list,n);for(int i=0;i<n;i++)cout<<list[i]<<" ";return 0;}5用户输入8266863482,668,634。

8266863482,668,634 #include<iostream>using namespace std;int main(){int n,i=1;char a[20],*ptr;ptr=a;cin>>n;do{if(i%4){*ptr=n%10+'0';n=n/10;}else *ptr=',';ptr++;i++;}while(n);do{ptr--;i--;cout<<*ptr;}while(i>1);cout<<endl;return 0;}610个整数赋予某个int int型指针输出该数组元素的值。

输入参数是待输出元素的个数。

1 2 3 4 5 6 7 8 9 10#include <iostream>using namespace std;int main( ){int a[]={1,2,3,4,5,6,7,8,9,10},*ptr;ptr=a;for(int i =0;i<9;i++){cout<<*ptr<<" ";ptr++; }cout<<endl;return 0;}7别指出其中大、小写字母、数字以及其他字符的个数。

I am 21 years old.输出(五个数值依次为大、小写字母、数字、其他字符和总共含有的字符个数)1102518 #include<iostream>using namespace std;int main(){char str[100];char *ptr=str;int total,cap,sma,num,oth;total=cap=sma=num=oth=0;cin.get(ptr,100);while(*ptr!=0){total++;if(*ptr>='A'&&*ptr<='Z')cap++;else if(*ptr>='a'&&*ptr<='z')sma++;else if(*ptr>='0'&&*ptr<='9')num++;else oth++;ptr++;}cout<<cap<<endl;cout<<sma<<endl;cout<<num<<endl;cout<<oth<<endl;cout<<total<<endl;return 0; }8、编写一个函数, 用于将一个字符串转换为整型数值。

其原型为: int myatoi(char *string);其中参数string为待转换的字符串(其中包括正、负号和数字)-529-529 #include<iostream>using namespace std;int atoi(char*string){int num=0;int s=1;if(*string=='-'){s=-1;string++;}if(*string=='+'){s=1;string++;}while(*string!=0&&*string>='0'&&*string<='9'){num=num*10+*string-'0';string++;}return s*num;}int main(){char str[50];cin>>str;cout<<atoi(str)<<endl;return 0;} 9的数量。

初始3Step 0 A:3 B:0 C:0)Step 1:From A to C,(A:2 B:0 C:1)Step 2:From A to B,(A:1 B:1 C:1)Step 3:From C to B,(A:1 B:2 C:0)Step 4:From A to C,(A:0 B:2 C:1)Step 5:From B to A,(A:1 B:1 C:1)Step 6:From B to C,(A:1 B:0 C:2)Step 7:From A to C,(A:0 B:0 C:3)#include <iostream> using namespace std;int step,x,y,z;void move(char from,char to){if (from=='A') x=x-1;if (from=='B') y=y-1;if (from=='C') z=z-1; if (to=='A') x=x+1;if (to=='B') y=y+1;if(to=='C') z=z+1;cout<<"Step "<<step<<":From "<<from<<" to "<<to<<",(A:"<<x<<" B:"<<y<<" C:"<<z<<")"<<endl;}void hannoi(int n,char a,char b,char c){if (n==1){move(a,c);step++;}else{hannoi(n-1,a,c,b);move(a,c);step++;hannoi(n-1,b,a,c);} }int main(){int n;cin>>n;step=1;x=n;y=0;z=0;cout<<"Step 0:(A:"<<n<<" B:0 C:0)"<<endl;hannoi(n,'A','B','C');return 0;}10、重载求数组中最大元素的函数(两值)max_element数组A{19,33,69,55,77,12,52}数组B{10.1, 21.3, 12.4, 321.42, 5.2, 7.1, 8.3, 12.31, 70.0}77321.42 #include<iostream>using namespace std;int max(int a[],int n){int max=a[0];for(int i=0;i<n;i++)max=a[i]>max?a[i]:max;return max;}double max(double a[],int n){double max=a[0];for(int i=0;i<n;i++)max=a[i]>max?a[i]:max;return max;}int main(){int a[7]={19,33,69,55,77,12,52};double b[9]={10.1,21.3,12.4,321.42,5.2,7.1,8.3,12.31,70.0}; cout<<max(a,7)<<endl;cout<<max(b,9)<<endl;return 0;}11、编写一个用于在NULL输入()ABCDEFGHIJKLMND4ABCDEFGS未找到 #include<iostream>using namespace std;char *s(char *q,char b){while(*q!=b&&*q!=0)q++;if(*q==b)return q;elsereturn NULL;}int main(){char a[15],b;char *k=a;cin>>a;cin>>b;if(*s(a,b)==b) cout<<s(a,b)-k+1<<endl;elsecout<<"?′?òμ?"<<endl;return 0;12X和整数k>0X的K次方。

相关文档
最新文档