新聞中心
這個(gè)C語(yǔ)言函數(shù)題怎么做?
# include stdio.h
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),公司自成立以來(lái)始終致力于為企業(yè)提供官網(wǎng)建設(shè)、移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)開(kāi)發(fā)(微信小程序開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、重慶APP開(kāi)發(fā)公司等),并且包含互聯(lián)網(wǎng)基礎(chǔ)服務(wù)(域名、主機(jī)服務(wù)、企業(yè)郵箱、網(wǎng)絡(luò)營(yíng)銷(xiāo)等)應(yīng)用服務(wù);以先進(jìn)完善的建站體系及不斷開(kāi)拓創(chuàng)新的精神理念,幫助企業(yè)客戶(hù)實(shí)現(xiàn)互聯(lián)網(wǎng)業(yè)務(wù),嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶(hù)的一致贊譽(yù)。
# include math.h
int main(void)
{
//把三個(gè)系數(shù)保存到計(jì)算機(jī)中
int a = 1; //=不表示相等,表示賦值
int b = 5;
int c = 6;
double delta; //delt存放的是 b*b - 4*a*c
double x1; //存放一元二次方程的其中一個(gè)解
double x2; //存放一元二次方程的其中一個(gè)解
delta = b*b - 4*a*c;
if (delta 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("該一元二次方程有兩個(gè)解, x1 = %f, x2 = %f\n", x1, x2);
}
else if (delta == 0)
{
x1 = (-b) / (2*a);
x2 = x1; //右邊賦給左邊
printf("該一元二次方程有一個(gè)唯一解, x1 = x2 = %f\n", x1);
}
else
{
printf("無(wú)解\n");
}
return 0;
}
c語(yǔ)言中 函數(shù)怎么做?
在使用一個(gè)函數(shù)之前必須先對(duì)他進(jìn)行聲明: //void B();聲明B函數(shù)的存在。void A(){B();//非法,程序執(zhí)行到此時(shí)并不知道B函數(shù)的存在。
C語(yǔ)言函數(shù)編程題
修改后的C語(yǔ)言程序:
#include?stdio.h?
void?triangle(int?g)
{
int?n=1,?m; /*?修改處1?*/
for(n;n=g;?n++)
{
for(m=1;m=2*n-1;m++) /*?修改處2?*/
putchar('*');
putchar('\n');
}
}
void?rectangle(int?g)
{
int?n=1,?m; /*?修改處3?*/
for(n;n=g;n++)
{
for(m=1;m=3;m++) /*?修改處4?*/
putchar('*');
putchar('\n');
}
}
int?main()
{
int?i,k;
printf("請(qǐng)輸入行數(shù)(大于3):");
scanf("%d",i);
printf("請(qǐng)選擇圖形:1---三角形??\t2---矩形\t3---小旗?:");
scanf("%d",k);
if(k==1)
{?
triangle(i);
}
if(k==2)
{?
rectangle(i);
}
if(k==3)
{?
triangle(i);
rectangle(i);
}
return?0;
}
請(qǐng)問(wèn)這道c語(yǔ)言題怎么做?
從main函數(shù)開(kāi)始,逐句分析:
main函數(shù)的第一句定義了三個(gè)int(整型)變量a, i, k,a的值被初始化為4;
第二句是一個(gè)循環(huán),該循環(huán)將i的值定義為0,當(dāng)i的值小于2時(shí),循環(huán)條件通過(guò),每循環(huán)一次,i的值就會(huì)加1,由此可知,該循環(huán)會(huì)執(zhí)行兩次。
在循環(huán)體中,包含了語(yǔ)句k=f(a++);,由后置遞增符的性質(zhì)可知,后置遞增符會(huì)先使用變量的值,使用完后,對(duì)變量進(jìn)行遞增。由此可知,傳入函數(shù)的值即為a的值。
進(jìn)入函數(shù),f(int a)中的a的值即為傳入的值,為4。逐句分析f()函數(shù):
第一句,定義整型變量b的值為0,該變量的生存期和作用域?yàn)檫@個(gè)函數(shù)。
第二句,定義靜態(tài)整型變量c的值為9,該變量的作用域?yàn)檫@個(gè)函數(shù),但是生存期為整個(gè)文件。
第三句,由于使用的是后置遞增符,先使用值,后遞增,所以c的值被賦給a后才會(huì)增加,后接b++。本語(yǔ)句結(jié)束后,c和b的值都增加了1,c的值變成了10,b的值變成了1。
第四句,return以變量a的值作為返回值。
回到main函數(shù)的第二句,k的值被修改成為了f()函數(shù)的返回值,即在f()函數(shù)中a的值。要注意的是,以傳值方式傳入函數(shù)的值并不會(huì)改變值本身,而是相當(dāng)于在函數(shù)中復(fù)制了一個(gè)副本使用。
該語(yǔ)句執(zhí)行完畢后,main函數(shù)中的變量a的值增加了1。
此時(shí)是for循環(huán)的第一次循環(huán)結(jié)束,進(jìn)入第二次循環(huán),同樣的傳入a的值,由于之前遞增過(guò)一次,所以現(xiàn)在它的值是5。重新進(jìn)入f()函數(shù)。
在f()函數(shù)中,由于其他的變量的生存期是函數(shù),在上一次f()函數(shù)結(jié)束時(shí),變量b被銷(xiāo)毀了,所以重新進(jìn)入變量后,變量b的值又變回了0。但由于c的生存期沒(méi)有結(jié)束,c的值不變,所以重新進(jìn)入函數(shù)后,c的值仍然是10。c的值賦給a,所以在執(zhí)行語(yǔ)句return a;時(shí)變量a的值是10,即函數(shù)的返回值是10。返回后該值賦給k,使得k的值變成了10。循環(huán)結(jié)束,跳出循環(huán)。
第三句,執(zhí)行printf()函數(shù),屏幕上輸出的值是10。
第四句,return 0;? 程序結(jié)束。
本題主要的難點(diǎn)在于對(duì)變量生存期的判定,即對(duì)static關(guān)鍵字的理解與掌握,忽視了函數(shù)中擁有文件生存期的變量在使用時(shí)值得變化原理。同時(shí),后置遞增運(yùn)算符同樣也是引起疑惑的原因之一。
當(dāng)前文章:c語(yǔ)言編程函數(shù)題怎么做 C語(yǔ)言函數(shù)編程題
本文地址:http://fisionsoft.com.cn/article/hishdg.html