实验1
// 一元二次方程求解 // 重复执行, 直到按Ctrl+Z结束 // #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; }
实验2 用time函数生成随机数
// 生成N个0~9之间的随机整数,并打印输出 #include <stdio.h> #include <stdlib.h> #include <time.h> //这原有#define N 5,意思和下面我加的int N=5一样 int main() { int x, n,N; N=5;//输出五个结果 srand(time(0)); // 以当前系统时间作为随机种子 n = 0; do { n++; x = rand()%10; // 生成一个0~9之间的随机整数 printf("%3d", x);//3d让每个数据之间有空格 }while(n<N); printf("\n"); return 0; }
此外我还写了一个更明显的生成随机数的东西
#include<stdio.h> #include<math.h> #include<stdlib.h> #include<time.h> int main(){ int a,b,c; srand(time(0));//srand括号里面要加东西 加的time要用time.h的头文件 a= rand();//rand()后输出一个五位数的随机数? b= rand()%100; c= rand()%10000; printf("%d %d %d",a,b,c); return 0; }
实验3
实验3实在是太难了,或者说我的循环语句没有学好。
#include <stdio.h> #include <math.h> int main(){ int m; // 输入的整数 int i; // 循环次数 int k; // m 的平方根 int num; //素数的个数 m = 100; begin: k=(int)sqrt( (double)m ); for(i=2;i<=k;i++) if(m%i==0) break; // 如果完成所有循环,那么m为素数 // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k if(i>k) while(m<200){ printf("%d\n",m); num++,m++; goto begin; } else m++; if(m>=200) goto end; goto begin; end: printf("个数:%d",num); return 0; }
在错了大概两个小时后,2020年11月11日早上4:44,心满意足地去睡觉。虽然和老师的输出还有差距,但还是留给以后吧。
#include <stdio.h> #include <math.h> int main() { int a=0,n=100,m=2; while(n<200) { while(m<=sqrt(n)) { if(n%m!=0) { m+=1;} else {break;} } if(m>sqrt(n)) { printf("%d\n",n); a+=1; } n+=1; m=2; } printf("%d",a); }
改进以后的代码
实验4
#include<stdio.h> int main(){ long a,b,c,d,e; begin: c=0,e=0; printf("Enter a number:"); scanf("%d",&a); while(a>0){ b=a%10; a=a/10; if(b==1||b==3||b==5||b==7||b==9) c=c*10+b; } while(c>0) { d=c%10; e=e*10+d; c=c/10; } printf("%d\n",e); goto begin; }
和反位输出差不多,在提取数字的过程中筛选每个位数上是不是单数,然后把得到的单数再做一次反位输出。(因为构成的新数是反的)
实验5
#include<stdio.h> #include<math.h> int main(){ begin: float a;//计数 float b; //分母 float c=0;//和 float g;//另几个计数 ,g是n-1 float x;//正负 float y;//分数 float z=0;//每一项 float n;//每一项的n printf("Enter n(1~10):"); scanf("%f",&a); while(a>0&&a<=10){ g=a+1;n=a;b=1; while(n>0){ b=b*n; n--; }//生成分母b x=pow(-1,g); y=1/b; z=x*y; //生成每一项 c=c+z; a=a-1; }
实验任务6
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(){ int a,b,c=3;//a是日子,b是输入,c是次数。 printf("命运的指针已经开始转动!\n"); srand((unsigned)time(NULL)); a = rand() % 31 + 0; while(c>0){ printf("选择你的幸运日吧少年!你只有%d次机会!\n",c); scanf("%d",&b); if(b>a) c=c-1, printf("不会吧不会吧不会有人连幸运日都希望晚到吧。只剩%d次机会了笨\n",c); else if(b<a) c=c-1, printf("想幸运想疯了吧废物幸运日远着呢。只剩%d次机会了笨\n",c); else if(b=a) goto end; } printf("就这就这就这?%d号的幸运日都猜不到?",a);return 0; end: printf("呐呐呐我就说如果是欧尼酱的话一定能猜对自己的幸运日对吧\n"); }
在思修课上写完啦哈哈哈哈哈