实验3 C语言分支语句和循环语句编程应用
实验一
/* 一元二次方程求解 重复执行, 直到按Ctrl + Z结束 */ #include <math.h> #include <stdio.h> #include <stdlib.h> int main(){ float a, b, c, x1, x2; float delta, real, imag; printf("请输入 a, b, c: "); while (scanf("%f%f%f", &a, &b, &c) != EOF) { // 输入一元二次方程的a,b,c的值 if (a == 0) printf("不是二次方程\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("请输入 a, b, c: "); } system("pause"); return 0; }
实验二
// 生成N个0~9之间的随机整数,并打印输出 #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 // 定义常量,使得输出的数字数量为10个 int main(){ int x, n; srand(time(0)); // 以当前系统时间作为随机种子 n = 0; do { n++; x = rand()%100 + 1 ; // 生成一个1~100之间的随机整数 printf("%3d", x); }while(n < N); printf("\n"); system("pause"); return 0; }
实验三
#include <stdio.h> #include <stdlib.h> int main() { int a, b, n; n = 0; for (a = 101; a <= 200; a++) { for (b = 2; b <= a; b++) { if (a % b == 0) { break; } else { if (b == a - 1) { printf("%d ", a); n = n + 1; } } } } printf("\n"); printf("101-200的素数共有%d个", n); system("pause"); return 0; }
这个实验我其实听困惑的,我之前写了一个不一样的代码,想求任意两个区间的素数的个数,但是发现个数一直无法输出,其他的都可以正常输出,就很困惑.......
在同学的帮助下,才写出来了正确的代码.......
另一个程序如下
/* 程序名称:实验任务3; 程序功能:计算区间素数个数; 创建日期:2020.11.17 */ #include <stdio.h> #include <stdlib.h> int main() { int min, max, i, n , j, m; n = 0; printf("请输入两个自然数"); scanf("%d %d", &min, &max); printf("%d 与 %d 之间的素数一共有 %d 个\n", min, max, m); printf("%d 与 %d 之间的素数分别是:", min, max); while( min <= max ) { j = 0; for(i = 2; i <= min/2; i++) { if(min % i == 0) { j = 1; break; } } if(j == 0) printf("%d ", min); min++; n++; } m = n; system("pause"); return 0; }
实验四
#include <stdio.h> #include <stdlib.h> int main() { int a, b, c, d; printf("Enter a number:"); while (scanf("%d", &a) != EOF) { b = 0; c = 1; while(a != 0) { d = a % 10; if(d % 2 != 0) { b = d*c+b; c = c * 10; } a = a / 10; } printf("new name is:%d\n", b); printf("Enter a number:"); } system("pause"); return 0; }
这个程序对于我来说也有一定的难度,我写了一个下午......
我以后会多加练习,学好C语言!
实验五
#include <stdio.h> #include <stdlib.h> int main() { int n, k, m; double j, s; printf("Enter n(1~10):"); while(scanf("%d", &n) !=EOF) { m = 1; k = 1; s = 0.0; j = 1.0; while(k <= n ) { s = s + m / j; k++; m = -m; j = j * k; } printf("当n = %d 时,s = %lf \n", n, s); printf("Enter n(1~10):"); } system("pause"); return 0; }
实验六
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a, b, c, d; srand(time(0)); a = rand()%32; b = 1; printf("猜猜0202年21月哪一天会是你的lucky day\n"); printf("开始了,你有三次机会,猜吧(1~31):"); scanf("%d", &c); while(b < 3) { if(c == a) { printf("针不戳,蒸馏,芜湖,起飞~~~"); break; } else if(c > a) { printf("It's too late. 拉挎,实在是拉挎。"); scanf("%d", &c); b++; } else if(c < a) { printf("早了早了,你猴急猴急的干哈呀?"); scanf("%d", &c); b++; } } if(b = 3) { printf("次数用完了,偷偷告诉你,12月,你的lucky day 是%d号,多捞啊。", a); } system("pause"); return 0; }
这次任务对我的提升很大,学到了很多新东西
也发现了许多新的问题,比如说:逻辑混乱,算法优化不好
以后会多多敲代码练习