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

 

  

 

 这次任务对我的提升很大,学到了很多新东西

 也发现了许多新的问题,比如说:逻辑混乱,算法优化不好

以后会多多敲代码练习

 

posted @ 2020-11-19 19:37  huvyioy  阅读(86)  评论(1编辑  收藏  举报