#include
網(wǎng)站制作、建網(wǎng)站找專業(yè)網(wǎng)站制作公司創(chuàng)新互聯(lián)建站:定制網(wǎng)站、模板網(wǎng)站、仿站、小程序定制開發(fā)、軟件開發(fā)、成都app軟件開發(fā)公司等。做網(wǎng)站價(jià)格咨詢創(chuàng)新互聯(lián)建站:服務(wù)完善、10余年建站、值得信賴!網(wǎng)站制作電話:18980820575
int
func(int
i);
//函數(shù)的原型定義
int
main(void)
{
int
n;
float
y;
scanf_s("%d",n);
//n沒(méi)有被初始化,為任意值,此時(shí)是讀取一個(gè)值給n,刪去,直接給n初始化為5也可以
scanf_s是vs2013編譯器專用的,請(qǐng)自行改成scanf
y
=
func(n);
/*函數(shù)的調(diào)用*/
printf("%d!=%f",
n,
y);
/*for語(yǔ)句多余*/
return
0;
}
int
func(int
i)
{
int
sum=0;
if
((i
==
0)
||
(i
==
1))
sum
=
1;
else
sum
=
func(i-1)
*
i;
//
i的值沒(méi)有變化,一直都是讀入的值,不會(huì)終止遞歸。
return
sum;
}
冒泡排序的循環(huán)寫法有問(wèn)題,應(yīng)將:for (j=0; j=i; j++)
改為:for (j=0; j2-i; j++)
因?yàn)樵诘谝淮窝h(huán)中,不斷判斷相鄰兩數(shù),最終將最小數(shù)交換到最后,即a[2]的位置
在第二次循環(huán)中,再將a[2]之前數(shù)中的最小數(shù)交換到a[1]的位置,此時(shí)數(shù)組已降序排列
因此對(duì)于循環(huán)i(從0開始),每次都將a[0]~a[2-i]中的最小數(shù)交換到a[2-i]的位置
又判斷相鄰數(shù)用到了j+1,所以需要滿足j+1=2-i,即j=1-i,也可寫為j2-i
因此j從0開始,到1-i 結(jié)束,改為for (j=0; j2-i; j++)即可
修改后的代碼和運(yùn)行結(jié)果如下:
輸出正確,如果幫到你,望采納~
沒(méi)有收到返回值的原因
#includestdio.h
int
fun
(int
lim,int
aa[10])
{
int
i,j,k=0;
for(i=2;i=lim;i++)
{
for(j=2;ji;j++)
if(i%j==0)
break;
if(j=i)
aa[k++]=i;
}
return
k;
}
main
(
)
{
int
aa[10];
int
lim=10,k=0;
k=fun(lim,aa);//就是這里,要把函數(shù)返回值賦值給k,才行,主函數(shù)的k和fun函數(shù)的k是完全兩個(gè)東西
printf("%d\n",k);
}
一個(gè)函數(shù)只能有一個(gè)返回值,指針可以返回多個(gè),例如:
void aaa()
{
int *a,*c;
int a,c;
*a=a;*c=c;
a=b();c=b();
}
下面調(diào)用 *a和*c.
擴(kuò)展資料:
在C語(yǔ)言中,指針的使用非常廣泛,因?yàn)槭褂弥羔樛梢陨筛咝?、更緊湊的代碼??偟膩?lái)說(shuō),使用指針有如下好處:
1、指針的使用使得不同區(qū)域的代碼可以輕易的共享內(nèi)存數(shù)據(jù),這樣可以使程序更為快速高效;
2、C語(yǔ)言中一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)往往需要使用指針來(lái)構(gòu)建,如鏈表、二叉樹等;
3、C語(yǔ)言是傳值調(diào)用,而有些操作傳值調(diào)用是無(wú)法完成的,如通過(guò)被調(diào)函數(shù)修改調(diào)用函數(shù)的對(duì)象,但是這種操作可以由指針來(lái)完成,而且并不違背傳值調(diào)用。
參考資料來(lái)源:百度百科-指針 (編程語(yǔ)言中的一個(gè)對(duì)象)