实验

#define   _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
    printf(" O \n");
    printf("<H>\n");
    printf("I I\n");

    printf("\n");

    printf(" O \n");
    printf("<H>\n");
    printf("I I\n");
    
    system("pause");
    return 0;
}
task1_1.c

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
    printf(" O                       O \n");
    printf("<H>                     <H>\n");
    printf("I I                     I I\n"); 


system("pause");
    return 0;
}
task1_2.c

 

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    double x,y;
        scanf("%lf",&x);
        y=pow(x,365);
        printf("%.2f的365次方:%lf\n",x,y);

    
    system("pause");
    return 0;
}
task2_1.c

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()

{

        double x, y;
        while(scanf("%lf", &x)!=EOF)
        {y = pow(x, 365);
        printf("%.2f的365次方:%lf\n", x, y);

        }
        system("pause");
        return 0;
    
}
task2_2.c

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()

{
    double F, C;
    while(scanf("%lf", &C)!=EOF)
      {
        F = (9 * C) / 5 + 32;
        printf("摄氏度C=%.2lf时,华氏度F=%.2lf", C, F);
      }

        system("pause");
        return 0;
    
}
task2_3.c

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()

{
    unsigned a1, q, sum, n;
    printf("n= ");
    scanf("%u", &n);
    a1 = 1;
    q = 2;
    sum = a1 * (1 - pow(q, n)) / (1 - q);
    printf("sum=%u",sum);
        system("pause");
        return 0;
    
}
task3_1.c

若把32改为64,sum结果仍为4294967295

原因:int占四个字节,能够表示的整数范围0~4294967295,而int默认为有符号位,所以若用int无法实现。但如若用unsigned,则恰好能表示

但若是把32改为64,则unsigned也无法满足,double类型可以满足

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()

{
    int a1, a2, a3;
    char c1, c2, c3;
    double x, y;
    
    scanf("%d%d%d", &a1, &a2, &a3);//原代码缺少取字符
    printf("%d,%d,%d\n", a1, a2, a3);
    scanf("%c%c%c", &c1, &c2, &c3);
    printf("%c,%c,%c\n", c1, c2, c3);
    scanf("%lf%lf", &x, & y);//原代码加了逗号,scanf双引号之间不建议加逗号,易出错
    printf("%.1lf,%.1lf\n", x, y);//为了输出只有一位小数,最好使用格式修饰符
    system("pause");

        return 0;
}
task4_1.c

注意:在输入类型为数字时打空格,此代码下输出效果差别不大;但输入为字符时,空格也算符号,则输出效果完全不同

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()

{
    int aged1, aged2;
    char gender1, gender2;
    scanf("%d%c%d%c", &aged1,&gender1,&aged2, &gender2);
    printf("aged1=%d,gender1=%c\n", aged1, gender1);
    printf("aged2=%d,gender2=%c\n", aged2, gender2);

        system("pause");

        return 0;
    
}
task5_1.c

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()

{    
        char ans1,ans2;
    printf("每次课前认真预习、课后及时复习了没?(输入y或Y表示有,输入n或N表示没有): ");
    ans1 = getchar();
    getchar();
    printf("\n动手敲代码实践了没?(输入y或Y表示敲了,输入n或N表示木有敲): ");
    ans2 = getchar();
    if ((ans1 == 'y' || ans1 == 'Y')&&(ans2=='y'||ans2=='Y'))
        printf("\n罗马不是一天建成的,继续保持哦:)\n");
    else
        printf("\n罗马不是一天毁灭的,我们来建设吧\n");
    
     system("pause");

     return 0;
    
}
task6_1.c

如果把单个getchar()删去,则第一个符号输入完后输入空格,自动默认为非y或Y

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()

{
    int ans;
    char words[5000];
    printf("网课学习让一些人欢喜一些人忧\n");
    printf("1.作为喜欢自学且自律的人,觉得这样很好,有网络,自主学习,很ok\n");
    printf("2.不喜,不喜,很不喜,眼睛快瞎了,脑壳有点卡...\n");
    printf("3.中间派,不知道,说不清.\n");
    printf("4.其他...\n");
    printf("你的选择: \n");
    scanf("%d",& ans);

    if (ans == 4)
    {
        printf("请补充说明你的想法: \n");
        getchar();
        gets(words);
    }
    printf("\n");
    printf("当遇到问题时,你会选择:\n");
    printf("1.遇到问题,就解决问题,不懂的,搜索式学习,逐个攻破.\n");
    printf("2.遇到问题,不高兴,然后,...,没有然后了.\n");
    printf("3.其他...\n");
    printf("你的选择:\n");
    scanf("%d", &ans);
    if (ans == 1)
        printf(":)\n");
    else if (ans == 2)
        printf("这样不能解决问题啊.....我们选择1好不好:)");
    else if (ans ==3)
    {
        printf("请补充说明你的想法:\n");
        getchar();
        gets(words);

    }

    system("pause");
    return 0;
}
task7_1.c

 

如果把单个的getchar()删去,则无法吞掉我们所按的回车键,那么我们即使选择了补充自己想法,电脑默认回车即为想法,因此而结束本个问题。

 

 

二、实验总结

1、收获

对于代码的流程清楚明晰了起来,初步认识了必要的关键字和一些格式修饰符,并且我进一步感受到了c语言的魅力

2、易错点

1)取字符之间一定要加逗号

2)使用scanf时输入字符要注意不要输入多余的字符,尤其是回车键

3)if条件句后千万不要加逗号,不然会报错

4)getchar可以吃掉回车键,要善于使用

5)记住ans=='y',这里面既要注意等号是两个!!!!又要注意y使用时要加单引号

6)!=EOF要三次执行Ctrl+Z+Enter

7)注意不同关键字所占字节以及能表示的最大整数

posted @ 2022-10-13 23:17  随风守  阅读(60)  评论(0编辑  收藏  举报