实验1

实验任务1


task1

代码:

#include <stdio.h> 

int main() { 
    printf(" O \n"); 
    printf("<H>\n"); 
    printf("I I\n"); 

    return 0; 
}

运行结果:

 

 task1_1

代码:

#include <stdio.h> 

int main() { 
    printf(" O \n"); 
    printf("<H>\n"); 
    printf("I I\n"); 
    
    printf(" O \n"); 
    printf("<H>\n"); 
    printf("I I\n"); 
    
    return 0; 
}

运行结果:

 

  task1_2

代码:

#include <stdio.h> 

int main() { 
    printf(" O    O\n"); 
    printf("<H>  <H>\n"); 
    printf("I I  I I\n"); 

    return 0; 
}

运行结果:

 

 task2

代码:

// 1+2+3+...+n (设n的取值在100以内) 
// 用数学归纳法 (求和公式计算) 

#include <stdio.h> 

int main() {
    int n, sum;
    // 从键盘上输入一个十进制整数给n 
    scanf("%d", &n);
    // 待补足代码 // 
    
    sum = n*(n+1)/2;
    
    /*int i=0;
    while(i<=n) {
        sum+=i;
        i++;
    } */
    
    // 打印输出求和结果 
    printf("sum = %d\n", sum); 
    return 0; 
}

运行结果:

 

 

 讨论:

其中
写法3:sum = n/2*(n+1) 和
写法4: sum = (n+1)/2*n
不能符合题目要求。
因为n为int数据类型,当程序执行到(n+1)/2时会自动舍去数据的小数位导致结果错误。
同理当n为奇数时n/2会导致小数部分丢失,结果错误。
 
task3
代码:
#include <stdio.h>

int main()
{
    int a, b, t;
    
    a = 3;
    b = 4;
    printf("a = %d, b = %d\n", a, b);
    
    t = a;
    a = b;
    b = t;
    printf("a = %d, b = %d\n", a, b);
    
    return 0;
}
运行结果:
讨论:
line11-13实现的功能为交换a, b两个变量的值。
 
task4
代码:
#include <stdio.h>

int main()
{
    int x, t, m;
    
    x = 123;
    printf("x = %d\n", x);
    
    t = 0;
    
    m = x % 10;
    t = t *10 + m;
    x = x / 10;
    
    m = x % 10;
    t = t * 10 + m;
    x = x / 10;
    
    m = x % 10;
    t = t * 10 + m;
    x = x / 10;
    
    printf("t = %d\n", t);
    
    return 0;
}
运行结果:

 

讨论:

代码line10-22组合起来实现的功能是将给定的三位数的各位数字交换位置。

 

task5

代码:

// 从键盘上输入三个数据作为三角形边长,判断其能否构成三角形
// 构成三角形的条件: 任意两边之和大于第三边

#include <stdio.h>

int main()
{
    float a, b, c;
    
    // 输入三边边长
    scanf("%f%f%f", &a, &b, &c);
    
    // 判断能否构成三角形
    // 补足括号里的逻辑表达式
    if(a+b>c&&abs(a-b)<c)
        printf("能构成三角形\n");
    else
        printf("不能构成三角形\n");
        
    return 0;
}

运行结果:

task6

代码:

// 计算10亿秒约等于多少年,并打印输出
#include <stdio.h>

int main()
{
    int year;
    
    // 补足代码
    
    //year=1e9/60/60/24/365;
    
    year=1e9/31556926;
    
    printf("10亿秒约等于%d年\n", year);
    return 0;
}

运行结果:

 

task7

代码:

// 生成一个[60, 100]区间之间的随机整数,并打印输出
#include <stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
    int n;
    srand((unsigned)time(NULL));
    n = rand() % 41 + 60;
    
printf("n = %d\n", n);
return 0;
}

运行结果:

task8

代码:

#include <stdio.h>
int main()
{
    char ans1, ans2;
    
    printf("每次课前认真预习、课后及时复习了没? (输入y或Y表示有,输入n或N表示没有) : ");
    ans1 = getchar(); // 从键盘输入一个字符,赋值给ans1
    
    getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。

    printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : ");
    ans2 = getchar();

    if ((ans1 == 'y'||ans1 == 'Y') && (ans2 == 'y'||ans2 == 'Y')) // 待补足,判断用户回答ans1和ans2都是小写y或大写Y
        printf("\n罗马不是一天建成的, 继续保持哦:)\n");
    else
        printf("\n罗马不是一天毁灭的, 我们来建设吧\n");
    return 0;
}

运行结果:

 

 

 

 

posted @ 2023-03-04 13:30  lolol954321  阅读(38)  评论(0)    收藏  举报