本文目錄一覽:
- 1、求助C語言牛人
- 2、C語言牛人請進
- 3、求助C語言牛人···很簡單的作業
- 4、那位牛人,用C語言寫一個二進制轉化為十進制的程序!!??
- 5、C語言牛人:代碼求修改?跪謝!
- 6、求C語言牛人解釋一下
求助C語言牛人
冒泡排序是:相鄰兩數兩兩比較,進行相鄰大小的交換,共進行N-1次,每輪 進行N-1-i次.核心程序段為:
for(i=0;iN-1;i++)
{
for(j=0;jN-i-1;j++)
if(a[j]a[j+1])
{temp=a[j];a[j]=a[j+1];a[j+1]=temp}
}
選折排序是:首數與後數進行兩兩相比,按大小進行交換,共進行N-1次,每輪進行N-1次,每輪進行從i+1開始N-1為止。核心程序段為:
for(i=0;iN-1;i++)
{
for(j=i+1;jN-1;j++)
if(a[i]a[j])
{temp=a[i];a[i]=a[j];a[j]=temp}
}
注意了與冒泡排序的核心段的區別在於:
(1)交換的兩個對象:冒泡是 a[j]a[j+1]
選折是 a[i]a[j]
(2)輪次的變化: 冒泡是 for(j=0;jN-i-1;j++)
選折是 for(j=i+1;jN-1;j++)
冒泡的形式是:a[n]與啊a[n+1]比較交換
選折的形式則是:
第一次 a[0]與以後的比較交換
第二次 a[1]與以後的比較交換
……..
第n次是a[n]與以後的比較交換
C語言牛人請進
# include stdio.h
# include math.h
int main (void)
{
double a,b;
double j,k;
printf(“請輸入 a = “);
scanf(“%lf”, a);
printf(“請輸入 b = “);
scanf(“%lf”, b);
j = sin(a);
k = sin(b);
printf(“b的正弦值為:%lf\n”, j);
printf(“b的正弦值為:%lf\n”, k);
if(j k)
printf(“a的正弦值大,值為:%lf\n”, j);
else
printf(“b的正弦值大,值為:%lf\n”, k);
return 0;
}
求助C語言牛人···很簡單的作業
首先,我要說的是這是很基礎的問題,需要努力啊!
我給你提供了兩種交換排序方法,在程序中選擇其中一個即可。另外給你提供了選擇排序方法。程序運行無誤。
#includestdio.h
void bubble_sort(int a[],int len)
{
int i=0,j=0;
int temp=0,flag=0; //flag 為交換標誌,對代碼優化
for(i=0;ilen;i++)
{
flag=0;
for(j=len-2;j=i;j–)
{
if(a[j+1]a[j])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=1;
}
}
if(flag!=1)
return;
}
}
void quick_sort(int a[],int low,int high)
{
int i,j,m;
if(lowhigh)
{
m=a[low];
i=low;
j=high;
while(ij)
{
while(ija[j]=m)
j–;
if(ij)
a[i++]=a[j];
while(ija[i]=m)
i++;
if(ij)
a[j–]=a[i];
}
a[i]=m;
quick_sort(a,low,i-1);
quick_sort(a,i+1,high);
}
}
void select_sort(int a[],int len)
{
int i,j,x,l;
for(i=0;ilen;i++)
{
x=a[i];
l=i;
for(j=i;jlen;j++)
{
if(a[j]x)
{
x=a[j];
l=j;
}
}
a[l]=a[i];
a[i]=x;
}
}
void main()
{
int a[10],i;
printf(“請輸入10個整數\n”);
for(i=0;i10;i++)
scanf(“%d”,a[i]);
bubble_sort(a,10);//交換排序方法一:冒泡法
// quick_sort(a,0,9);//交換排序方法二:快速排序
select_sort(a,10);//選擇排序
printf(“排序後:\n”);
for(i=0;i10;i++)
printf(“%d “,a[i]);
printf(“\n”);
}
不用急了,別忘了懸賞啊!哈哈。
那位牛人,用C語言寫一個二進制轉化為十進制的程序!!??
一下兩個程序均在VC在編譯通過。
/*
如果這個二進制數比較大的話, 大到只能用數組儲存這個二進制數,
當然如果大到轉化成10進制int存不下的情況那另當別論
*/
#includestdio.h
#includestring.h
int main()
{
char a[33];
int i, num = 0;
scanf(“%s”, a);
for(i=strlen(a)-1; i=0; i–)
{
num*=2; /*如果用位運算的話,速度會更快*/
num+=a[i]-‘0’;
}
printf(“%d\n”, num);
return 0;
}
/*
如果這個二進制數的位數不超過10位的話
可用這個程序
*/
#includestdio.h
int main()
{
int num = 0, a, j=1;
scanf(“%d”, a);
while(a)
{
num += (a%10) * j;
a /= 10;
j *= 2;
}
printf(“%d\n”, num);
return 0;
}
C語言牛人:代碼求修改?跪謝!
主要問題有4個,小問題也不少:
(1)輸入輸出沒有按照題目的格式。
(2)找最大最小的時候,只要記錄位置,不用交換元素。
(3)t1,t2根本就沒有聲明。
(4)數組最大是a[9],不是a[10]
改正後的程序為:
# includestdio.h
# includeconio.h
# define N 10
int main()
{
int N = 10;
int i, a[10], *p, *pmin, *pmax, t;
for (i = 0; i N; i++)
scanf(“%d,”, a[i]);
p = a[0]; pmax = a[0]; pmin = a[0];
for (i = 0; i N; i++)
{
if (*(p + i) *pmax)
{ pmax = (p + i); }
else if (*(p + i) *pmin)
{ pmin = (p + i); }
}//找出最大和最小的數值
t = *pmin; *pmin = a[0]; a[0] = t;
t = *pmax; *pmax = a[9]; a[9] = t;
//交換
for (i = 0; i N; i++)
printf(“%d,”, *(p + i));
printf(“\n”);
return 0;
}
結果為:
求C語言牛人解釋一下
V飄渺V上次那個解釋裏面有個地方有問題,又改寫了一下。有郵箱的話留下我重新傳給你。
#includegraphics.h
#includemath.h
#includedos.h
#define pi 3.1415926
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
void init()/* 畫圖函數 */
{int i,l,x1,x2,y1,y2;
setbkcolor(0); /* 設置背景色為黑色(顏色數值為0) */
circle(300,240,200);/* 畫圓,圓中心(300,240),半徑200,之所以如此是因為屏幕尺寸為640×480,這樣設置坐標可以使圓靠近屏幕中心 */
circle(300,240,205); /* 再畫一個同心圓,半徑205,產生具有立體感的時鐘錶盤 */
circle(300,240,5); /* 畫中心的兩個小圓,半徑分別為5,10 */
circle(300,240,10); /* 本來畫出的圓變成了橢圓,這是因為顯示器不是正方形(640×480),x,y方向不同有壓縮比,有時可設比例因子k=480/640變換成接近圓形輸出 */
line(295,60,300,80);/*以下畫圖形’XII’,均為用小線段繪製,下同 */
line(295,80,300,60);
line(302,60,302,80);
line(304,60,304,80);
line(301,60,305,60);
line(301,80,305,80);
line(468,230,468,250);/*以下畫圖形’III’ */
line(473,230,473,250);
line(478,230,478,250);
line(467,230,479,230);
line(467,250,479,250);
line(294,400,297,420);/*以下畫圖形’VI’ */
line(297,420,300,400);
line(303,400,303,420);
line(302,400,304,400);
line(302,420,304,420);
line(125,230,135,250);/*以下畫圖形’IX’ */
line(125,250,135,230);
line(122,230,122,250);
line(121,230,123,230);
line(121,250,123,250);
for(i=0;i60;i++)/* 畫錶盤上上的60個小刻度,長度為5,每個刻度代表1分鐘 */
{if(i%5==0) l=15;/* 每第5個刻度代表整點小時,長度為1 */
else l=5;
x1=200*cos(i*6*pi/180)+300;/* 利用圓的參數方程形式確定各刻度的起點坐標 */
y1=200*sin(i*6*pi/180)+240;
x2=(200-l)*cos(i*6*pi/180)+300;/* 同理確定終點坐標 */
y2=(200-l)*sin(i*6*pi/180)+240;
line(x1,y1,x2,y2);/* 從起點到終點畫線,表示各個刻度 */
}
}
main()
{
int x,y;
int gd=VGA,gm=2;/* 採用VGA驅動方式,顯示模式為2(VGAHI 分辨率640×480 16色) */
unsigned char h,m,s;/* 定義字符時,分,秒,個人感覺這裡應該定義成int型而非char型 */
struct time t[1]; /* 定義t[1]為time結構體類型 */
initgraph(gd,gm,”d:\\tc”); /* 初始化,設置屏幕為圖形工作模式,參數「d:\\tc」指定驅動程序存放的位置是d:\tc文件夾 */
init();/* 調用畫圖函數 */
setwritemode(1);/* 設置圖形方式下畫線的輸出模式,這裡為方式1(異或方式) */
gettime(t);/* 調用獲得dos形式的當前時間並存入t所指向的結構體struct time中 */
h=t[0].ti_hour;/* 小時數給h */
m=t[0].ti_min; /* 分鐘數給m */
s=t[0].ti_sec; /* 秒給s */
setcolor(7); /* 設置繪圖色為淡灰色LIGHTGRAY(顏色數值為7) */
d(150,h,30);/* 用淡灰色畫時鐘的時針,h在變化故時針會隨之變化位置,時針線段起點為錶盤的中心(300,240) */
setcolor(14);/* 設置繪圖色為黃色YELLOW(顏色數值為14) */
d(170,m,6); /* 用黃色畫時鐘的分針,m在變化故分針會隨之變化位置,分針線段起點也為錶盤的中心(300,240) */
setcolor(4);/* 設置繪圖色為紅色RED(顏色數值為4) */
d(190,s,6); /* 用紅色畫時鐘的秒針,s在變化故秒針會隨之變化位置,秒針線段起點也為錶盤的中心(300,240) */
while(!kbhit())/* 按任一鍵結束如下循環 */
{while(t[0].ti_sec==s)/* 如果換算得到的時間秒等於整秒數s */
gettime(t);/* 重新調用函數gettime獲得系統時間 */
sound(400);/* 調用發聲函數使揚聲器發頻率400Hz(人耳聽力範圍20-20000Hz)聲音 */
delay(70); /* 延時70毫秒 */
sound(200);/* 再發頻率200Hz聲音 */
delay(30);/* 延時30毫秒 */
nosound();/* 關閉揚聲器 */
setcolor(4); /* 設置繪圖色為紅色RED(顏色數值為4) */
d(190,s,6); /* 重新畫秒針 */
s=t[0].ti_sec;/* gettime獲得系統時間經換算秒數給s */
d(190,s,6);/* 再畫秒針,秒針每一秒位置變化一次 */
if (t[0].ti_min!=m)/* 如果gettime獲得系統時間計算得出的時間分和前面的m不同,說明秒針已記滿60,時間分應加1以和系統時間同步 */
{/* 分種數值增加位置必然變化 */
setcolor(14);/* 再設置畫圖顏色,畫分針原來位置 */
d(170,m,6);
m=t[0].ti_min;/* 同時把當前實際時間分給m */
d(170,m,6); /* 畫當前分針位置 */
}
if (t[0].ti_hour!=h)/* 如果gettime獲得系統時間計算得出的時間小時和前面的h不同,說明分針已記滿60,時間小時應加1以和系統時間同步 */
{ setcolor(7);/* 設置繪圖色畫時針原來位置 */
d(150,h,30);
h=t[0].ti_hour;/* 同時把當前實際時間小時給h */
d(150,h,30); /* 畫時針當前位置 */
sound(1000);/* 發頻率1000Hz聲音 */
delay(240);/* 延時240毫秒 */
nosound(); /* 關閉揚聲器 */
delay(140);/* 延時140毫秒 */
sound(2000);/* 發頻率2000Hz聲音 */
delay(240); /* 延時240毫秒 */
nosound(); /* 關閉揚聲器 */
settextstyle(0,1,1);/* 圖形方式下設置當前要顯示的文本屬性 */
outtextxy(300,420,”XII”);/* 從坐標(300,420)開始輸出顯示文本XII,由於上面已經畫出了XII,所以這句和上面一句均多餘,應該去掉 */
}
}
getch();
closegraph();
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/254093.html