实验1

task1_1

源代码

#include<stdio.h>
int main()
{
    printf(" O \n");
    printf("<H>\n");
    printf("I I\n\n\n");
    
    printf(" O \n");
    printf("<H>\n");
    printf("I I\n");
    
    return 0;
}

 运行截图

task1_2

 源代码

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

    return 0;
}

 运行截图

 task2_2

源代码

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

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

 

 task2_3

源代码

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

int main()
{
    double x,ans;
    
    while(scanf("%lf",&x)!=EOF){
    
    
    ans=(9.0/5)*x+32; //注意要将9/5转换为double类型计算,否则结果永远是32。
    printf("摄氏度c=%f时,华氏度f=%.2f\n",x,ans);

    
}
    return 0;
}

 task3

源代码

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

int main()
{
    double n,sum;
    printf("n=");
    scanf("%lf",&n);
    sum=(1-pow(2.0,n))/(1-2);
    printf("sum=%f",sum);
    
    


    

    return 0;
}

 

 思考:答案错误,精度不足

            将数据类型从double 改为 long double即可

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

int main()
{
    long double n, sum, x;

    printf("n=");
    scanf_s("%lf", &n);
    x = pow(2.0, n);
    sum = (1 - x) / (1 - 2.0);
    printf("sum=%lf", sum);






    return 0;
}

运行截图:

 

 task 4

修改后的代码:

#include<stdio.h>
int main()
{
    double x, y;
    char c1, c2, c3;
    int a1, a2, a3;
    scanf_s("%d%d%d", &a1, &a2, &a3);
    printf("%d,%d,%d\n", a1, a2, a3);
    getchar();
    c1 = getchar();
   // printf("1\n");
    c2 = getchar();
   // printf("2\n");
    c3 = getchar();
    //printf("3\n");
    getchar();
    printf("%c", c1);
    printf("%c", c2);
    printf("%c\n", c3);
    scanf("%lf,%lf", &x, &y);
    printf("%f,%lf\n", x, y);
    return 0;//因为用scanf总是出现奇奇怪怪的错误 所以改用getchar,因为不知道程序到底进行到哪一步出了问题 所以中间添加了printf看程序进行到了哪一步
}

运行截图:

 task4补充:

#include<stdio.h>
int main()
{
double x,y;
char c1,c2,c3;
int a1,a2,a3;
scanf("%d%d%d",&a1,&a2,&a3);
getchar();
printf("%d,%d,%d\n",a1,a2,a3);

scanf("%c%c%c",&c1,&c2,&c3);
getchar();
printf("%c%c%c\n",c1,c2,c3);

scanf("%lf,%lf",&x,&y);
getchar();
printf("%f,%lf\n",x,y);
return 0;
}

 

 

 

 

 task5:

源代码:

#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int main()
{
    int age1, age2;
    char gender1, gender2;
    scanf("%d%c%d%c", &age1, &gender1, &age2, &gender2);
    printf("age1 = %d, gender1 = %c\n", age1, gender1);
    printf("age2 = %d, gender2 = %c\n", age2, gender2);
    return 0;
}

 

 task6

源代码:

#include <stdio.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");
    return 0;
}

 

 task7

#include <stdio.h>
int main()
{
    int answer;
    char words[5000];
    printf("网课学习让一些人欢喜一些人忧.\n");
    printf("1. 作为喜欢自学且自律的人,觉得这样很好. 有网络,自主学习,很ok.\n");
    printf("2. 不喜,不喜,很不喜. 眼睛快瞎了. 脑壳有点卡...\n");
    printf("3. 中间派. 不知道. 说不清.\n");
    printf("4. 其它...\n");
    printf("你的选择: ");
    scanf("%d", &answer);
    if (answer == 4)
    {
        printf("请补充说明你的想法: \n");
        getchar(); // 这一行去掉之后会导致get(words)失效 因为回车键给到了get(words)
        gets(words); 
    }
    printf("\n");
    printf("当遇到问题时, 你会选择:\n");
    printf("1. 遇到问题, 就解决问题。不懂的,搜索式学习,逐个攻破.\n");
    printf("2. 遇到问题, 不高兴。然后,...,没有了.\n");
    printf("3. 其它...\n");
    printf("你的选择: ");
    scanf("%d", &answer);
    if (answer == 1)
        printf(":)\n");
    else if (answer == 2)
        printf("这样不能解决问题啊...我们选择1好不好:)\n");
    else if (answer == 3)
    {
        printf("请补充说明你的想法: \n");
        getchar(); 
        gets(words); 
    }
    return 0;
}

 

 实验总结

1:注意要将9/5转换为double类型计算。

2:中间添加了printf看程序进行到了哪一步,以更好地判断程序哪里除了问题。   例如getchar();用于吃掉enter键

3:易错点:scanf("%d",&a)不加取址符&

                    scanf的输入问题:scanf("%d %c",&a,%char1); 中间的空格可以吃掉输入时所有的空格;

                                                %d%c%d%c输入的对应格式应该是数字字符(spacekey)数字字符

posted @ 2022-10-12 19:33  梅剑锋  阅读(71)  评论(0)    收藏  举报