实验1

// 一元二次方程求解
// 重复执行, 直到按Ctrl+Z结束
//
#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 用time函数生成随机数

// 生成N个0~9之间的随机整数,并打印输出
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//这原有#define N 5,意思和下面我加的int N=5一样 
int main() {
int x, n,N;
N=5;//输出五个结果 
srand(time(0)); // 以当前系统时间作为随机种子
n = 0;
do {
n++;
x = rand()%10; // 生成一个0~9之间的随机整数
printf("%3d", x);//3d让每个数据之间有空格 
}while(n<N);
printf("\n");
return 0;
}

此外我还写了一个更明显的生成随机数的东西

#include<stdio.h>
#include<math.h>
#include<stdlib.h> 
#include<time.h>
int main(){
    int a,b,c;
    srand(time(0));//srand括号里面要加东西       加的time要用time.h的头文件 
    a= rand();//rand()后输出一个五位数的随机数?
    b= rand()%100;
    c= rand()%10000;
    printf("%d %d %d",a,b,c);
    return 0;
} 

实验3

实验3实在是太难了,或者说我的循环语句没有学好。

#include <stdio.h>
#include <math.h>
int main(){
    int m;  // 输入的整数 
    int i;  // 循环次数
    int k;  // m 的平方根 
    int num; //素数的个数 
    m = 100;
begin: 
    k=(int)sqrt( (double)m );
    for(i=2;i<=k;i++)
        if(m%i==0)
            break;
    // 如果完成所有循环,那么m为素数
    // 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 
    if(i>k)
        while(m<200){
            printf("%d\n",m);
            num++,m++;
goto begin;            
        }
    else
        m++;
        if(m>=200) goto end; 
    goto begin; 
end:
    printf("个数:%d",num);       
    return 0;
}

在错了大概两个小时后,2020年11月11日早上4:44,心满意足地去睡觉。虽然和老师的输出还有差距,但还是留给以后吧。

#include <stdio.h>
#include <math.h>
int main()
{
 int a=0,n=100,m=2;
 
 while(n<200)
{
 while(m<=sqrt(n))
 {
  if(n%m!=0)
  { m+=1;} 
  else
  {break;} 
 }
 if(m>sqrt(n))
 {
     printf("%d\n",n);
     a+=1;
 }
 n+=1;
 m=2; 
}
    printf("%d",a);
} 

改进以后的代码

实验4

#include<stdio.h>
int main(){
    long a,b,c,d,e;
begin:
    c=0,e=0;
    printf("Enter a number:");
    scanf("%d",&a);
    while(a>0){
        b=a%10;
        a=a/10;
        if(b==1||b==3||b==5||b==7||b==9) c=c*10+b;
    } 
    while(c>0)
    {
    d=c%10;
    e=e*10+d;
    c=c/10;
    }
    printf("%d\n",e); 
    goto begin;
}

 和反位输出差不多,在提取数字的过程中筛选每个位数上是不是单数,然后把得到的单数再做一次反位输出。(因为构成的新数是反的)

实验5

#include<stdio.h>
#include<math.h>
int main(){
begin:
    float a;//计数 
    float b; //分母 
    float c=0;//
    float g;//另几个计数 ,g是n-1 
    float x;//正负
    float y;//分数
    float z=0;//每一项 
    float n;//每一项的n 
    printf("Enter n(1~10):");
    scanf("%f",&a);
    while(a>0&&a<=10){
            g=a+1;n=a;b=1;
            while(n>0){
            b=b*n;
            n--;
            }//生成分母b 
            x=pow(-1,g);
            y=1/b; 
            z=x*y; //生成每一项 
        c=c+z;
        a=a-1;    
    } 

 

实验任务6

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int a,b,c=3;//a是日子,b是输入,c是次数。 
    printf("命运的指针已经开始转动!\n"); 
    srand((unsigned)time(NULL));
    a = rand() % 31 + 0;
    
    while(c>0){
            printf("选择你的幸运日吧少年!你只有%d次机会!\n",c); 
            scanf("%d",&b);
            if(b>a) c=c-1, printf("不会吧不会吧不会有人连幸运日都希望晚到吧。只剩%d次机会了笨\n",c); 
            else if(b<a) c=c-1, printf("想幸运想疯了吧废物幸运日远着呢。只剩%d次机会了笨\n",c);
            else if(b=a) goto end;
    }
    printf("就这就这就这?%d号的幸运日都猜不到?",a);return 0;
end: printf("呐呐呐我就说如果是欧尼酱的话一定能猜对自己的幸运日对吧\n");
}

 

在思修课上写完啦哈哈哈哈哈