实验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;
}

这次任务对我的提升很大,学到了很多新东西
也发现了许多新的问题,比如说:逻辑混乱,算法优化不好
以后会多多敲代码练习
浙公网安备 33010602011771号