C語言指針精選習題和答案(精心整理)_第1頁
C語言指針精選習題和答案(精心整理)_第2頁
C語言指針精選習題和答案(精心整理)_第3頁
C語言指針精選習題和答案(精心整理)_第4頁
C語言指針精選習題和答案(精心整理)_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一、用指針方法編寫一個程序,輸入 3 個整數(shù),將它們按由小到大的順序輸出#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(&qu

2、ot;%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 ch120=0,ch220=0,ch320=0;p1=ch1;p2=ch2;p3=ch3;printf("No1:");scanf("%s",p1);fflush(stdin);print

3、f("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("%sn%sn%sn",p1,p2,p3);return 0;9.4 編程輸入一行文字,找出

4、其中的大寫字母,小寫字母,空格,數(shù)字,及其他字符的個數(shù)#include<stdio.h>void main()int a=0,b=0,c=0,d=0,e=0,i=0;char *p,s20;while(si=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

5、>='0'&&*p<='9')d+;else e+;p+;printf(" 大寫字母 %d 小寫字母 %dn",a,b); printf(" 空格 %d 數(shù)字 %d 非字符 %dn",c,d,e);9.5 寫一個函數(shù),將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 = *(*(matr

6、ix+j)+i);*(*(matrix+j)+i) = *(*(matrix+i)+j);*(*(matrix+i)+j) = temp; void main()int a33 = 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 ",aij);printf("n");9.6 用指向一維數(shù)組的指針做函數(shù)參數(shù)#include<stdio.h>#include<string.h>int main()13for(

7、i=0;i<10;i+) printf("%s/n",stri);return 0;void sort(char (*s)6)sint i,j;char temp6, *t;t=temp;for(i=0;i<9;i+)/i法則,for(j=0;j<9-i;j+)次;依次類推;void sort(char (*s)6);/一維數(shù)組的指針做函數(shù)參數(shù)int i;char str106;char (*p)6;/定義一維數(shù)組的指針做函數(shù)參數(shù)printf("please input string:/n");for(i=0;i<10;i+)sc

8、anf("%s",&stri);p=str;/ 將str 一維數(shù)組指針,賦值給 p;sort(p);printf("the output sequence :/n");指向一維數(shù)組的指針做函數(shù)參數(shù);應該小于9;如果小于10,那么就比較了 9+1次;按照冒泡第一次比較需要9次就是i=0到i=8共九次;第二次需要比較8if(strcmp(sj,sj+1)>0)strcpy(t,sj);strcpy(sj,sj+1);strcpy(sj+1,t);9.7 編一程序,用指針數(shù)組在主函數(shù)中輸入十個等長的字符用。用另一函數(shù)對它們排序,然后在主函數(shù)中輸出

9、10個已排好序的字符串/用指針數(shù)組處理#include<stdio.h>#include<string.h>int main()void sort(char *);int i;char str106, *p10;printf("please input 10 string:/n");for(i=0;i<10;i+)/首先將10個str的首地址賦值給 10個pi;pi=str叱將第i個字符串的首地址賦予指針數(shù)組p的第i個元素;for(i=0;i<10;i+)scanf("%s",pi);/scanf 輸入到 &p

10、isort(p);printf("the output 10 string:/n");for(i=0;i<10;i+)printf("%s/n",pi);/ 輸出到 pi;void sort(char *s口)char *temp;int i,j;for(i=0;i<9;i+)for(j=0;j<9-i;j+)if(strcmp(*(s+j),*(s+j+1)>0)temp=*(s+j);/*(s+j)指向數(shù)組指針,我想應該是字符串的首地址;所以可以直接賦值給temp指針;*(s+j)=*(s+j+1);*(s+j+1)=temp

11、; 9.8 指針 將n個數(shù)按輸入時順序的逆序排列,用函數(shù)實現(xiàn)#include <stdio.h> void reverse(int a,int n) int *p;for(p=a+n-1;p>=a;p-)printf("%4d",*p);printf("n");main() int a20,n;int i;printf("Input the length of array:");scanf("%d",&n);printf("Input the number of array:&q

12、uot;);for(i=0;i<n;i+)scanf("%d",&ai);reverse(a,n);9.9 寫一函數(shù),實現(xiàn)兩個字符串的比較。即自己寫一個strcmp 函數(shù),函數(shù)原型為:int stremp(char *p1,char *p2)設pl指向字符串Si, p2指向字符串s2。要求:當s1=s2時,返回值為0。當si不等于s2 時,返回它們二者的第一個不同字符的ASCII碼差值(如“ BOY與"BAD1,第二字母不同,"O'與"A”之差為79-65=14);如果s1>s2,則輸出正值;如果 s1<s2,

13、則輸出負值。#include <stdio.h>main() int strcmp(char *pi,char *p2);int m;char stri20,str220,*pi,*p2;printf("Input two strings:n");scanf("%s",stri);scanf("%s",str2);pi=&stri0;p2=&str20;m=strcmp(pi,p2);printf("result: %dn",m);/*兩個字符串比較的函數(shù)*/*相等時返回結果0*/不等時

14、返回結果為第一個不等字符int strcmp(char *p1,char *p2) int i;i=0;while(*(p1+i)=*(p2+i)if(*(p1+i+)='0') return(0);return(*(p1+i)-*(p2+i);/*ASCII碼的差值*/運行情況如下: Input two strings:CHINA /Chen /Result: -32 Input two strings:hello!/Hello!/Result: 0 Input two stings:dog /cat /result: 19.10 編一個程序,打入月份號,輸出該月的英文月名。

15、例如,輸入“3”,則輸出“March”, 要求用指針數(shù)組處理。#include <stdio.h>main() char *month_name13="illegal month","January","February","March","April","May","June","July","August","September","October","

16、;November","D ecember"int n;printf("Input month:");scanf("%d",&n);if(n<=12)&&(n>=1)printf("It is %s.n”,*(month_name+n);elseprintf("It is wrong.n");運行結果: Input month: 2It is February. Input month: 8It is August.3) Input month: 13 乙It

17、 is wrong.9.11 c語言:將字符串computer賦給一個字符數(shù)組,然后從第一個字母開始間隔地輸出該串。請用指針實現(xiàn)#include <stdio.h>#include <string.h>#define MAX_LENGTH 32int main()char strMAX_LENGTH = 0;char *pStr = (char*)&str;/1. 將字符串 computer 賦給一個字符數(shù)組strcpy(str, "computer");/2. 然后從第一個字母開始間隔地輸出該串while(*pStr != '0&#

18、39; )printf("%cn", *pStr);pStr+;return 1;9.12 從鍵盤上輸入一個字符串,按后按照下面要求輸出一個新字符串, 新的字符串是在原來字符串中, 每兩個字符之間插入一個空格, 如原來的字符串為“ abcd” , 新產生的字符串應為“ a b c d ”編寫一個程序咯用 C 就是輸出的字符是 每兩個字符之間有一個空格#include<stdio.h>void main()char a10,b10,i=0,j=0;printf(" 輸出字符串 ");scanf("%s",a);/ abcde

19、ffor(i=0;ai!='0'i+)bj+=ai;bj+=' 'bj='0'printf("%s",b);9.13 設有一數(shù)列,包含 10 個數(shù),已按升序排好?,F(xiàn)要求編一程序,它能夠把從指定位置開始的 n 個數(shù)按逆序重新排列并輸出新的完整數(shù)列。 進行逆序處理時要求使用指針方法(例如:原數(shù)列為 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,若要求把從第4 個數(shù)開始的 5個數(shù)按逆序重新排列,則得到新數(shù)列為 2, 4, 6, 16, 14, 12, 10, 8 , 18, 20 。 )#include &l

20、t;iostream.h>void method(int n,int m,int *a)int *p=a,*q=new intm;p=p+n-1;for(int i=0;i<m;i+)qi=*p;p+;p=p-m;for(i=0;i<m;i+)*p=qm-1-i;p+;int main()int a10=2,4,6,8,10,12,14,16,18,20;method(4,5,a);for(int i=0;i<10;i+)cout<<ai<<' 'return 0;9.3有一字符串,包含n個字符。寫一個函數(shù),將此字符串從第m個字符

21、開始的全部字符復制成為另一個字符串并輸出void strcpyn(char *s,char *t, int n)char *p=s+n;char *q=t;while(*p)*q=*p;q+;p+;*q='0'main()char s100=0;char t100=0;int n=0;printf("input string s:n");scanf("%s",s);printf("input start n:n");scanf("%d",&n);strcpyn(s,t,n);puts(t);

22、-實驗 101. 設計函數(shù)char *insert(s1,s2,n), 用指針實現(xiàn)在字符串 s1 中的指定位置n 處插入字符串s2#include <stdio.h>char* insert(char* s1,char* s2,int n)int j=0;char* ss=new char100;char* tsptr=ss;for(int i=0;i<n;i+)*ss+=*s1+;while(*s2!='0')*ss+=*s2+;while(*s1!='0')*ss+=*s1+;*ss='0'return tsptr;void main()char s1="123456789"char s2="1234"char* ss=insert(s1,s2,4);printf("%s",ss);2. 利用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論