实验3 C语言分支语句和循环语句编程应用

实验任务1

#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

//生成N个0~9之间的随机整数,并打印输出
#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;
} 

 

 

 

 

实验任务3

//输出101~200之间的所有素数,并输出素数的个数
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
	int i,m,n,k=0;
	for(n=101;n<=200;n++){
	
	m=sqrt(n);
    for(i=2;i<=m;i++)
	if(n%i==0)break; 
    if(i>m){
	
      printf("%6d",n);
      k++;
      if(k%5==0)
      printf("\n");
      }
	} 
    printf("\n");
    printf("101~200之间共有%d个素数",k);
	return 0; 
}

 

 

 

 

实验任务4

#include<stdio.h>
int main(){
	long s;
	int m,t,x=0,y,z;
	t=0;
	z=0;
	printf("Enter a number:");
	while(scanf("%ld",&s)!=EOF){
		while(s>=1){
	    	m=s%10;
		    s=s/10;
		    if(m%2!=0){
		    t=t*10+m;
	        }
	    }
	    while(t!=0){
		    x=t%10;
        	t=t/10;
        	z=z*10+x;
		   }
		  	
	    printf("New number is:%d\n",z);
	    printf("Enter a number:"); 
	     t=0;
	     z=0;
    }
	return 0;
}

 

 

算法思路:该数对10取余得个位数,判断其是否为奇数;该数除10,得到除去个位数的一个数字,再重复;

                  得到的第一个奇数乘十再加上第二个奇数;

                  此时得到的新数字是逆序,再逆序使它原先的高位仍在高位,原先的低位仍在低位。

实验任务5

#include<stdio.h>
int isprime(int k);
int main(){
	int n,i,m=1,t=1;
	double sum=0.0;
	printf("Enter n(1~10):");
	while(scanf("%d",&n)!=EOF) {
		for(i=1;i<=n;i++){
			sum+=t*1.0/isprime(i);
			t=-t;
	    }
    	printf("\n");
		printf("n = %d\n",n);
		printf("s = %1f\n",sum);
		sum=0.0;
		printf("Enter n(1~10):");
	}
	return 0;
}
int isprime(int k)
{
	int i,p=1;
	
		for(i=1;i<=k;i++){
			p=p*i;
		}
	return p;
}

 

 

 

 

实验任务6

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
	int x,t,n,ret=0;
    srand(time(0));
    t=rand()%30+1;
   
	x=0;
	printf("猜猜2020年12月哪一天会是你的luck day");
	printf("\n");
	printf("开始喽,你有三次机会,猜吧(1~31):");
	scanf("%d",&n);
	while(x<=3){
	    if(n>t){
	    printf("你猜的日期晚了,luck day悄悄溜到前面啦:)\n");
	    printf("再猜:");
		scanf("%d",&n);
		x++;
		}else if(n<t){
	    	printf("你猜的日期早了,luck day还没到呢:)\n");
	    	printf("再猜:");
			scanf("%d",&n);
			x++; 
		}else{
		printf("Yes,it's your luck day:)\n");
		ret=1;
		break;
    	}
    }
    if(ret=0)
	printf("次数用完啦,偷偷告诉你:12月,你的luck day是%d号",t);

	return 0;
} 

 

 

实验总结:

1.算法很重要,是前提

2.应该多次运行,因为某些数字它对了,但其他的不一定对,还是会有错误

 

posted @ 2020-11-20 10:55  衾廿  阅读(140)  评论(0编辑  收藏  举报