#include stdio.h
目前成都創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設、域名、虛擬主機、網(wǎng)站托管維護、企業(yè)網(wǎng)站設計、桑珠孜網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
int Allfactors(int n)
{
int i;
for(i=1;i=n;i++)
{
if(n%i==0)
printf("%d\t",i);
}
printf("\n");
return i;
}//這里定義了一個求某整數(shù)所有約數(shù)的函數(shù) 應該沒錯 單獨運行可以輸出//
void main()
{
int a;
printf("Please input an int:\n");
scanf("%d",a);
printf("Your int is:\n");
int n;
n=Allfactors(a);//從這里開始不會了 我想調(diào)用這個輸出約數(shù)的函數(shù) 應該怎么寫啊 這么寫不對 //
printf("the factors of your number are:%d\n",n);
}
試試這個?
輸入:scanf("%d,%d,%f",a,b,c);
輸出:printf("%d\n",c);
printf("%d,%f,%d",a,b,c);
一:格式輸出函數(shù)printf()
1、調(diào)用形式一般為:printf("格式化控制字符串",輸出表列);
2、格式化控制字符串用于指定輸出格式,它有三種形式:
1、格式說明符:規(guī)定了相應輸出表列內(nèi)容的輸出格式,以%打頭,如%d、%o等
2、轉(zhuǎn)義字符:用來輸出轉(zhuǎn)義字符所代表的控制代碼或者特殊字符,比如常用的‘\n'、‘\t'
3、普通字符:需要原樣輸出的字符。
3、輸出表列為若干需要輸出的數(shù)據(jù)項,它與格式說明符在數(shù)量和類型上一一對應;
4、格式字符m指定輸出數(shù)據(jù)所占寬度,n對實數(shù)表示輸出n位小數(shù),對字符串表示截取的字符個數(shù),+表示右對齊,通常省略。
—表示左對齊,l用于長整型數(shù)據(jù),可加在d、o、x、u前,更多格式說明符及其組合形式如下所示:
格式字符
數(shù)據(jù)對象
輸出形式
數(shù)據(jù)輸出方法
%(+)-md
int
unsigned
int
short
unsigned
short
char
十進制整數(shù)
1、無m按實際位數(shù)輸出
2、有m輸出m位;超過m位,按實際位數(shù)輸出,不足補空格
3、有+(默認為+)右對齊(左補空格)
4、有-左對齊(右補空格)
%(+)-mo
八進制整數(shù)
%(+)-mx
十六進制整數(shù)
%(+)-mu
無符號整數(shù)
%(+)-mld
long
unsigned
long
十進制整數(shù)
%(+)-mlo
八進制整數(shù)
%(+)-mlx
十六進制整數(shù)
%(+)-mlu
無符號整數(shù)
%(+)-m.nf
float
double
十進制小數(shù)
%(+)-m.ne
十進制指數(shù)
%(+)-g
自動選用%f和%e中較短的輸出寬度輸出單、雙精度浮點數(shù)
%(+)-mc
char
int
short
單個字符
1、無m輸出單個字符
2、有m輸出m位,補空格
3、有+(默認為+)右對齊(左補空格)
4、有-左對齊(右補空格)
%(+)-m.ns
字符串
一串字符
1.無m、n按實際字符串輸出全部字符
2、有m、n僅輸出前n個字符,補空格
3.有+(默認為+)右對齊(左補空格)
4、有-左對齊(右補空格)
二:格式輸入函數(shù)scanf()
1、
調(diào)用格式一般為:scanf("格式化控制字符串",地址表列);
2、格式化控制字符串和printf()函數(shù)含義相似,所不同的是它是對輸入格式進行控制;
3、地址表列是有若干等待輸入的數(shù)據(jù)所對應的內(nèi)存單元地址組成,由逗號隔開,一般形式為a,a為變量;
4、地址表列在數(shù)量和類型上和格式化控制字符串中的格式說明符一一對應;
5、格式字符h表示輸入短型數(shù)據(jù),可用在d、o、x前面,m指定輸入數(shù)據(jù)所占寬度,
*表示對應的數(shù)據(jù)項讀入后不賦給相應的變量,更多格式說明符及其組合如下
格式字符
數(shù)據(jù)對象
輸入形式
數(shù)據(jù)輸入方法
%md
int
short
unsigned
int
unsigned
short
十進制整數(shù)
1、無m按實際位數(shù)輸入
2、有m輸入m位,不足m則跟回車鍵
%mo
八進制整數(shù)
%mx
十六進制整數(shù)
%mld
long
unsigned
long
十進制整數(shù)
%mlo
八進制整數(shù)
%mlx
十六進制整數(shù)
%mlf
float
double
十進制整數(shù)
%mle
%mc
char
單個字符
1、無m取單個字符
2、有m輸入m位,僅取第一個字符
%ms
字符串
一串字符
1、無m取回車或空格前若干字符
2、有m僅取前m字符
如果是在c++中, 這個很簡單, 使用stl中的容器類可以方便的儲存所有b的值, 然后返回給主函數(shù). 在c中, 如果事先知道循環(huán)的次數(shù), 也就是說事先知道b有多少種結(jié)果, 那也容易, 一個數(shù)組即可. 但像你給出的代碼, 就要自己寫一個 鏈表 方法, 主函數(shù)創(chuàng)建鏈表, 傳遞給函數(shù), 然后在循環(huán)里每次往鏈表里增加數(shù)據(jù), 就可以實現(xiàn)主函數(shù)得到所有b的值了.
不用說執(zhí)行fun()函數(shù)的結(jié)果是3,2,
先是x = 2, y = 3;
x = x + y = 2 + 3 = 5;此時 x= 5, y = 3;
y = x - y = 5 - 3 = 2;此時 x = 5, y = 2;
x = x - y = 5 - 2 = 3;此時x = 3, y = 2;
然后看main()函數(shù)中的printf;
注意x = 2, y = 3;是main()函數(shù)中的局部變量,當main()函數(shù)的}執(zhí)行完才跳出失效;而fun(x,y);中的
x = 3, y = 2;是fun()函數(shù)中的局部變量,在fun()函數(shù)執(zhí)行到}結(jié)束的時候就已經(jīng)不具有意義。所以printf打印的是2,3。所以結(jié)果是3,2,2,3
本題考的是你對局部變量的理解。
struct Student st;
void function(struct Student st);這種形式就是傳遞地址;
void fuction2(struct Student * pst);這種形式就是傳遞結(jié)構體的地址;
調(diào)用這兩個函數(shù)的形式如下:
function(st);
fuction2(st);
一般推薦第二種方式,因為第一種方式需要傳遞整個結(jié)構體,需要開辟sizeof(struct student)這么大的內(nèi)存空間,開銷太大,第二種方式則只需要開辟四個字節(jié)的內(nèi)存,用來存放地址;