c語言練習(xí)
2021-11-23 22:12 作者:風(fēng)菩提樹 | 我要投稿
一、兩個數(shù)交換的4種方法
1.使用第三個變量來進行替換
#include
int main()
{
int a , b ,c;
printf("請輸入a,b的值\n");
scanf("%d %d",&a,&b);
printf("交換前:a = %d,b = %d\n",a,b);
c = a;
a = b;
b = c;
printf("交換后,a=%d,b=%d\n",a,b);
return 0;
}
2.使用一個封裝函數(shù)來進行交換
#include
int swap ( int *a , int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
return 0;
}
int main()
{
?int a,b;
?printf("請輸入a,b的值\n");
scanf("%d %d",&a,&b);
printf("交換前:a = %d,b = %d\n",a,b);
swap(&a,&b);
printf("交換后:a = %d,b = %d\n",a,b);
return 0;
}
3.使用加減法來進行交換
#include
int main()
{
int a , b;
printf("請輸入a,b的值\n");
scanf("%d %d",&a,&b);//如a=10,b=20
a = a + b;//a=30
b = a - b;//b=30-20=10
a = a - b;//a=30-10=20
printf("交換后,a=%d,b=%d\n",a,b);
return 0;
}
4.使用異或來進行交換
#include
int main()
{
int a,b;
printf("請輸入a,b兩個數(shù)的值");
scanf("%d %d",&a,&b);
printf("交換前 a=%d,b=%d\n",a,b);//a=01,b=11
a = a^b;//a=10
b = a^b;//b=10^11=01
a = a^b;//a=10^01=11
printf("交換后 a=%d,b=%d\n",a,b);
return 0;
}
二、整型數(shù)組中的數(shù)據(jù)內(nèi)容從小到大排序:
1.分析的圖片

2.代碼:
#include
#include
#include
int main()
{
int a[5],i,max,j;
srand((unsigned)time(NULL));//初始化隨機數(shù)的值,以時間作為參考
/* ? 給數(shù)組a 賦值 隨機值*/
for( i = 0; i <5;i++)
{
a[i] = rand()%51 + 10;//產(chǎn)生10 到 60的隨機數(shù)
}
/* 打印數(shù)組沒排列之前的值*/
printf("%d %d %d %d %d\t",a[0], a[1],a[2],a[3],a[4]);
printf("\n");
/* 進行數(shù)組元素大小的排列*/
for ( i = 0 ;i <5;i++)
{
/* 第一輪:a[0] 與a[1] 比較 且 進行換值
a[1] 與a[2] 比較 且 進行換值
a[2] 與a[3]...
a[3] 與a[4]....
a[4]會得到最大值
第二輪 : 可以不讓a[4] 參與比較
直到第四輪結(jié)束
*/
for ( j ?= 0 ; j <4;j++
{
/* 數(shù)組元素 進行比較大小 并交換值*/
if ( a[j] > a[ j+1 ] )
{
max = a[j]; a[j] = a[j+1];
? ? a[j+1] = max;
}
}
}
//打印排列后的數(shù)組
printf("%d %d %d %d %d\t",a[0],a[1],a[2],a[3],a[4]);
printf("\n");
return 0;
}
三、遞歸函數(shù)
1)函數(shù)調(diào)用自己本身
2)使用遞歸函數(shù)的時候,一定要有中斷條件
3)代碼分析如下:
int Fun(int data)
{
int result;
if(data != 1)
{
result = data *Fun(data - 1);
return result;
}
return 1;
}
Fun(4) 是:result = 4 *fun(3)//再次調(diào)用fun(3)函數(shù)
Fun(3) ----> result = 3*fun(2)
Fun(2)--->result = 2*fun(1)--->此時執(zhí)行fun(1)函數(shù)---》返回1
則fun(2)的返回值--》2*fun(1)=2*1=1
Fun(3)的返回值--》3*fun(2) = 3*2=6
Fun(4)的返回值--》4*fun(3)=4*6=28
標(biāo)簽: