实验任务一
//一元二次方程求解 #include<math.h> #include<stdio.h> int main() { float a,b,c,x1,x2; float delta,real,imag; printf("Enter a,b,c:"); while(scanf("%f%f%f",&a,&b,&c)!=EOF){ if(a==0) printf("not quadratic equation.\n\n"); else{ delta=b*b-4*a*c; if(delta>=0){ x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("x1=%.2f,x2=%.2f\n\n",x1,x2); } else{ real=-b/(2*a); imag=sqrt(-delta)/(2*a); printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n\n",real,imag,real,imag); } } printf("Enter a,b,c:"); } return 0; }
实验任务二
//生成n个0~9之间的随机整数 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5 //要几个就把5改成几 int main() { int x,n; srand(time(0)); //以当前系统时间作为随机种子 ? n=0; do{ n++; x=rand()%10; //生成一个0~9之间的随机整数 printf("%3d",x); } while(n<N); printf("\n"); return 0; }
实验任务三
//输出100-200的素数及个数 #include<stdio.h> #include <math.h> int main(){ int m,n,i,a; m=0; for(n=101;n<200;n++){ a=sqrt(1.0*n); for(i=2;i<=a;i++) { if(n%i==0)break; } if(i>a){ printf("%5d",n); m++; if(m%5==0){ printf("\n"); } } } printf("\n100~200之间共有%d个素数",m); return 0; }
实验任务四
算法思路:
1.如何取出数位上的奇数:通过取余得到最低位的数字,再通过整除得到去掉最低位的数,再判断,余数取余是否为0,若为0,则该余数是偶数,不符合,继续循环,若不为0,则余数为奇数,符合,取出。
2.如何确保构成的新数中,原先的高位仍在高位,原先的低位仍在低位:每次循环后将得到的余数加上上次余数(初始值为0)的10倍,得到完整的所有奇数组成的数,但此时最高位与最低位的位置是反的,所以再做一次倒序处理即可得到高位仍在高位、低位仍在低位的奇数。
#include<stdio.h> int main(){ long m,s,t=0,a,b=0; printf("Enter a number:"); while(scanf("%ld",&s)!=EOF){ while(s!=0){ m=s%10; s=s/10; if((m%2)!=0){ t=t*10+m; } } while(t!=0){ a=t%10; t=t/10; b=b*10+a; } printf("new number is:%ld\n",b); b=0; printf("\nEnter a number:"); } return 0; }
实验任务五
#include<stdio.h> #include<math.h> unsigned f(unsigned x); int main(){ unsigned n,a=2; double b=2.0; float s=1.0; printf("Enter n(1~10):"); while(scanf("%u",&n)!=EOF){ while(a<=n){ s=s+(pow(-1.0,b-1.0)/f(a)); a++,b++; } printf("n = %u, s= %f\n",n,s); a=2,b=2.0; printf("\nEnter n(1~10):"); } return 0; } unsigned f(unsigned x){ unsigned y; if(x==1) y=1; else y=x*f(x-1); return y; }
这个用了函数的使用,但是只有个别输出的结果正确,想知道哪里出了错T T.
#include<stdio.h> int main(){ int m=-1,n,a; double s=1.0,b=1.0; printf("Enter n(1~10):"); while(scanf("%d",&n)!=EOF){ a=2; while(a<=n){ b=a*b; s=s+m*1.0/b; a++; m=-m; } printf("n = %d,s = %lf\n",n,s); printf("\nEnter n(1~10):"); } return 0; }
n=10的输出结果还是和文档里给的实例不一样,想知道是程序出错了还是因为小数的叠加的出现误差。
实验任务六
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(){ int x,ans,n=1; srand(time(0)); x=rand()%31; printf("猜猜2020年12月哪一天会是你的lucky day\n开始喽,你有三次机会,猜吧(1~31):"); scanf("%d",&ans); for(;n<3;n++){ if(ans>x){ printf("\n你猜的日期晚了,lucky day悄悄溜到前面啦\n再猜(1~31):"); scanf("%d",&ans); } else if(ans<x){ printf("\n你猜的日期早了,lucky day还没到呢\n再猜(1~31):"); scanf("%d",&ans); } else{ printf("\n猜对啦!"); break; } } if(n>=3) printf("\n次数用完啦,偷偷告诉你:12月,你的lucky day是%d号",x); return 0; }
试了很多次,最后一次判断还是无法输出,保留疑问。
实验总结:
通过本次实验,对循环和条件语句的应用更加熟悉了一些,但是还是有自己都绕不出来的部分,有参考其他同学的代码,再自己进行编写和改变,还有一些实验目的没有达到,希望可以再改进。
原文:https://www.cnblogs.com/suemya/p/13966220.html