实验2

实验一

程序源代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
#define R1 586
#define R2 701

int main()
{
    int number;
    int i;
    srand( time(0) );
    
    for(i = 0; i < N; ++i)
    {
    number = rand() % (R2 - R1 + 1) + R1;
    printf ("20228330%04d\n",number);
    }
    return 0;
    }

 

程序运行截图

讨论:

问题1:随机生成一个586-701之间的数

问题2:随机生成5个202283300586-202283300701之间的数

 

实验二

程序源代码

int main()
{
    double x,y;
    char c1,c2,c3;
    int a1,a2,a3;
 
    scanf("%d%d%d",&a1,&a2,&a3);
    printf("a1= %d,a2= %d,a3= %d\n", a1, a2,a3);
    
    getchar() ;
    
    scanf("%c%c%c",&c1, &c2, &c3);
    printf("c1 = %c,c2 = %c,c3 = %c\n",c1,c2,c3);
    
    scanf("%lf,%lf",&x,&y);
    printf("x = %lf, y = %lf\n",x,y);
    
    return 0;
    
}

程序运行截图

 

实验三

程序源代码

#include <stdio.h>
#include <math.h>

int main()
{
    double x, ans;
    
    while(scanf("%lf",&x) != EOF)
    {
    ans = pow(x, 365);
    printf("%.2f的365次平方:%.2f\n",x,ans);
    printf("\n");
    }
    return 0;
}

 

#include <stdio.h>

int main()
{
    double s,h;
    
    while(scanf("%lf",&s) != EOF)
    {
        h = s*9/5 + 32;
        printf("摄氏度c = %.2lf时,华氏度f = %.2lf",s,h);
        printf("\n");
    }
    return 0;
}

 

程序运行截图

 

实验四

程序源代码

#include <stdio.h>
int main()
{
    char ans;
    printf("输入r表示red,输入g表示green,输入y表示yello :");
    
    while(scanf("%c",&ans) != EOF)
    {
    getchar();
    switch(ans)
    {
        case'r':printf("stop!\n");break;
        case'g':printf("go go go\n");break;
        case'y':printf("wait a minute\n");break;
        default :printf("something must be wrong\n");break;
    
    } }
    return 0;
 } 

程序运行截图

 

实验五

程序源代码

 

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 30
int main()

{
    int t, i, a;
    srand(time(0));
    a = rand()%(N+1);
    printf("猜猜2023年4月哪一天会是你的lucky day \n");
    printf("开始喽,你有三次机会,猜吧(1-30):"); 
    
    for(i = 1;i <= 2; i++)
    {
        scanf("%d",&t);
        if (t != a)
        {
          if (t > a)
        {
        printf("你猜的日期晚了,你的lucky day已经过啦\n");
        printf("再猜(1-30):"); continue;
        }
         
        else
        {
        printf("你猜的日期早了,你的lucky day还没到呢\n");
        printf("再猜(1-30):");continue;
        }
        }
        
        else{
        printf("哇,猜中了:-)");
        break;
             }
             
        }
    if (t != a){
        scanf("%d",&t);
        if(t != a)
        printf("次数用完啦,偷偷告诉你:4月,你的lucky day是%d号",a);
        else
        printf("哇,猜中了:-)");
}
        
    return 0;
 } 

程序运行截图

 

 

实验六

程序源代码

#include <stdio.h>
int main()
{
    int i, j;
    for(i = 1; i <= 9; i++)
    {
        for(j = 1; j <= i; j++)
         printf("%d*%d=%2d\t",i,j,i*j);
        
     printf("\n") ;
    }
    
    return 0;
}

程序运行截图

 

实验七

程序源代码

 

#include <stdio.h>
int main()
{
    int line, n, i,j;
    scanf("%d",&line);

    
for (j = 1;j <= line; ++j)
{
    n = 2 * (line - j) + 1;        //每一行的小人的个数是总行数减去该行数的差乘2再整体加1 
    for (i = 1;i <= j-1;++i)
    printf ("\t");                 //第i行,前面有i-1个\t 
    
    for (i = 1;i <= n;++i){
    printf (" o \t") ;continue;}
    printf("\n") ;
    
    for (i = 1;i <= j-1;++i)
    printf ("\t");
    
    for (i = 1;i <= n;++i){
    printf ("<H> \t");continue;}
    printf("\n") ;
    
    for (i = 1;i <= j-1;++i)
    printf ("\t");
    
    for (i = 1;i <= n;++i){
    printf ("I I \t");continue;}
    printf("\n\n") ;              //上下两个小人之间要空一行,所以是两个/n 
    
}
    
    return 0;
}

程序运行截图

讨论:第i行,共2*(line-i)+1个小人

第i行,前面有i-1个\t

 

 

收获:输入的格式要与scanf里的格式相同

           对于字符型,空格也会输出,要用getchar吃掉空格

           while(..... != EOF)能连续输入,直至同时按crtl+z ,再按回车键结束

不足:循环条件不能迅速判断,逻辑不是很清晰

posted @ 2023-03-19 16:26  轻颦  阅读(5)  评论(0编辑  收藏  举报