本文目錄一覽:
在C語言中怎麼環形交換三個數的值?
通過賦值,將右邊的值賦給左邊。
例如創建三個整型變量:int a,b,c;
a=10,b=20,c=30;
先定義一個中間變量:int mid;
mid=a;
a=b;
b=c;
c=mid;
這樣就把b的值賦給a,c的值賦給b,a的值賦給c
C語言 環形排序
#include stdio.h
#include time.h
#include stdlib.h
void Graph(char rect[9]);
int main()
{
int i,j,k;
char Cyc[9]={0};//Cyc[0]到Cyc[7]用於保存8個數,Cyc[8]為空白區
int CurNode=9,Temp;
srand((unsigned int)time(NULL));
for(i=0;i8;i++)//隨機產生序列
{
Cyc[i]=(rand()%8)+1;
if(CurNode==9 Cyc[i]==1) CurNode=i;//記錄數字1的位置
for(j=0;ji;j++)
{
if(Cyc[i]==Cyc[j])
{
i–;
break;
}
}
}
printf(“原始狀態:\n”);
Graph(Cyc);
printf(“開始移動:\n”);
for(i=2;i=8;i++)//下一個要找的數
{
for(j=0;j8;j++)//掃描找數
{
if(Cyc[j]==i)
{
Temp=(CurNode+1)%8;
if(i!=Cyc[Temp])//如果位置正確就不用再移
{
Cyc[8]=i;//移入中心區
Cyc[j]=0;
Graph(Cyc);
if(Temp!=j)
{
if(Tempj) j+=8;
for(k=j;kTemp;k–)
{
Cyc[k%8]=Cyc[(k-1)%8];//順時針輪轉
}
Cyc[Temp]=0;
Graph(Cyc);
}
Cyc[Temp]=Cyc[8];//從中心區移出
Cyc[8]=0;
Graph(Cyc);
}
CurNode=Temp;//記錄當前位置
break;
}
}
}
printf(“移動完成!\n”);
return 1;
}
void Graph(char rect[9])
{
int i;
char buf[9];
for(i=0;i9;i++)
{
if(rect[i]) buf[i]=rect[i]+48;
else buf[i]=’ ‘;
}
printf(“%c-%c-%c\n”,buf[0],buf[1],buf[2]);
printf(“|\\|/|\n”);
printf(“%c-%c-%c\n”,buf[7],buf[8],buf[3]);
printf(“|/|\\|\n”);
printf(“%c-%c-%c\n\n”,buf[6],buf[5],buf[4]);
}
C語言,可以的話講一下每一步唄。求大佬幫忙
思路:
圓環體積就是大圓柱-小圓柱。
總表面積就是兩個側面積+兩個大圓面積-兩個小圓面積。
算法不止一種,這裡不是重點。重點是如何轉換成編程思想。
1、根據題意,要使用結構體封裝參數,因此需定義一個包含全部圓環參數的結構類型。
2、圓環參數需要輸入,因此要定義一個輸入函數,負責輸入參數,驗證參數,並存儲到對應的結構變量。
3、解析功能需求,實現體積和面積分別需要計算圓的面積、周長和柱側面積。所以程序應包含所有實現功能的函數,分別為:計算圓面積,計算圓周長,計算圓柱側面積,計算圓柱體積。
(這裡部分函數很簡單,你可能想為什麼不直接寫在main函數中,因為這些代碼在項目中可能會被多次重複調用,寫成獨立函數調用更簡潔,且方便閱讀、修改,這是一種編程思想)。
以下是我寫代碼,已詳細備註:
#include stdio.h
#define PI 3.1415926
typedef struct ringClass//定義一個圓環結構類型
{
double r;//外圓半徑
double rh;//內圓半徑
double h;//高
}RC;
void SetRC(RC *prc);//給圓環結構輸入賦值,參數傳遞結構變量地址!
double getRP(double pr);//獲取圓周長的函數,參數是圓的半徑
double getrRA(double pr);//獲取圓面積的函數,參數是圓的半徑
double getRCArea(RC rc);//獲取圓環體表面積的函數
double getRCVolume(RC rc);//獲取圓環體體積的函數
int main( )
{
RC rc={0,0,0};//定義一個圓環結構變量並初始化
SetRC(rc);
printf(“圓環表面結為:%lf\n”,getRCArea(rc));
printf(“圓環的體積為:%lf\n”,getRCVolume(rc));
return 0;
}
void SetRC(RC *prc)//給圓環結構輸入賦值
{
printf(“請輸入分別圓環的參數:\n”);
printf(“外圓半徑:”),scanf(“%lf”,(prc-r));
printf(“內圓半徑:”),scanf(“%lf”,(prc-rh));
printf(“圓環的高:”),scanf(“%lf”,(prc-h));
if(prc-r=prc-rh)
{
printf(“無效輸入!外圓半徑必須大於內圓半徑\n\n”);
SetRC(prc);
}
else printf(“輸入成功,參數為:r=%lf,rh=%lf,h=%lf\n”,prc-r,prc-rh,prc-h);
}
double getRCVolume(RC rc)//獲取環體積
{
double d1,d2,v1,v2;
d1=getrRA(rc.r);//獲取外圓柱頂圓面積
d2=getrRA(rc.rh);//獲取內圓柱頂圓面積
v1=d1*rc.h;//獲取大圓柱體體積
v2=d2*rc.h;//獲取小圓柱體體積
return v1-v2;//圓環體積就是大圓柱-小圓柱
}
double getRCArea(RC rc)//獲取環表面積
{
double pr1,pr2,c1,c2,d1,d2;
pr1=getRP(rc.r);//獲取外圓柱體頂圓周長
pr2=getRP(rc.rh);//獲取內圓柱體頂圓周長
c1=pr1*rc.h;//獲取外圓柱體的側面積,頂圓周長乘以高
c2=pr2*rc.h;//獲取內圓柱體的側面積
d1=getrRA(rc.r);//獲取外圓柱頂圓面積
d2=getrRA(rc.rh);//獲取內圓柱頂圓面積
return c1+c2+d1+d1-d2-d2;//總表面積就是兩個側面積+兩個大圓面積-兩個小圓面積
}
double getRP(double pr)//獲取圓周長
{
return 2*PI*pr;
}
double getrRA(double pr)//獲取圓面積
{
return PI*pr*pr;
}
C語言課程 定義pi字符常量,輸入大圓,小圓半徑,求出圓環的面積
思路:圓環的面積就是大圓的面積減去小圓的面積,先定義兩個變量r1,r2,接着輸出兩個圓的差就是圓環的面積。
參考代碼:
#include stdio.h
#define PI 3.14
int main()
{
float r1,r2;
scanf(“%f %f”,r1,r2);
printf(“%.2f\n”,r1*r1*PI-r2*r2*PI);
return 0;
}
/*
輸出:
5 3
50.24
*/
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/160480.html