6.1輸入3個整數,按由小到大的順序輸出
#include <iostream>
using namespace std;
int main()
{void swap(int *p1,int *p2);
int n1,n2,n3;
int *p1,*p2,*p3;
cout<<"input three integers n1,n2,n3:";
cin>>n1>>n2>>n3;
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2) swap(p1,p2);
if(n1>n3) swap(p1,p3);
if(n2>n3) swap(p2,p3);
cout<<"Now,the order is:"<<n1<<" "<<n2<<" "<<n3<<endl;
return 0;
}
void swap(int *p1,int *p2)
{int p;
p=*p1; *p1=*p2; *p2=p;
}
6.2輸入3個字符串,按由小到大順序輸出
#include <iostream>
#include <cstring>
using namespace std;
int main()
{void swap(char *,char *);
char str1[20],str2[20],str3[20];
cout<<"input three line:"<<endl;
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0) swap(str1,str2);
if(strcmp(str1,str3)>0) swap(str1,str3);
if(strcmp(str2,str3)>0) swap(str2,str3);
cout<<endl<<"Now,the order is:"<<endl;
cout<<str1<<endl<<str2<<endl<<str3<<endl;
return 0;
}
void swap(char *p1,char *p2) /* 交換兩個字符串 */
{char p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}
#include <iostream>
#include <string>
using namespace std;
int main()
{void change(string &,string &);
string str1=" ",
str2=" ",
str3=" ";
char *p1=&str1[0],*p2=&str2[0],*p3=&str3[0];
cout<<"input three line:"<<endl;
gets(p1);
gets(p2);
gets(p3);
if(str1>str2)change(str1,str2);
if(str1>str3)change(str1,str3);
if(str2>str3)change(str2,str3);
cout<<endl<<"Now,the order is:"<<endl;
cout<<str1<<endl<<str2<<endl<<str3<<endl;
return 0;
}
void change(string &st1,string &st2) /* 交換兩個字符串 */
{string st;
st=st1;st1=st2;st2=st;
}
6.3輸入10個整數,將最小的數與第一個數對換,把最大的數與最後一個數對換。寫三個函數
#include <iostream>
using namespace std;
int main()
{ void input(int *number);
void max_min_value(int *number);
void output(int *number);
int number[10];
input(number); // 調用輸入10個數的函數
max_min_value(number); // 調用交換函數
output(number); // 調用輸出函數
return 0;
}
void input(int *number) // 輸入10個數的函數
{int i;
cout<<"input 10 numbers:";
for (i=0;i<10;i++)
cin>>number[i];
}
void max_min_value(int *number) // 交換函數
{ int *max,*min,*p,temp;
max=min=number;
for (p=number+1;p<number+10;p++)
if (*p>*max) max=p; // 將大數地址賦給 max
else if (*p<*min) min=p; // 將小數地址賦給 min
temp=number[0];number[0]=*min;*min=temp; // 將最小數與第一數交換
temp=number[9];number[9]=*max;*max=temp; // 將最小數與第一數交換
}
void output(int *number) // 輸出函數
{int *p;
cout<<"now,they are: ";
for (p=number;p<number+10;p++)
cout<<*p<<" ";
cout<<endl;
return;
}
6.4有n個整數,使前面各數順序向後移m個位置,最後m個數變成最前面m個數。
#include <iostream>
using namespace std;
int main()
{void move(int *array,int n,int m);
int number[20],n,m,i;
cout<<"how many numbers?"; // 詢問共有多少個數
cin>>n;
cout<<"input "<<n<<" numbers:"<<endl; // 要求輸入n個數
for (i=0;i<n;i++)
cin>>number[i];
cout<<"how many places do you want move?"; // 詢問後移多少個位置
cin>>m;
move(number,n,m); //調用move 函數
cout<<"Now,they are:"<<endl;
for (i=0;i<n;i++)
cout<<number[i]<<" ";
cout<<endl;
return 0;
}
void move(int *array,int n,int m) //使循環後移一次的函數
{int *p,array_end;
array_end=*(array+n-1);
for (p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if (m>0) move(array,n,m); //遞歸調用,當循環次數m減至爲0時,停止調用
}
6.5有n個人圍成一圈,順序排號。從第一個人開始報數,反報到3的人退出圈子,最後留下的人原來排在第幾號。
#include <iostream>
using namespace std;
#define max 15
int main()
{
int i,k,m,n,num[max],*p;
cout<<"input number of person: n="<<endl;
cin>>n;
p=num;
for(i=0;i<n;i++) //以1~n爲序給每個人編號
*(p+i)=i+1;
i=0; //每次循環計數變量
k=0; //按123報數時的計數變量
m=0; //退出人數
while (m<n-1) //退出人數比n-1少(即未退出人數>1)
{
if (*(p+i)!=0)
k++;
if(k==3)
{
cout<<*(p+i)<<" "<<endl;//輸出out的人編號
*(p+i)=0; //出圈人設爲0
m++; //圈外人+1
k=0; //重新開始報數
}
i++; //向下移一位
if (i==n) //指針到最後一位時 重新賦值
i=0;
}
// while(*p==0)
// p++;
for (i=0;i<n;i++)
if(*(p+i)!=0)
cout <<"the last one is NO."<<*(p+i)<<endl;
return 0;
}
6.6寫一函數,求字符串長度
#include <iostream>
using namespace std;
int main()
{int length(char *p);
int len;
char str[20];
cout<<"input string:";
cin>>str;
len=length(str);
cout<<"The length of string is "<<len<<endl;
return 0;
}
int length(char *p) //求字符串長度的函數
{int n;
n=0;
while (*p!='\0')
{n++;
p++;
}
return(n);
}
6.7有一字符串,包含n個字符。寫一函數,將此字符串中從第m個字符開始的全部字符複製成爲另一個字符串
#include <iostream>
using namespace std;
int main()
{void copystr(char *,char *,int);
int m;
char str1[20],str2[20];
cout<<"input string:";
gets(str1);
cout<<"which character do you want begin to copy?";
cin>>m;
if (strlen(str1)<m)
cout<<"input error!"<<endl;
else
{copystr(str1,str2,m);
cout<<"result:"<<str2<<endl;
}
return 0;
}
/*字符串部分複製函數*/
void copystr(char *p1,char *p2,int m)
{int n;
n=0;
while (n<m-1)
{n++;
p1++;
}
while (*p1!='\0')
{*p2=*p1;
p1++;
p2++;
}
*p2='\0';
}
6.8輸入一行文字,找出其中大寫字母小寫字母空格數字其他字符各有多少
#include <iostream>
using namespace std;
int main()
{int upper=0,lower=0,digit=0,space=0,other=0,i=0;
char *p,s[20];
cout<<"input string:";
while ((s[i]=getchar())!='\n') i++;
p=&s[0];
while (*p!='\n')
{if (('A'<=*p) && (*p<='Z'))
++upper;
else if (('a'<=*p) && (*p<='z'))
++lower;
else if (*p==' ')
++space;
else if ((*p<='9') && (*p>='0'))
++digit;
else
++other;
p++;
}
cout<<"upper case:"<<upper<<endl<<"lower case:"<<lower<<endl;
cout<<"space:"<<space<<endl<<"digit:"<<digit<<endl<<"other:"<<other<<endl;
return 0;
}
6.9 3*3整型矩陣轉置 (函數)
#include <iostream>
using namespace std;
int main()
{void move(int *);
int a[3][3],*p,i;
cout<<"input matrix:"<<endl;
for (i=0;i<3;i++)
cin>>a[i][0]>>a[i][1]>>a[i][2];
p=&a[0][0];
move(p);
cout<<"Now,matrix:"<<endl;
for (i=0;i<3;i++)
cout<<a[i][0]<<" "<<a[i][1]<<" "<<a[i][2]<<endl;
cout<<endl;
return 0;
}
void move(int *pointer)
{int i,j,t;
for (i=0;i<3;i++)
for (j=i;j<3;j++)
{t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
}
6.10 將一個5*5矩陣中最大的元素放在中心,四個角分別放四個最小號的元素(依次)
#include <iostream>
using namespace std;
int main()
{void change(int *p);
int a[5][5],*p,i,j;
cout<<"input matrix:"<<endl; //輸入矩陣
for (i=0;i<5;i++)
for (j=0;j<5;j++)
cin>>a[i][j];
p=&a[0][0]; //使p指向0行0列元素
change(p); //調用函數,實現交換
cout<<"Now,matrix:"<<endl; //輸出已交換的矩陣
for (i=0;i<5;i++)
{for (j=0;j<5;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
void change(int *p) //交換函數
{int i,j,temp;
int *pmax,*pmin;
pmax=p;
pmin=p;
//找最大值和最小值的地址,並賦給 pmax,pmin
for (i=0;i<5;i++)
for (j=i;j<5;j++)
{if (*pmax<*(p+5*i+j)) pmax=p+5*i+j;
if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;
}
temp=*(p+12); //將最大值與中心元素互換
*(p+12)=*pmax;
*pmax=temp;
temp=*p; //將最小值與左上角元素互換
*p=*pmin;
*pmin=temp;
pmin=p+1;
//將a[0][1]的地址賦給pmin,從該位置開始找最小的元素
for (i=0;i<5;i++) //找第二最小值的地址賦給 pmin
for (j=0;j<5;j++)
if (((p+5*i+j)!=p) && (*pmin > *(p+5*i+j)))
pmin=p+5*i+j;
temp=*pmin; //將第二最小值與右上角元素互換
*pmin=*(p+4);
*(p+4)=temp;
pmin=p+1;
for (i=0;i<5;i++) //找第三最小值的地址賦給pmin
for (j=0;j<5;j++)
if(((p+5*i+j)!=(p+4)) && ((p+5*i+j)!=p) &&(*pmin>*(p+5*i+j)))
pmin=p+5*i+j;
temp=*pmin; // 將第三最小值與左下角元素互換
*pmin=*(p+20);
*(p+20)=temp;
pmin=p+1;
for (i=0;i<5;i++) // 找第四最小值的地址賦給pmin */
for (j=0;j<5;j++)
if (((p+5*i+j)!=p) &&((p+5*i+j)!=(p+4)) && ((p+5*i+j)!=(p+20)) && (*pmin>*(p+5*i+j)))
pmin=p+5*i+j;
temp=*pmin; //將第四最小值與右下角元素互換
*pmin=*(p+24);
*(p+24)=temp;
}
6.11 在主函數中輸入10個等長字符串,用另一函數排序。在主函數中輸出
#include <iostream>
using namespace std;
int main()
{void sort(char (*p)[6]);
int i;
char str[10][6];
char (*p)[6];
cout<<"input 10 strings:"<<endl;
for (i=0;i<10;i++)
cin>>str[i];
p=str;
sort(p);
cout<<"Now,the sequence is:"<<endl;
for (i=0;i<10;i++)
cout<<str[i]<<endl;
return 0;
}
void sort(char (*s)[6])
{int i,j;
char temp[6],*t=temp;
for (i=0;i<9;i++)
for (j=0;j<9-i;j++)
if (strcmp(s[j],s[j+1])>0)
{strcpy(t,s[j]);
strcpy(s[j],s[+j+1]);
strcpy(s[j+1],t);
}
}
#include <iostream>
#include <string>
using namespace std;
int main()
{void sort(string *);
int i;
string str[10],*p=str;
cout<<"input 10 strings:"<<endl;
for (i=0;i<10;i++)
cin>>str[i];
sort(p);
cout<<"Now,the sequence is:"<<endl;
for (i=0;i<10;i++)
cout<<str[i]<<endl;
return 0;
}
void sort(string *s)
{int i,j;
string temp;
for (i=0;i<9;i++)
for (j=0;j<9-i;j++)
if (s[j]>s[j+1])
{temp=s[j];
s[j]=s[+j+1];
s[j+1]=temp;
}
}
6.12 字符串不等長
#include <iostream>
using namespace std;
int main()
{void sort(char *[]);
int i;
char *p[10],str[10][20];
for (i=0;i<10;i++)
p[i]=str[i]; //將第i個字符串的首地址賦予指針數組p的第i個元素
cout<<"input 10 strings:"<<endl;
for (i=0;i<10;i++)
cin>>p[i];
sort(p);
cout<<"Now,the sequence is:"<<endl;
for (i=0;i<10;i++)
cout<<p[i]<<endl;
return 0;
}
void sort(char *s[])
{int i,j;
char *temp;
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)=*(s+j+1);
*(s+j+1)=temp;
}
}
6.13 用矩形法求定積分的通用函數
#include <iostream>
#include <cmath>
using namespace std;
int main()
{float integral(float (*p)(float),float a,float b,int n);
float a1,b1,a2,b2,a3,b3,c,(*p)(float);
float fsin(float); // 對fsin函數作聲明
float fcos(float); // 對fcos函數作聲明
float fexp(float); // 對fexp函數作聲明
int n=20;
cout<<"input a1,b1:"; //輸入求sin(x)定積分的下限和上限
cin>>a1>>b1;
cout<<"input a2,b2:"; //輸入求cos(x)定積分的下限和上限
cin>>a2>>b2;
cout<<"input a3,b3:"; //輸入求 e^x 定積分的下限和上限
cin>>a3>>b3;
p=fsin;
c=integral(p,a1,b1,n); // 求出sin(x)的定積分
cout<<"The integral of sin(x) is :"<<c<<endl;
p=fcos;
c=integral(p,a2,b2,n); // 求出cos(x)的定積分
cout<<"The integral of cos(x) is :"<<c<<endl;;
p=fexp;
c=integral(p,a3,b3,n); // 求出 的定積分
cout<<"The integral of exp(x) is :"<<c<<endl;
return 0;
}
float integral(float (*p)(float),float a,float b,int n)
//用矩形法求定積分的通用函數
{int i;
float x,h,s;
h=(b-a)/n;
x=a;
s=0;
for (i=1;i<=n;i++)
{x=x+h;
s=s+(*p)(x)*h;
}
return(s);
}
float fsin(float x) // 計算sin(x) 的函數
{return sin(x);}
float fcos(float x) // 計算cos(x) 的函數
{return cos(x);}
float fexp(float x) // 計算exp(x)的函數
{return exp(x);}
6.14將n個數按輸入時逆序排列
#include <iostream>
using namespace std;
int main()
{ void sort (char *p,int m);
int i,n;
char *p,num[20];
cout<<"input n:";
cin>>n;
cout<<"please input these numbers:"<<endl;
for (i=0;i<n;i++)
cin>>num[i];
p=&num[0];
sort(p,n);
cout<<"Now,the sequence is:"<<endl;
for (i=0;i<n;i++)
cout<<num[i]<<" ";
cout<<endl;
return 0;
}
void sort (char *p,int m)// 將n個數逆序排列
{int i;
char temp, *p1,*p2;
for (i=0;i<m/2;i++)
{p1=p+i;
p2=p+(m-1-i);
temp=*p1;
*p1=*p2;
*p2=temp;
}
}
6.15 有一個班4個學生,5門課。
求第一門課的平均分
找出兩門以上課程不及格的學生,輸出學號全部成績平均成績
找出平均成績在90以上或全部成績85以上的學生
#include <iostream>
using namespace std;
int main()
{void avsco(float *,float *);
void avcour1(char (*)[10],float *);
void fail2(char course[5][10],int num[],float *pscore,float aver[4]);
void good(char course[5][10],int num[4],float *pscore,float aver[4]);
int i,j,*pnum,num[4];
float score[4][5],aver[4],*pscore,*paver;
char course[5][10],(*pcourse)[10];
cout<<"input course:"<<endl;
pcourse=course;
for (i=0;i<5;i++)
cin>>course[i];
cout<<"input NO. and scores:"<<endl;
cout<<"NO.";
for (i=0;i<5;i++)
cout<<","<<course[i];
cout<<endl;
pscore=&score[0][0];
pnum=&num[0];
for (i=0;i<4;i++)
{cin>>*(pnum+i);
for (j=0;j<5;j++)
cin>>*(pscore+5*i+j);
}
paver=&aver[0];
cout<<endl<<endl;
avsco(pscore,paver); // 求出每個學生的平均成績
avcour1(pcourse,pscore); // 求出第一門課的平均成績
cout<<endl<<endl;
fail2(pcourse,pnum,pscore,paver); // 找出兩門課不及格的學生
cout<<endl<<endl;
good(pcourse,pnum,pscore,paver); // 找出成績好的學生
return 0;
}
// 求每個學生的平均成績
void avsco(float *pscore,float *paver)
{int i,j;
float sum,average;
for (i=0;i<4;i++)
{sum=0.0;
for (j=0;j<5;j++)
sum=sum+(*(pscore+5*i+j)); //累計每個學生的各科成績
average=sum/5; //計算平均成績
*(paver+i)=average;
}
}
// 求第一課程的平均成績
void avcour1(char (*pcourse)[10],float *pscore)
{int i;
float sum,average1;
sum=0.0;
for (i=0;i<4;i++)
sum=sum+(*(pscore+5*i)); //累計每個學生的得分
average1=sum/4; //計算平均成績
cout<<"course 1: "<<*pcourse<<",average score:"<<average1<<endl;
}
// 找兩門以上課程不及格的學生的函數
void fail2(char course[5][10],int num[],float *pscore,float aver[4])
{int i,j,k,labe1;
cout<<" ==========Student who failed in two courses ======= "<<endl;
cout<<"NO. ";
for (i=0;i<5;i++)
cout<<course[i]<<" ";
cout<<" average"<<endl;
for (i=0;i<4;i++)
{labe1=0;
for (j=0;j<5;j++)
if (*(pscore+5*i+j)<60.0) labe1++;
if (labe1>=2)
{cout<<num[i]<<" ";
for (k=0;k<5;k++)
cout<<*(pscore+5*i+k)<<" ";
cout<<" "<<aver[i]<<endl;
}
}
}
// 找成績優秀學生(全部課程成績在85分以上或平均成績在90分以上)的函數
void good(char course[5][10],int num[4],float *pscore,float aver[4])
{int i,j,k,n;
cout<<" ======Students whose score is good======"<<endl;
cout<<"NO. ";
for (i=0;i<5;i++)
cout<<course[i]<<" ";
cout<<" average"<<endl;
for (i=0;i<4;i++)
{n=0;
for (j=0;j<5;j++)
if (*(pscore+5*i+j)>85.0) n++;
if ((n==5)||(aver[i]>=90))
{cout<<num[i]<<" ";
for (k=0;k<5;k++)
cout<<*(pscore+5*i+k)<<" ";
cout<<" "<<aver[i]<<endl;
}
}
}
6.16 輸入一個字符串,將其中連續的數字作爲一個整數,依次存放到數組a中,統計共有多少個整數,並輸出這些數
#include <iostream>
using namespace std;
int main()
{char str[50],*pstr;
int i,j,k,m,e10,digit,ndigit,a[10],*pa;
cout<<"input a string:"<<endl;
gets(str);
cout<<endl;
pstr=&str[0]; //字符指針pstr指向數組str首元素
pa=&a[0]; //指針pa指向a數組首元素
ndigit=0; //ndigit代表有多少個整數
i=0; //i代表字符串中的第幾個字符
j=0; //j代表連續數字的位數
while(*(pstr+i)!='\0')
{if((*(pstr+i)>='0') && (*(pstr+i)<='9'))
j++;
else
{if (j>0)
{digit=*(pstr+i-1)-48; //將個數位賦予digit
k=1;
while (k<j) //將含有兩位以上數的其它位的數值累計於digit
{e10=1;
for (m=1;m<=k;m++)
e10=e10*10; //e10代表該位數所應乘的因子
digit=digit+(*(pstr+i-1-k)-48)*e10; //將該位數的數值累加於digit
k++; //位數k自增
}
*pa=digit; //將數值放在數組a中
ndigit++;
pa++; //指針pa指向a數組下一元素
j=0;
}
}
i++;
}
if (j>0) //以數字結尾字符串的最後一個數據
{digit=*(pstr+i-1)-48; //將個數位賦予digit
k=1;
while (k<j) // 將含有兩位以上數的其它位的數值累加於digit
{e10=1;
for (m=1;m<=k;m++)
e10=e10*10; //e10代表位數所應乘的因子
digit=digit+(*(pstr+i-1-k)-48)*e10; //將該位數的數值累加於digit
k++; /*位數K自增*/
}
*pa=digit; //將數值放到數組a中
ndigit++;
j=0;
}
printf("There are %d numbers in this line. They are:\n",ndigit);
j=0;
pa=&a[0];
for (j=0;j<ndigit;j++) //打印數據
cout<<*(pa+j)<<endl;
cout<<endl;
return 0;
}
6.17 實現兩個字符串的比較
#include <iostream>
using namespace std;
int main()
{int strcmp(char *p1,char *p2);
int m;
char str1[20],str2[20],*p1,*p2;
cout<<"input two strings:"<<endl;
cin>>str1;
cin>>str2;
p1=&str1[0];
p2=&str2[0];
m=strcmp(p1,p2);
cout<<"result:"<<m<<endl;
return 0;
}
int strcmp(char *p1,char *p2) // 字符串比較函數
{int i;
i=0;
while(*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return(0); //全部字符相同時返回結果0
return(*(p1+i)-*(p2+i)); //不相同時返回結果爲第一對不相同字符的ASCII碼的差值
}
6.18 輸入月份號,輸出英文月名,用指針數組處理
#include <iostream>
using namespace std;
int main()
{char *month_name[13]={"illegal month","January",
"February","March","April","May","June","July","August",
"September","October", "November","December"};
int n;
cout<<"input month:"<<endl;
cin>>n;
if (((n>=1) && n<=12))
cout<<"It is "<<*(month_name+n)<<endl;
else
cout<<"It is wrong"<<endl;
return 0;
}
6.19 用指向指針的指針的方法對5個字符串排序並輸出
#include <iostream>
using namespace std;
int main()
{void sort(char **p);
const int m=20; //定義字符串的最大長度
int i;
char **p,*pstr[5],str[5][m];
for (i=0;i<5;i++)
/*將第i個字符串的首地址賦予指針數組 pstr 的第i個元素*/
pstr[i]=str[i];
cout<<"input 5 strings:"<<endl;
for (i=0;i<5;i++)
cin>>pstr[i];
p=pstr;
sort(p);
cout<<"strings sorted:"<<endl;
for (i=0;i<5;i++)
cout<<pstr[i]<<endl;
return 0;
}
void sort(char **p) //冒泡法對5個字符串排序函數
{int i,j;
char *temp;
for (i=0;i<5;i++)
{for (j=i+1;j<5;j++)
{if (strcmp(*(p+i),*(p+j))>0) //比較後交換字符串地址
{temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
}
6.20用指向指針的指針的方法對n個整數排序並輸出(排序單獨寫成函數)
#include <iostream>
using namespace std;
int main()
{void sort(int **p,int n);
int i,n,data[10],**p,*pstr[10];
cout<<"input n:";
cin>>n;
for (i=0;i<n;i++)
/*將第i個整數的地址賦予指針數組 pstr 的第i個元素*/
pstr[i]=&data[i];
cout<<"input "<<n<<" integer numbers:"<<endl;
for (i=0;i<n;i++)
cin>>*pstr[i];
p=pstr;
sort(p,n);
cout<<"Now,the sequence is:"<<endl;
for (i=0;i<n;i++)
cout<<*pstr[i]<<" ";
cout<<endl;
return 0;
}
void sort(int **p,int n)
{int i,j,*temp;
for (i=0;i<n-1;i++)
{for (j=i+1;j<n;j++)
{if (**(p+i)>**(p+j)) //比較後交換整數地址
{temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}
}
}
int *p :一級指針,表示p所指向的地址裏面存放的是一個int類型的值
int **p :二級指針,表示p所指向的地址裏面存放的是一個指向int類型的指針(即p指向的地址裏面存放的是一個指向int的一級指針)
例如:
int i=10; //定義了一個整型變量
int *p=&i; //定義了一個指針指向這個變量
int **p1=&p; //定義了一個二級指針指向p指針
那麼取出10的值方式爲:
printf(“i=[%d]\n”,*p);
printf(“i=[%d]\n”,**p1);
就突然開始 學不會 覺得很充實