return0;
}
(1)分别输入数据-2,1,5,10,20调试运行程序,并记录程序结果。
输入
结果
-2
输入有误
1
1
5
120
10
3.5288e+006
20
2.4329e+018
(2)删除程序中//A处的赋值语句return1;重新以上述数据调试运行程序,结果是否正确,如果不正确,该如何修改?
输入
结果
-2
输入有误1
1
1
5
120
10
3.5288e+006
20
2.4329e+018
不正确应该return0或者1或者2给她一个值否则程序在输入有误后将继续执行不能跳出
(3)删除程序中//B处的语句result=1;重新以上述数据调试运行程序,结果是否正确,如果不正确,该如何修改?
不正确除了-2其余结果都是0或者在程序的开始初始化result=1
(4)将程序中语句doubleresult=0;改为intresult=0;重新以上述数据调试运行程序,结果如何?
为什么?
N取较大的数时,result变成0因为int没有那么大的值
2.范例:
编程计算求π的近似值。
#include
#include
usingnamespacestd;
voidmain()
{
longinti=0;
doublesum=0,term,pi;
do
{
i+=1;
term=1.0/(i*i);
sum+=term;
}while(term>1e-12);
pi=sqrt(sum*6);
cout<<"pi="<}
1)输入程序编译后使用Debug跟踪,单步执行程序,记录以下变量值的变化。
(1)如下图:
等。
。
。
。
。
回答以下问题:
a)从跟踪结果分析,term和sum的值有什么错误?
调试到循环结束需要的次数太多,不知道能不能直接到循环结束
b)循环结束后,i的值是多少?
用什么简单的办法可以看到?
在程序的最后加入cout<<”i=”<
.将输入的小写字母转换成大写字母。
【分析】由ASCII码表可以看出,大写英文字母的ASCII码值在65至90之间,小写英文字母的ASCII码值在97至122之间,每一个英文字母的大写和小写的ASCII码相差32。
#include
usingnamespacestd;
intmain(){
charstr[100];
inti=0;
cout<<"pleaseinputastring...\n";
cin.getline(str,100);
do{
if(str[i]<'a'||str[i]>'z')continue;
str[i]-=32;
}while(str[++i]!
='\0');
cout<<"\nTheresultstringis:
"<return0;
}
4.编程:
设计一个程序,输入一个日期,要求算出这一天是本年的第几天。
【分析】要算出某天是当年的第几天,应该将当年中本月之前所有月的天数相加,再加上本月至此的天数。
但这里有一个闰年问题,2月是一个特殊月,闰年的2月有29天,非闰年的2月只有28天。
【提示】判断某年是闰年的条件是:
该年号能被4整除但不能被100整除,或者能被400整除。
例如,1996、2000是闰年,但1800不是闰年
#include
usingnamespacestd;
intmain(){
intyear,month,day,result,F;
cout<<"请输入年月日:
"<cin>>year>>month>>day;
if(year%4==0&&year%100!
=0||year==0)
{
F=28;
switch(month){
case1:
result=day;cout<<"本年第"<case2:
result=day+31;cout<<"本年第"<case3:
case4:
case5:
case6:
case7:
result=30*(month-2)+month/2+F+day;cout<<"本年第"<case8:
case9:
case10:
case11:
case12:
result=30*(month-2)+(month+1)/2+F+day;cout<<"本年第"<}
}
else{
F=29;
switch(month){
case1:
result=day;cout<<"本年第"<case2:
result=day+31;cout<<"本年第"<case3:
case4:
case5:
case6:
case7:
result=30*(month-2)+month/2+F+day;cout<<"本年第"<case8:
case9:
case10:
case11:
case12:
result=30*(month-2)+(month+1)/2+F+day;cout<<"本年第"<}
}
return0;
}