《c++指针类练习题及答案.doc》由会员分享,可在线阅读,更多相关《c++指针类练习题及答案.doc(13页珍藏版)》请在金锄头文库上搜索。
1、1、利用指针,编写用于交换两个整型变量值的函数。程序运行结果如下:输入:5 6输出:6 5#include using namespace std; void swap(int *xp,int *yp) int tmp; tmp=*xp; *xp=*yp; *yp=tmp; int main() int a,b; cinab; swap(&a,&b); couta bendl; return 0; 2、编写主程序,将输入字符串反序输出。程序运行结果如下:输入:ABCDEFGHIJK输出:KJIHGFEDCBA#include #include using namespace std; int
2、main() char str100; cinstr; int len; len=strlen(str); char *p=&strlen-1; while(p=str) cout*p; p-; coutendl; return 0; 3、使用指针编写一个用于对整型序列进行排序的函数,排序方法使用简单选择排序法。程序的运行结果如下所示:输入(第一个数是序列的长度):62 7 2 2 3 1输出:1 2 2 2 3 7#include using namespace std; void selectsort(int *list,int count) for(int i=0;icount-1;i+
3、) int k=i; for(int j=i+1;jcount;j+) if(*(list+j)n; int array20; for(int j=0;jarrayj; selectsort(array,n); for(int i=0;in;i+) coutarrayi ; return 0; 4、用指针编写一个对整型数组进行冒泡排序函数。冒泡排序是指将相邻的元素进行比较,如果不符合所要求的顺序,则交换这两个元素;对整个数列中所有的元素反复运用上法,直到所有的元素都排好序为止。程序运行结果如下:输入(第一个数是数组的长度):5503 87 512 61 908输出:61 87 503 512
4、908#include using namespace std; void bubble_up(int *ptr,int count) for(int i=0;ii;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; cinn; int list100; for(int x=0;xlistx; bubble_up(list,n); for(int i=0;in;i+) coutlisti ; return 0; 5、编写程序,将某一个输入的位数
5、不确定的正整数按照标准的三位分节格式输出,例如,当用户输入82668634时,程序应该输出82,668,634。程序运行结果如下:输入:82668634输出:82,668,634#include using namespace std; int main() int n,i=1; char a20,*ptr; ptr=a; cinn; do if(i%4) *ptr=n%10+0; n=n/10; else *ptr=,; ptr+; i+; while(n); do ptr-; i-; cout1); coutendl; return 0; 6、编写程序,把10个整数赋予某个int型数组,然
6、后用int型指针输出该数组元素的值。输入参数是待输出元素的个数。 输出: 1 2 3 4 5 6 7 8 9 10注:数组元素之间空一个空格。 #include using namespace std; int main( ) int a=1,2,3,4,5,6,7,8,9,10,*ptr; ptr=a; for(int i =0;i9;i+) cout*ptr ; ptr+; coutendl; return 0; 7、用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。程序运行结果如下:输入:I am 21 year
7、s old.输出(五个数值依次为大、小写字母、数字、其他字符和总共含有的字符个数):1102518#include using namespace std; int main() char str100; 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=a&*ptr=0&*ptr=9)num+; else oth+; ptr+; coutcapendl; coutsmaendl; coutnumen
8、dl; coutothendl; couttotalendl; return 0; 8、编写一个函数, 用于将一个字符串转换为整型数值。其原型为:int myatoi(char *string);其中参数string为待转换的字符串(其中包括正、负号和数字),返回值为转换结果。程序运行结果如下:输入:-529输出:-529#include using namespace std; int atoi(char*string) int num=0; int s=1; if(*string=-) s=-1; string+; if(*string=+) s=1; string+; while(*st
9、ring!=0&*string=0&*stringstr; coutatoi(str)endl; return 0; 9、改善模拟梵塔问题的递归程序,打印移动过程的同时,再打印每一移动后个针上的金箔的数量。初始金箔的数量由用户输入。提示:其中关于步数和状态可用静态变量。程序的运行结果如下所示:输入:3输出:Step 0A: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)
10、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 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; coutStep 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)