实验3 C语言分支语句、循环语句、函数综合应用编程-1

2021/4/14 22:29:30

本文主要是介绍实验3 C语言分支语句、循环语句、函数综合应用编程-1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实验1

//生成N个0~99之间的随机整数,并打印输出
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int main()
{
    int x,n;
    srand(time(0));
    for(n=1;n<=N;n++)
    {
        x = rand()%100;
        printf("%3d",x);
    }
    printf("\n");
    return 0;
 } 

实验1_1

//生成N个1~31之间的随机整数,并打印输出
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
int main()
{
    int x,n;
    srand(time(0));
    for(n=1;n<=N;n++)
    {
        x = rand()%(31)+1;
        printf("%3d",x);
    }
    printf("\n");
    return 0;
 } 
 

实验2

//猜猜你的Lucky Day
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int x,i;
    int ans1;
    srand(time(0));
    x = rand()%(31)+1;
    printf("猜猜2021年5月哪一天会是你的lucky day\n开始啦,你将有三次机会,猜叭(1~31):");//天啊这弱智的语气
    scanf("%d",&ans1);
    
    for(i=1;i<2;i++)
    {
        if(x>ans1)
        {
            printf("早了,你的幸运日还没到呢\n再猜:");
            scanf("%d",&ans1);
        }
        if(x<ans1)
        {
            printf("晚了,你的幸运日已经过了\n再猜:");
            scanf("%d",&ans1);
        }
        if(x==ans1)
        {
            printf("牛啊,随机的都能猜到,你是神仙叭");
            break;
        }        
    }
    if(i==2)
        printf("没想到叭,系统给你随机出来的幸运日是幸运日是%d",x);
 return 0;
 }

实验3

//取出奇数并保持原位 
#include <stdio.h>
int main()
{
    long long n;
    int x=0,y=0;
    
    while(printf("Enter a number:"),scanf("%ld",&n)!=EOF)
    {
    
        //先从低位取出所有奇数 
        while(n!=0)
       {
           if(n%2!=0)
          {
            x=x*10+n%10;
            n/=10;
          }
          n/=10;
        }
        //将取出的奇数倒过来 
        while(x!=0)
       {
          y=y*10+x%10;
          x/=10;
        }
    printf("new number is:%d\n",y);
    x=0,y=0;
       
    }

        
        return 0;
 } 

实验4

// 一元二次方程求解(函数实现方式)
// 重复执行, 直到按下Ctrl+Z结束 
#include <math.h>
#include <stdio.h>

// 函数声明
void solve(double a, double b, double c);

// 主函数 
int main() 
{
    double a, b, c;
    printf("Enter a, b, c: ");
    while(scanf("%lf%lf%lf", &a, &b, &c) != EOF) 
    {
        solve(a, b, c);  // 函数调用 
        printf("Enter a, b, c: ");
        
    }
    
    return 0;
}

// 函数定义
// 功能:求解一元二次方程,打印输出结果
// 形式参数:a,b,c为一元二次方程系数 
void solve(double a, double b, double c) 
{
    double x1, x2;
    double delta, real, imag;
    
    if(a == 0) 
        printf("not quadratic equation.\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", x1, x2);
        }
        else 
        {
            real = -b/(2*a);
            imag = sqrt(-delta) / (2*a);
            printf("x1 = %.2f + %.2fi, x2 = %.2f - %.2fi\n", real, imag, real, imag);
        }
    }    
}


        

 思考说明:否,return只能返回一个值,无法同时返回x1,x2的值。

实验5

#include <stdio.h>
double fun(int n);  // 函数声明 
 
int main() 
{
    int n;
    double s;
    
    printf("Enter n(1~10): ");
    while(scanf("%d", &n) != EOF) {
        s = fun(n);  // 函数调用 
        printf("n = %d, s= %f\n\n", n, s);
        printf("Enter n(1~10): ");
    }
    
    return 0;
}

// 函数定义 
double fun(int n) 
{
    double x,y,p=1,q=1;
    double sum=0;
    for(y=1;y<=n;y++)
    {
        for(x=1;x<=n;x++)
       {
        p=p*x;
       }
    sum+=q*(1/p);
    q=-q;  
    }
    return sum;
    
    
    
}

实验6

//输出101~200之间的素数,并统计个数 
#include <stdio.h>
#include <math.h>
int isPrime(int x);
int main()
{
    int i,m,n;
    i=101,m=0;
    for(;i<=200;i++)
    {
        if(isPrime(i))
        {
            printf("%d ",i);
            m++;
            n++;
            
            if(n==5)
            {
                printf("\n");
                n=0;    
            }    
        }
        
    }
    printf("\n100~200之间的素数为:%d\n",m);
    
    return 0;
}
int isPrime(int x)
{
    int i=0,n=0;
    n=sqrt(x);

    for(i=2;i<=n;i++)
    {
        if(x%i==0)
        {
            return 0;    
        }
        
    }
        return 1;
}

实验7

我做了间隔变色的尝试,让字符小人列阵在每隔1s就从color f5变到color f9

移动的话因为时间关系暂时还没有做尝试,大概想了一下也应该是整体加一个循环然后把system("cls")用进去

以下为间隔变色的代码

/*字符小人列阵间隔变色*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
    int i,m,n,x,y;
    system("color f5");
        
    
//打印第一排    
    m=8;
    for(i=0;i<=m;i++)
    
    printf(" o   ");
    if(i==9)
    printf("\n");
    
    n=8;
    for(i=0;i<=n;i++)
    
    printf("<H>  ");
    if(i==9)
    printf("\n");
    
    x=8;
    for(i=0;i<=x;i++)

    printf("I I  ");
    if(i==9)
    printf("\n");

//打印第二排
    
    printf("      o");
    m=5;
    for(i=0;i<=m;i++)
    
    printf("    o");
    if(i==6)
    printf("\n");
    
    
    printf("     <H>");
    n=5;
    for(i=0;i<=n;i++)

    printf("  <H>");
    if(i==6)
    printf("\n");
    

    printf("     I I");
    n=5;
    for(i=0;i<=n;i++)
    
    printf("  I I");
    if(i==6)
    printf("\n");

//打印第三排
   
    printf("           o");
    m=3;
    for(i=0;i<=m;i++)

    printf("    o");
    if(i==4)
    printf("\n");
    
    
    printf("          <H>");
    m=3;
    for(i=0;i<=m;i++)
    
    printf("  <H>");
    if(i==4)
    printf("\n");
    

    printf("          I I");
    m=3;
    for(i=0;i<=m;i++)
    
    printf("  I I");
    if(i==4)
    printf("\n");
    
//打印第四排
   
    printf("                o");
    m=1;
    for(i=0;i<=m;i++)
    
    printf("    o");
    if(i==2)
    printf("\n");
     
    
    printf("               <H>");
    m=1;
    for(i=0;i<=m;i++)
    
    printf("  <H>");
    if(i==2)
    printf("\n");
    

    printf("               I I");
    m=1;
    for(i=0;i<=m;i++)
    
    printf("  I I");
    if(i==2)
    printf("\n");
    
//打印第五排
    printf("                     o\n                    <H>\n                    I I\n");
    
    while(i=1)
    {
        Sleep(1000);
        system("color 9");
        Sleep(1000);
        system("color f5");
    }
    

    
    return 0;
}
    
    
    
    
    

其实没有做很大的变动,就只是在原来的代码基础上的结尾添加了一个循环

实验总结:

1.不知道为什么莫名觉得自己的实验6有点繁琐,具体位置应该是在实现隔五个数空一行那里,我暂时只能想到用循环来写,不知道还有没有其他的写法;

2.实验7没有想的那么难,理解那两个函数就问题不大,还挺好玩的;

3.实验6那个素数的函数还是想了挺久,尝试了好多次然后结合书上才想出来,太难了,自己去设计算法然后再把它用代码实现(尤其实验3,要把流程想清楚,先取再倒);

4.实验2也试错了好几次,break加错了位置就很离谱

以上.

 



这篇关于实验3 C语言分支语句、循环语句、函数综合应用编程-1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程