实验3
实验一
#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; }
LOOK DOWN↓
实验二
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 int main() { int x, n; srand(time(0)); n = 0; do { n++; x = rand() % 10; printf("%3d", x); } while (n < N); printf("\n"); return 0; }
COUNTINUE↓
实验三
#include <stdio.h> int main() { int i, j,n; n = 0; for (i = 101; i <= 200; i++) { for (j = 2; j < i; j++) { if (i % j == 0) { break; } else { if (j == i - 1) { printf("%d ", i); n = n + 1; } } } } printf("\n"); printf("101-200的素数共有%d个", n); }
实验四
#include <stdio.h> #include <stdlib.h> int main() { long int s; int t,k,n; n = 0; k = 1; printf("Enter a number:"); scanf_s("%1d", &s); while (s > 0); { t = s % 10; if(t % 2 == 1) { n = n + t * k; k = k * 10; } s = s / 10; } printf("\n"); printf("new number is=%d", n); return 0; }
这道题目学过VB的同学一定不会陌生。。。思路很简单
取出奇数:先倒序取出各个位上的数,即每次用10取余,然后整体整除10去掉最后一位得到了各位的数,然后再用2除得到余数,若余数为1则为奇数
确保顺序:先取出的数为个位,后为十位,百位。。。以此类推,那么只要第一次乘1加第二次乘10如此下去即可
实验五
#include <stdio.h> #include <stdlib.h> int main() { int n,i,j,k; double s, m; s = 0; k = 1; m = 1; printf("Enter n(1~10);"); scanf_s("%d", &n); for (i = 1; i <= n; i++) { m = 1; { for (j = 1; j <= i; j++) m = m * j; } s = s + (1 / m )*k; k = -1*k; } printf("n=%d,s=%lf", n,s); }
1和l不分导致我在整个算法完全正确程序没有报错的情况下盯着程序看了整整一晚上不知道错在哪了!结果发现是这两个东西搞混了
这告诫我们学习基础知识的时候一定要用心。。。。
实验六
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int r, flag, sum, n; srand((int)time(0)); r = rand() % 31 + 1; for (flag = 0, sum = 1; sum <= 3 && flag == 0; sum++) { printf("请输入你猜的日期:"); scanf_s("%d", &n); if (n == r) { flag = 1; break; } else if (n > r) printf("猜大了,懦弱之举我绝不姑息!\n"); else printf("猜小了,就这样而已吗?\n"); } if (flag == 1) printf("你猜对了,起飞咯!\n"); else printf("三次结束,你没有猜对,捞是真的捞,不过因为你不对,所以你才对,这是一个哲学!\n正确日期为%d",r); return 0; }
皮一下很开心
--------------------------------------------------------------------------------------------华丽的分割线------------------------------------------------------------------------------------------------------
接下来为技术总结时间:
·此次任务对我的提升巨大,我巩固了各种数据类型的使用,然后回忆了好多高中时期学习的算法,比如倒序取余和二进制的产生,还有K每次取反,提高了我的思维和独立思考能力,同时感受到了C语言编写程序的乐趣。
·尚存的问题也有,比如算法的优化不到位,可以简略的步骤没处理
·希望以后可以独立设计出更多优秀有创意的算法