日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二级c语言程序设计bug,《C语言及程序设计》实践项目——发现Bug

發布時間:2025/3/8 编程问答 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二级c语言程序设计bug,《C语言及程序设计》实践项目——发现Bug 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

返回:賀老師課程教學鏈接

【項目1-sin泰勒展式中的錯誤】

下面是sin函數的泰勒展式:

(注:x取弧度值,而非角度值)

編寫了double mysin(double x)用于求sin值,卻“死”在了123°上。劇透一下,循環沒有問題(當然問題會表現在循環中)。試著用調試工具找出問題出現在哪里,然后給出解決問題的方案。

#include#define pi 3.1415926

double mysin(double x);

double myabs(double x);

int main( )

{

double angle;

for(angle=0; angle<=180; angle++)

printf("sin(%.0f°) = %.3f\n", angle, mysin((angle/180)*pi));

return 0;

}

//下面定義mysin函數,求sin值

double mysin(double x)

{

double sum=x,x_pow=x,item;

int n=1,fact=1, sign=1; //定義變量時賦初值,已經將第一項考慮到累加和sum中

do

{

fact=fact*(n+1)*(n+2); //fact用于表示階乘,在公式中作分母

x_pow*=x*x; //x_pow是分子中用于表示階乘,在公式中作分母

sign=-sign; //確定即將要累加的這一項的符號

item =x_pow/fact*sign; //計算出要累加的項

sum+=item; //將該項累加上去

n+=2;

}while(myabs(item)>1e-5);

return sum;

}

//下面定義myabs函數

double myabs(double x)

{

return ((x>=0)?x:-x);

}提示:請進入到mysin中后,注意各變量的變化,看通項是否會收斂,從而使循環能夠結束。

[ 參考解答]

【項目2-總是多一次?】

先閱讀下面的程序。這樣的結構,經常用于重復性工作。執行一次程序要完成的工作后,由操作人員選擇,決定是否還來一遍。

#includevoid dosomething(int *p);

int main( )

{

char choice='y';

int n=0;

while(choice!='N' && choice!='n')

{

dosomething(&n);

printf("按 N 退出,其他鍵繼續....");

scanf("%c", &choice); //用choice=getchar();也一樣

}

return 0;

}

void dosomething(int *p) //完成特定的業務

{

*p+=1; //本例中傳地址, *p即n

printf("第%d次完成業務!\n", *p);

}閱讀程序,發現在不退出時,想繼續一次業務,卻……,如圖:

通過單步的方式,找出問題的原因,并自行查找資料,找出解決的辦法。

[ 參考解答]

總結

以上是生活随笔為你收集整理的二级c语言程序设计bug,《C语言及程序设计》实践项目——发现Bug的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。