《實(shí)驗(yàn)四ing 循環(huán)結(jié)構(gòu)程序設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《實(shí)驗(yàn)四ing 循環(huán)結(jié)構(gòu)程序設(shè)計(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、實(shí)驗(yàn)四 循環(huán)結(jié)構(gòu)程序設(shè)計 (一)
2.編程,輸入一批整數(shù),先求出其中的偶數(shù)和及奇數(shù)和,然后輸出偶數(shù)和與奇數(shù)和的差.
輸入輸出示例:
輸入一批整數(shù):10 11 20 33 Ctrl+Z
Sub=-14
提示:從鍵盤輸入Ctrl+Z,表示一批數(shù)據(jù)輸入結(jié)束
思考:如何從輸入的數(shù)中找出一個最小的數(shù)。
#include
int main()
{
int sub=0,n;
char c;
do
{
scanf("%d",&n);
if (n%2==0)
sub+=n;
else
sub-=n;
}
2、
while((c=getchar())!='\n');
printf("sub=%d\n",sub);
return 0;
}
思考題
#include
int main()
{
int i=0,num,min;
char c;
do
{
scanf("%d",&num);
if (i==0)
min=num;
i++;
if(num<=min)
min=num;
}
while((c=getchar())!='\n');
printf("最小數(shù)%d\n",min);
3、
}
3.編程,輸入1個正實(shí)數(shù)eps,計算并輸出下式的值,十到最后一項的絕對值小于eps。
輸入輸出示例:
Input eps:0.00001
S = 0.866977
思考:如果條件改為前后2項的絕對值的差小于eps,如何編程。
#include
int main()
{
int f=1,i=1;
float s=0,eps;
printf("input eps: ");
scanf("%f",&eps);
while ((1/i)>=eps)【思考題】while((1-i/1)>=eps);
{
s=s
4、+f*1/i;
f=-f;
i+=4;
}
printf("s=%f",s);
fflush(stdin);
getchar();
return 0;
}
1. 編程,輸入1個實(shí)數(shù)x,計算并輸出下式的值,直到最后一項小于10-5。要求定義和調(diào)用函數(shù)fact(n)計算n的階乘,以及定義和調(diào)用函數(shù)mypow(x,n)計算xn。
輸入輸出示例:
X=2
S=3.761949
提示:輸入不同的正整數(shù)和負(fù)整數(shù)驗(yàn)證結(jié)果
思考:如何計算的值。
#include
const double e = 1e-5;
int fac
5、t(int n)
{
int i;
int ans;
ans = 1;
for (i = 1 ; i <= n ; i++)
{
ans = ans * i;
}
return ans;
}
double mypow(double x, int n)
{
int i;
double ans;
ans = 1;
for (i = 0 ; i < n ; i++)
{
ans = ans * x;
}
return ans;
}
int main()
{
double x;
double item;
6、
double s;
int i;
int sign=1;
scanf("%lf",&x);
s = 1; i = 2;
do
{
item = mypow(x,i) / (double)fact(i);
//s = s + sign*item;
i = i + 2;
s = s + item;
// sign=-sign;
}while(item > e);
printf("s = %f\n",s);
}思考題在原題上變動
2. 編程,輸入一個整數(shù),求它的各位數(shù)字之和及位數(shù)。例如123的各位數(shù)字之和是6,
7、位數(shù)是3.
輸入輸出示例:
輸入一個整數(shù):-12345
-12345有5位數(shù),各位數(shù)字之和是15
提示:n表示一個整數(shù),則n%10取個位數(shù),n=n/10去掉個位數(shù),組成一個新數(shù)。
思考:如果要把每位數(shù)字轉(zhuǎn)換為字符輸出,如何編程。(思考題不會做)
#include
void main()
{
int a,i=0,sum=0;
scanf("%d",&a);
while(a!=0)
{
sum+=(a%10);
a/=10;
i++;
}
printf("%d位數(shù), 各位數(shù)字之和為%d\n",i,sum);
}
8、
3. 改錯,輸入2個整數(shù),分別將其逆向輸出。
輸入輸出示例:
123 -321
123的逆向是321
-321的逆向是-123
源程序(有錯誤的程序)
#include
int fun(int n)
{ int m,y;
y=0;
if(n<0)
m=n;
else
m=-n;
while (m==0) 改為(m!=0)
{ y=y*10+m/10; 改為m=m%10;
m=m/10;
}
if(n>=0) return y;改為-y
else return –y; 改為y
}
void main()
{ int n,m;
scanf(“%d%d”,&n,&m);
printf(“%d的逆向是%d\t”,n,fun(n));
printf(“%d的逆向是%d\t”,m,fun(m));
}
提示:模仿1調(diào)試程序,在變量窗口中觀察變量值的變化,讀者還可以在Watch窗口輸入不同變量的值來驗(yàn)證程序的正確性。
實(shí)驗(yàn)報告要求
將以上各題的源程序、運(yùn)行結(jié)果,以及實(shí)驗(yàn)中遇到的問題和解決問題的方法,以及實(shí)驗(yàn)過程中的心得體會,寫在實(shí)驗(yàn)報告上。