第一次作业 基本程序结构

  1. 求累加和
#include <stdio.h>

int main() {
    int k;
    scanf("%d", &k);
    /* 直接计算
    double tot = k * (k + 1) / 2;
    printf("%.0lf,%.2lf\n", tot, tot / k);
    */
    int tot = 0;
    for(int i = 1; i <= k; i++) {
        tot += i;
    }
    printf("%d,%.2lf\n", tot, ((double) tot) / k); // 注意要先转成double再除
    for(int i = 2; i <= k; i += 2) {
        printf("%d ", i);
    }
    printf("\n");
}
  1. 计算阶乘
#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int ans = 1;
    for(int i = 1; i <= n; i++)
        ans *= i;
    printf("%d\n", ans);
	return 0;
}
  1. 两点间的距离
#include <stdio.h>
#include <math.h>

int main() {
    double x1, x2, y1, y2, z1, z2;
    scanf("%lf,%lf,%lf", &x1, &y1, &z1);
    scanf("%lf,%lf,%lf", &x2, &y2, &z2);//scanf中%lf之间的逗号是必须的
    printf("%.2lf\n", sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2) + (z1 - z2)*(z1 - z2)));
	return 0;
}
  1. 查看单精度实型数的内存二进制存储
#include <stdio.h>
int main() {
    float a, *p;
    unsigned b, *q;
    scanf("%f", &a);
    p = &a;
    q = (unsigned *)p;
    b = *q;
    printf("%x", b);
    return 0;
}
  1. 查看双精度浮点数的内存二进制存储

本题有许多同学表示使用题目给定的代码在本地运行结果异常,这是由于本地和网站使用的编译器版本差异导致的。若要令代码在本地测试通过,需要将%#lX改为%#llX

#include <stdio.h>
int main() {
    double a, *p;
    long long b, *q;
    scanf("%lf", &a);
    p = &a;
    q = (long long *)p;
    b = *q;
    printf("%#llX", b);
	return 0;
}
posted @ 2023-10-10 23:20  计算概论B-2023秋-4班  阅读(111)  评论(0)    收藏  举报