实验1 C语言开发环境使用和编程初体验

task1

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

    return 0;
}

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

 

task2

#include <stdio.h>
#include<stdlib.h>
int main(){
    int x,y;
    int r1, r2, r3, r4;
    x=1,y=2;
    r1 = x + y;
    r2 = x - y;
    r3 = x * y;
    r4 = x / y;
    printf("r1 = %d\n", r1); 
    printf("r2 = %d\n", r2); 
    printf("r3 = %d\n", r3); 
    printf("r4 = %d\n", r4);
    system("pause");
    return 0;
}

#include <stdio.h>
int main() {

    float x, y;
    float r1, r2, r3, r4;
    x = 1;
    y = 2;
    r1 = x + y;
    r2 = x - y;
    r3 = x * y;
    r4 = x / y;
    printf("r1 = %f\n", r1);
    printf("r2 = %f\n", r2); 
    printf("r3 = %f\n", r3); 
    printf("r4 = %f\n", r4); 
    return 0;
}

两次运行中r4因为表示类型不同造成精度差异。

 

task3

#include <stdio.h>
int main() {
    int n, r1, r2, r3, r4;
    n = 100;
    r1 = n*(n+1)/2;
    r2 = (n+1)*n/2;
    r3 = n/2*(n+1);
    r4 = (n+1)/2*n;
    printf("n = %d\n", n);
    printf("r1 = %d\n", r1);
    printf("r2 = %d\n", r2);
    printf("r3 = %d\n", r3);
    printf("r4 = %d\n", r4);
    return 0;
}

 

#include <stdio.h>
int main() {
    int n, r1, r2, r3, r4;
    n = 101;
    r1 = n*(n+1)/2;
    r2 = (n+1)*n/2;
    r3 = n/2*(n+1);
    r4 = (n+1)/2*n;
    printf("n = %d\n", n);
    printf("r1 = %d\n", r1);
    printf("r2 = %d\n", r2);
    printf("r3 = %d\n", r3);
    printf("r4 = %d\n", r4);
    return 0;
    
}

line7:n*(n+1)/2

line8:(n+1)*n/2

line9:n/2*(n+1)

line10:(n+1)/2*n

运算符号/表示取整,奇数/2时值有精度偏差。

 

task4

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

    return 0;
}

 

task5

#include <stdio.h>
int main()
{
    int a1, a2;
    char c1, c2;
    scanf("%d%c%d%c", &a1, &c1, &a2, &c2);
    printf("a1 = %d, a2 = %d\n", a1, a2);
    printf("c1 = %c, c2 = %c\n", c1, c2);
    return 0;
}

 

task6

// 测试你是哪一类学习者

#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(); // 这行代码为什么放在这里,如果去掉了,会怎么样?
        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;
}

 getchar()用途类似于使会话暂停,这样的话如果选择其他这个选项就会给用户时间输入自己的想法,不会立刻进入下一个环节。

 

实验总结:getchar()可以用在一些场合使会话暂停或者让几次输入环节逐个开展。

posted @ 2021-10-30 13:22  省力  阅读(39)  评论(1编辑  收藏  举报