c指针类练习题及答案_第1页
c指针类练习题及答案_第2页
c指针类练习题及答案_第3页
c指针类练习题及答案_第4页
c指针类练习题及答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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;     

2、cin>>a>>b;  swap(&a,&b;     cout<     return 0; 2、编写主程序,将输入字符串反序输出。程序运行结果如下:输入:ABCDEFGHIJK输出:KJIHGFEDCBA#include #include using namespace std; int main(     char str100;     cin>>str; &#

3、160;   int len;     len=strlen(str;     char *p=&strlen-1;     while(p>=str              cout<<*p;         p-; &

4、#160;        cout<     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;i   &#

5、160;          int k=i;         for(int j=i+1;j             if(*(list+j<*(list+kk=j;            &#

6、160;if(k!=i                              int tmp=*(list+i;                 *(lis

7、t+i=*(list+k;                 *(list+k=tmp;                   int main(     int n;     cin>>n;

8、     int array20;     for(int j=0;j         cin>>arrayj;     selectsort(array,n;     for(int i=0;i         cout<    

9、 return 0; 4、用指针编写一个对整型数组进行冒泡排序函数。冒泡排序是指将相邻的元素进行比较,如果不符合所要求的顺序,则交换这两个元素;对整个数列中所有的元素反复运用上法,直到所有的元素都排好序为止。程序运行结果如下:输入(第一个数是数组的长度:5503 87 512 61 908输出:61 87 503 512 908#include using namespace std; void bubble_up(int *ptr,int count     for(int i=0;i     

10、0;   for (int j=count-1;j>i;j=j-1             if(*(ptr+j-1>*(ptr+j                           &

11、#160;  int tmp=*(ptr+j-1;                 *(ptr+j-1=*(ptr+j;                 *(ptr+j=tmp;       

12、0;      int main(     int n;     cin>>n;     int list100;     for(int x=0;x         cin>>listx;     bubble_up(list,n;  

13、;       for(int i=0;i             cout<             return 0; 5、编写程序,将某一个输入的位数不确定的正整数按照标准的三位分节格式输出,例如,当用户输入82668634时,程序应该输出82,668,634。程序运行结果如下

14、:输入:82668634输出:82,668,634#include using namespace std; int main(     int n,i=1; char a20,*ptr; ptr=a; cin>>n; do     if(i%4              *ptr=n%10+'0'       

15、;  n=n/10;          else *ptr=','     ptr+; i+; while(n; do     ptr-;     i-;     cout<<*ptr; while(i>1; cout< return 0; 6、编写程序,把10个整数赋予某个int型数组,然后用in

16、t型指针输出该数组元素的值。输入参数是待输出元素的个数。 输出: 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;i<9;i+           &#

17、160;  cout<<*ptr<<" "         ptr+;          cout<     return 0; 7、用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。程序运行结果如下:输入:I am 21 years old.输出(五个

18、数值依次为大、小写字母、数字、其他字符和总共含有的字符个数: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&

19、gt;='A'&&*ptr<='Z'cap+; else if(*ptr>='a'&&*ptr<='z'sma+; else if(*ptr>='0'&&*ptr<='9'num+; else oth+; ptr+; cout< cout< cout< cout< cout< return 0; 8、编写一个函数, 用于将一个字符串转换为整型数值。其原型为:int myatoi(char *s

20、tring;其中参数string为待转换的字符串(其中包括正、负号和数字,返回值为转换结果。程序运行结果如下:输入:-529输出:-529#include using namespace std; int atoi(char*string     int num=0;     int s=1;     if(*string='-'            

21、0; s=-1;         string+;          if(*string='+'              s=1;         string+;    

22、0;     while(*string!=0&&*string>='0'&&*string<='9'              num=num*10+*string-'0'         string+;      

23、0;   return s*num; int main( char str50; cin>>str; cout< return 0; 9、改善模拟梵塔问题的递归程序,打印移动过程的同时,再打印每一移动后个针上的金箔的数量。初始金箔的数量由用户输入。提示:其中关于步数和状态可用静态变量。程序的运行结果如下所示:输入:3输出:Step 0A:3 B:0 C:0Step 1:From A to C,(A:2 B:0 C:1Step 2:From A to B,(A:1 B:1 C:1Step 3:From C to B,(A:1 B:2 C:0Step

24、 4:From A to C,(A:0 B:2 C:1Step 5:From B to A,(A:1 B:1 C:1Step 6:From B to C,(A:1 B:0 C:2Step 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 (

25、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 "< void hannoi(int n,char a,char b,char c     if (n=1          

26、;    move(a,c;         step+;          else             hannoi(n-1,a,c,b;         move(a,c;  &#

27、160;      step+;         hannoi(n-1,b,a,c;      int main(     int n;     cin>>n;     step=1;     x=n;y=0;z=0;   &#

28、160; cout<<"Step 0:(A:"<     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

29、, 12.31, 70.0;程序运行结果如下:输出:77321.42#include using namespace std; int max(int a,int n     int max=a0;     for(int i=0;i         max=ai>max?ai:max;     return max; double max(double a,int n  

30、0;  double max=a0;     for(int i=0;i         max=ai>max?ai:max;     return max; int main(     int a7=19,33,69,55,77,12,52;     double b9=10.1,21.3,12.4,321.42,5.2,7.1,

31、8.3,12.31,70.0;     cout<     cout<     return 0; 11、编写一个用于在字符串中查找某字符的函数。查找成功,函数返回该字符的地址(指针),查找失败,返回的指针为NULL。编写主函数测试该函数,在主函数中输入源字符串和要查找的字符,如果找到,显示字符在源字符串中的序号;如果找不到,显示“未找到”。能找到时,程序运行结果如下:输入(第一个参数是待查找的字符串,第二个是要查找的字符:ABCDEFGHIJKLMND输出:4查

32、找不成功的情形:输入:ABCDEFGS输出:未找到#include using namespace std; char *s(char *q,char b     while(*q!=b&&*q!=0         q+;     if(*q=b         return q;     else&

33、#160;       return NULL; int main(     char a15,b;     char *k=a;     cin>>a;     cin>>b;     if(*s(a,b=b         

34、;cout<     else        cout<<"δÕÒµ½"<     return 0; 12、用递归算法编写如下程序:对于任意给定的实数X和整数k>0,计算X的K次方。递归函数的名称必须为power。程序运行结果如下:输入(依次为X和K:12.6 4输出:25204.7#include using namesp

35、ace std; double power(double x,int k     if(x=0         return 0;     else if(k=0         return 1;     else        

36、0;return x*power(x,k-1; int main(       double a,b;     cin>>a>>b;     cout<     return 0; 13、使用递归算法编写求斐波那契数列的第n项的函数,函数名必须为fib,并编出主函数进行验证。程序运行结果如下:输入:10输出:55#include using namespace std; int fib(int n

37、     if(n=0         return 0;     else if(n=1         return 1;     else        return fib(n-1+fib(n-2; int main(  

38、   int k;     cin>>k;     cout<     return 0; 14、编写一个函数,用于去掉字符串尾部的空格符,其原型为:char *mytrim(char *string;其中参数string为字符串,返回值为指向string的指针。编写主函数测试,带空格的字符串由用户输入。提示,输入字符串可以使用cin.getline(str,100;程序运行结果如下:输入(尾部带有空格的字符串:The art of computer programming 输出(字符串首尾加方括号:The art of computer programming The art of computer programming注意,输出中的方括号是为了看清字符串的边界,例中输入的字符串末尾有5个空格。#include using namespace std;  char *mytrim(char *string     char *q=string;   

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论