c语言程序题库及详解答案,C语言例题解答

1,C语言例题解答要包含头文件#include <stdio.h>和#include <string.h>吧
2,c语言试题及答案第一题#includevoid fun(int a){ if(a<10) cout<<你给多少分?满意的话我帮你做本人QQ:wellfeng6@126.com
3,c语言题目详解x=f* =n/ =(c=50);从右向左算c为50 ,n为100所以 n/=50是n自身除以50,n为2然后f*=2 是f自身乘以2,所以f为20x=f所以x 为20所以答案是220根据运算法则从右相左n=n/50所以运算以后n=2x=20 输出格式n为整数 所以n输出2x输出为浮点型数据 所以x输出20.000000【c语言程序题库及详解答案,C语言例题解答】
4 , C语言题目 解答有环境跑一下就知道了 。第9题:#include int main(void) { int i, mark, n; int na, nb, nc, nd, ne; scanf("%d",&n); na = nb = nc = nd = ne = 0; for(i = 1; i <= n; i++){ scanf("%d", &mark); int k=mark/10; switch(k) { case 9: na++; break; case 8: nb++; break; case 7: nc++; break; case 6: nd++; break; default: ne++; } printf("Number of A(90-100): %d\n", na); printf("Number of B(80-89): %d\n", nb); printf("Number of C(70-79): %d\n", nc); printf("Number of D(60-69): %d\n", nd); printf("Number of E(0-59): %d\n", ne); }5,C语言程序编程题我的思路是既然加后是平方数,那么你就先把这几个平方数求出来,也不多,然后用它们来求就行!因为加上的是100,所以每个平方数应该大于100的哦(懂吧?),而当数是40时,平方是1600,而41则是1681了,两个值的差是81了,大于168-100=68了 , 而接下去的相临平的差将更大!也就是说不可能再有这样的两个平方数的差是68,也就不符合你的要求了!因此,最大的平方的数设为40的平方就可以 , 不用到100的平方10000哦 , 快了很多!#include <stdio.h>voidmain(void)int i, j, num[40];/* 定义一个大小40的数组 */for (i=10; i<40; i++)/* 求出10~40这间的所有平方数*/num[i-10] = i*i;}for (i=0; i<38; i++)/* 因为num[39]就是最后一个数,而下面num[j]表示在i的下一个数,所以这里<38*/for (j=i+1; num[j]-num[i]<68; j++)/*因为刚开始的数比较小 , 所以不止是相临才有可能符合条件哦,即相隔的几个平方的差也可能是68*/;/*一个空语句,即什么也不做*/ }if (num[j]-num[i] == 68)/* 判断要的目的是不是成立了*/break;/*成立表示找到了,可退出哦*/}}if (i == 38)/*要再一次判断是全部循环完退出还是条件成立的退出*/printf("No found!");}elseprintf("The number is %d", num[i]-100);}}答案是:156这个数是21.21+100=11^2,21+100+168=17^2.很简单:168=6*28,x+y=28,x-y=6;x=17,y=11;11^2-100=21.#include<stdio.h>#include<math.h>void main()int i,shu1,shu2,ping1,ping2;for(i=1;i<100000;i++)shu1=i+100;shu2=i+168;ping1=sqrt(shu1);ping2=sqrt(shu2);if(ping1*ping1==shu1&&ping2*ping2==shu2)printf("%d\n",i);}}应该是156#include "math.h"#include "stdio.h"for(int i=1;i<100000;i++)if(((x+100)==sqrt(x+100)*sqrt(x+100))&&((x+100+168)==sqrt(x+100+168)*sqrt(x+100+168)))printf("%4d,",x);}希望对你有所帮助解题思路:设该数为x,它加100后是A,再加168为B 。则因为A是完全平方数,所以A为正数 , 且A=y*y,y为正整数或0 。同理,B为正数 , B=z*z,z为正整数 。因为B=A+168>A,所以,我们可设z=y+n,n为正整数 , n>0 。由B=A+168,有:(y+n)(y+n)=y*y+168,即:y=84/n-n/2 。又y为正整数,所以84/n-n/2≥0,则得出n≤13所以,编程时可用的条件有:0<n≤13y=84/n-n/2x=y*y-100,当y为整数时,就是符合题目的y 。*/#include <stdio.h>int main()int n,x;float y;for(n=1;n<=13;n++)y=84.0/n-n/2.0;//这里用84.0和2.0,是因为整数用“/”时,结果会取整 , 用这种浮点型数才不会直接取整数 。if(int(y) == y)//当y是一个整数时,求出对应x,并输出 。x=int(y*y-100);printf("%d\n",x);}}return 0;} #include <iostream>#include <cmath>using namespace std;int main() for(int i=1;i<=10000;i++)double t=sqrt( double(i+100) );double s=sqrt( double(i+168) );if(t==int(t) && s==int(s))cout<<i<<endl; } return 0;}C语言的开方是浮点运算,你的算法不靠谱 。所以你还是要按照常规的方法 。用代数来描述这个问题就是:x + 100 = y*yx + 168 = z*z两式相减,得到z*z - y*y = 68,即(z - y)(z + y) = 68 = m * n,下面就是把68分解成两个数,for(int i = 2; i < 68/2 ; i ++)if(68 % i == 0)m = i;n = 68/i;//算出y和zif(m + n % 2 == 0)z = (m + n) / 2;break;}}continue;} x = z * z - 168;

    推荐阅读