指针实验
1:字符串排序
2:*字符串排序要載入<string,h>
? ? ? *在排序時控制循環次數,最后一個不用比較。
? ? ??
?
#include<stdio.h>
#include<string.h>
int main(void)
{
??? int i,j;
??? char a[5][20], t[20];
??? printf ("請輸入5個字符串:\n");
??? for (i = 0; i < 5; i++)
???
??????? scanf("%s",a[i]);
?//控制循環次數
?for (i = 1; i < 5; i++)
??? {for(j=0;j<5-i;j++)
???? if(strcmp(a[j],a[j+1])>0)
??{strcpy(t,a[j]);
???? ?strcpy(a[j],a[j+1]);
???strcpy(a[j+1],t);
??}
???
????? }
???
??? printf("排序后:\n");
??? for (i = 0; i < 5; i++)
??? printf("%s\n",a[i]);
??? return 0;
}
1.循環移位
2,*這個陳序要注意各個循環的節點,否者會出現錯誤。
? ? ? *使用了選擇排序法。
#include<stdio.h>int main()
{
?int a[60] ;
?int i,j,n,m,t;
?printf("請分別輸入數組長度(n)與移位位數(m):");
?scanf("%d%d",&n,&m);
?printf("請輸入數組:");
?for(i=0;i<n;i++){
??? ?scanf("%d",&a[i]);
?}
?for(i=n-1;i>m-1;i--)
?{?t=a[n-1];
??? for(j=n-1;j>0;j--)
?{?a[j]=a[j-1];
?}
?a[0]=t;
?}
??? printf("移位m位后數組為:");
?for(i=0;i<n;i++)
?????? printf("%d\t",a[i]);
?printf("\n");
?return 0;
} 1,拆分常數 2, *次程序調用了指針,之前無法理解其工作原理,在學習后知道指針可以直接調取任何類型數據,后 應用了自定義函數,和強制轉換的方法實施了算法。 #include<stdio.h>
void splitfloat(float x,int *intpart );
int main()
{
?//定義
?double number;
?int intpart;
?float fracepart;
?printf("Entern a number:");
?scanf("%f",&number);
?printf("%f",number);
?splitfloat(number,&intpart);
? printf("%d",intpart);
? printf("%d",fracepart);
?return 0;
} //分離整數與小數
void splitfloat(float x,int *intpart,float *fracpart)
{
?*intpart=(int)x;
?*fracpart=x-*intpart;
} 1,利用指針刪除字符 2, *利用指針尋找目標字符串,然后用空格替換, * 在判斷時直接利用字符串性質最后結尾為"\0"結束,則直接用while判斷循環 終止。 #include"stdio.h"
void delcharchar *s,char c );
int main()
{
??? char s[20],c; scanf("%s ",s);
? printf("Please entern what want delect:");
?????? scanf("%c",&c);
? ? delchar(s,c);
??? printf("%s\n",s);
?return 0;
}
//子程序 void delchar(char *s,char c )
{?? int i=0;
??? while(*(s+i)!='\0')
??? {
??????? if(*(s+i)==c)
??????? {
??????????? *(s+i)=' ';
??????? }
??????? i++;
??? }
}
?
? ? ? ? ? ?
?
轉載于:https://www.cnblogs.com/28183311141-/p/asnkjdnksj.html
總結