习题5-4
#include <stdio.h> #include <string.h> int main(){ int a=0,b=0,c=0,d=0; char x; while(scanf("%c",&x)&&x!='\n'){ if((x>='a'&&x<='z')||(x>='A'&&x<='Z')) a++; //是字母 else if(x==' ') b++; //是空格 else if(x>='0'&&x<='9') c++; //是数字 else d++; //是其他字符 } printf("字母数: %d\n空格数: %d\n数字数: %d\n其他字符数 %d",a,b,c,d); return 0; }习题5-5
#include <stdio.h> int main(){ int a,n,sum,k; printf("请输入a:\n"); scanf("%d",&a); printf("请输入n:\n"); scanf("%d",&n); sum=k=0; for(int i=0;i<n;i++){ k=k*10+a; sum+=k; } printf("%d",sum); return 0; }习题5-7
#include <stdio.h> int main(){ double sum=0; for(int k=1;k<=100;k++) sum+=1.0*k; for(int k=1;k<=50;k++) sum+=1.0*k*k; for(int k=1;k<=10;k++) sum+=1.0/k; printf("%lf",sum); return 0; }习题5-8
#include <stdio.h> int main(){ for(int a=1;a<=9;a++) //百位 for(int b=0;b<=9;b++) //十位 for(int c=0;c<=9;c++) //个位 if(a*a*a+b*b*b+c*c*c==a*100+b*10+c*1) printf("%d\n",a*100+b*10+c*1); return 0; }习题5-9
#include <stdio.h> int main(){ for(int n=1;n<=1000;n++){ int sum=0; //因子之和 for(int i=1;i<n;i++){ if(n%i==0) sum+=i; //i可被n整除,则i为n的因子 } if(sum==n){ //因子和等于数本身,为完数 printf("%d its factors are 1",n); //为了方便处理逗号,先输出一个1(1为任意正整数的因子) for(int i=2;i<n;i++){ //从2开始找因子,因为1已经输出 if(n%i==0) printf(",%d",i); //先输出逗号再输出因子 } printf("\n"); } } return 0; }习题5-10
#include <stdio.h> int main(){ double sum=0; int a=1,b=2,c=0; //a为分母,b为分子,c为中转用的变量 for(int i=0;i<20;i++){ sum+=1.0*b/a; c=a+b; a=b; b=c; } printf("%lf",sum); return 0; }习题5-11
#include <stdio.h> int main(){ double h=100.0,sum=100.0; //初始高度100m //倒推法,从第十次往前算 for(int i=10;i>0;i--){ sum+=h; h/=2; } printf("共经过的米数为 %lf , 最后一次弹跳高度为 %lf",sum,h); return 0; }习题5-12
#include <stdio.h> int main(){ int sum=1; for(int i=0;i<9;i++) sum=(sum+1)*2; printf("%d",sum); return 0; }习题5-13
#include <stdio.h> #include <math.h> //用它的abs求绝对值 int main(){ double x,y,a; printf("请输入a:\n"); scanf("%lf",&a); x=a; y=0.5*(x+a/x); while(abs(x-y)>0.00001){ //abs取绝对值,再判断是否满足精确值要求 x=y; y=0.5*(x+a/x); } printf("%lf",y); return 0; }习题5-14牛顿迭代法参考资料
#include <stdio.h> int main(){ //原式为2*x*x*x-4*x*x+3*x-6 //导数式为6*x*x-8*x+3 double x=1.5; while(2*x*x*x-4*x*x+3*x-6!=0) x=x-(2*x*x*x-4*x*x+3*x-6)/(6*x*x-8*x+3); printf("%lf",x); return 0; }习题5-15二分法参考资料
#include <stdio.h> int main(){ double a=-10.0,b=10.0,c,y,x; while(c=(2*x*x*x-4*x*x+3*x-6)){ if(c<0) a=(a+b)*0.5; //c小于目标值,区间向右半部分精确 else b=(a+b)*0.5; //c大于目标值,区间向右半部分精确 x=(a+b)*0.5; } printf("%lf",x); return 0; }附加题1
#include <stdio.h> int main(){ int sum=0; for(int a=0;a*3<=45;a++) //3元的鸡儿 for(int b=0;a*3+b*2<=45;b++) //2元的鸡儿 for(int c=0;a*3+b*2+c<=45;c++) //1元的鸡儿 if(a*3+b*2+c==45) sum++; printf("%d",sum); return 0; }附加题2
#include <stdio.h> #include <math.h> #include <time.h> int main(){ srand(time(0)); int a=rand()0+1,b; printf("输入一个数\n"); for(int i=1;i<=7;i++){ scanf("%d",&b); if(a==b){ printf("你猜对了!\n"); return 0; } else if(a<b) printf("你猜大了\n"); else printf("你猜小了\n"); } printf("你应经猜了七次,你输了\n"); return 0; }转载于:https://www.cnblogs.com/kangyupl/p/10631308.html
相关资源:C语言五子棋实验报告.docx