c语言典型编程题,c语言编程题

1,c语言编程题return 2sc语言没有这样的写法 改为 return 2*ss1=s1*n/(2*n+1);其实可以归结为精度损失的问题 。你把你的算法的答案的比较一下比较1*2*3*4/(3*5*7) 这一项 你的算法是3/5*4/7=0.34285714..... 的答案的算法是24/105=0.2285714...值相差了这么多 结果当然不一样了#include <iostream>using namespace std;double fun(double eps) double s=1.0,s1=1.0,n=1.0; while(s1>=eps)s1=s1*n/(2.0*n+1.0);s=s+s1;n+=1.0; } return 2*s;}int main() double f=0.0005; cout.precision(7); cout<<fixed<<fun(f)<<endl; return 0;}这是你的结果 输出为 3.141106#include <iostream>using namespace std;double fun(double eps) double s=1.0,s1=1.0,n=1.0; while(s1>=eps)s1=s1*n/(2.0*n+1.0);s=s+s1;n+=1.0; } return 2*s;}int main() double f=0.0005; cout.precision(7); cout<<fixed<<fun(f)<<endl; return 0;}这是答案的 输出为3.1405782s1=s1*n/(2*n+1);和return 2s错误这个题目的要求是根据项数n的变化分子和分母也随之变化,并且分子和分母都是迭代想乘的关系而你写的这个句子s1=s1*n/(2*n+1);是随着n的增加 , 后一项的值s1等于前一项总体的值乘以n再除以2n+1,跟本没有实现迭代相乘的要求下面的答案中之所以将每一项的分子和分母分开来写的原因,就是为了实现分子和分母的迭代相乘最后返回2倍的s应写为2*s而不是2s
2,C语言编程题目#include<stdio.h>#include<math.h>void main() int i,j,k,temp,b1,b2,b3,b4,a1,a2,a3,a4,a5,a6; for(i=10;i<22;i++) if( (j = pow(i,3)) > 1000 && j < 9999 && (k = pow(i,4)) > 100000 && k < 999999) temp = j; b1 = temp % 10; temp/=10; b2 = temp % 10; temp/=10; b3 = temp % 10; temp/=10; b4 = temp; temp = k; a1 = temp % 10; temp/=10; a2 = temp % 10; temp/=10; a3 = temp % 10; temp/=10; a4 = temp % 10; temp/=10; a5 = temp % 10; temp/=10; a6 = temp; //printf("%d %d %d\n",i,j,k); //printf("%d %d %d %d\n",b4,b3,b2,b1); //printf("%d %d %d %d %d %d\n",a6,a5,a4,a3,a2,a1); if(a1!=a2 && a1!=a3 && a1!=a4 && a1!=a5 && a1!=a6 && a1!=b1 && a1!=b2 && a1!=b3 && a1!=b4 && a2!=a3 && a2!=a4 && a2!=a5 && a2!=a6 && a2!=b1 && a2!=b2 && a2!=b3 && a2!=b4 && a3!=a4 && a3!=a5 && a3!=a6 && a3!=b1 && a3!=b2 && a3!=b3 && a3!=b4 && a4!=a5 && a4!=a6 && a4!=b1 && a4!=b1 && a4!=b2 && a4!=b3 && a4!=b4 && a5!=a6 && a5!=b1 && a5!=b2 && a5!=b3 && a5!=b4 && a6!=b1 && a6!=b2 && a6!=b3 && a6!=b4 && b1!=b2 && b1!=b3 && b1!=b4 && b2!=b3 && b2!=b4 && b3!=b4 ) printf("age=%d\n",i); } }}题目太变态,限定变量名称 ,用数组省很多键盘输入 。【c语言典型编程题,c语言编程题】

    推荐阅读