用作测试题目:
例:下面程序求[3,750]之间同构数之和, 请将程序补充完整, 并给出正确结果,填入相应窗口。同构数是:一自然数平方的末几位与该数相同时,称此数为同构数,例如:5*5=25,则称5为自同构数。 分析:
(1)当n为1位数时,要将平方s的末位取出与n比较,需对10取余; (2)当n为2位数时,要将平方s的末位取出与n比较,需对100取余; (3)当n为3位数时,要将平方s的末位取出与n比较,需对1000取余; 2位数取余(n),3位数取余(n0),4位数取余(n00)
#include
long sum,n,m,s,k; sum=0;
for (n=3;n<=750;n++) {
if (n<10) k=10; else
if (n<100) k=100; else k=1000; s=n*n; if(s%k==n)
sum=sum+n; }
printf(\}
输出:The sum = 1113
例:下面的程序是求500以内的所有的素数之和。请修改程序中的错误,使它
能得出正确的结果,并给出正确结果。
#include
if(n<=1) {return 1;} //改为:if(n<=1) {return 0;} yes=1;
for(i=2; i<=sqrt(n); i++) if(n%i==0){ yes=0; break;} return 1; //改为 return yes; } main()
{ int sum=0, i; for(i=2;i<=500; i++)
if(prime(i)) {printf(\
printf(\}
输出:21536
例:下面的程序中,函数fun的功能是:根据形参m,计算下面公式的值。 T=1+1/(2*3)+1/(3*4)+……+1/(m*(m+1))
请改正程序中的错误,并运行改正后的程序。当从键盘输入70时,给出程序运行的正确结果(按四舍五入保留6位小数)。输出:1.485915
#include
for(i=2; i<=m; i++)
t+=1.0/i*(i+1); //改为:t+=1.0/(i*(i+1));
return ; //改为:return t; } main() { int m;
printf(\请输入一个整数: \scanf(\
printf(\结果是: %lf \\n\fun(m)); //改为printf(“\\n 结果是:%.6lf\\n”,fun(m)); }
例:下面程序中,函数fun的功能是:计算并输出k以内的最大的10个能被13或17整除的自然数之和。请改正程序中的错误,并运行正确的程序。当从键盘输入500时,给出程序运行的正确结果。输出:4622
#include
while((k>=2) || mc<10) //改为:while(k>=2 && mc<10) { if ((k==0) && (k==0)) //改为:if ((k==0) || (k==0)) { m=m+k; mc++; } k--; } return m; } main() { int k;
printf(\请输入整数:\ scanf(\
printf(\结果是: %d\\n\}
例:下列程序的功能是:求出以下分数序列的前30项之和,
2/1,3/2,5/3,8/5,13/8,21/13,……请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。 #include
long a,b,c; //改为:double a,b,c; clrscr();
s=0.0; a=2; b=1;
for(k=1;k<=30;k++) { //添加括号 s=s+a/b;
c=a; a=a+b; b=c; }
printf(\结果: %lf\\n\ }
输出:48.840601
//改为:printf(\结果: %.6lf\\n\