实验2

实验报告

任务1

#include <stdio.h>
int main() {
    int a = 5, b = 7, c = 100, d, e, f;

    d = a / b * c;
    e = a * c / b;
    f = c / b * a;
    printf("d=%d, e=%d, f=%d\n", d, e, f);

    return 0;
}

 

 

任务2

#include <stdio.h>
int main() {
    int x=1234;
    float f=123.456;
    double m=123.456;
    char ch='a';
    char a[]="Hello, world!"; 
    int y=3, z=4; 
    
    printf("%d %d\n", y, z);
    printf("y=%d, z=%d\n", y,z);
    printf("%8d,%2d\n", x,x);
    printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f);
    printf("%lf\n",m);
    printf("%3c\n", ch);
    printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);
    
    return 0;
}

 

 代码中12~13行输出了整型数据

%8d表示以8位输出,由于原数据为四位,故在左侧用空格补足八位,%2d以两位输出,为避免损失,输出原数据。

15行中,%f表示输出浮点型;%8输出八位;%8.1f输出八位数据,保留一位小数;%0.2f输出两位小数;%.2e按指数形式输出,保留两位小数。

%lf:输出双精度型数据

%3c:输出三位字符

%s:按字符串输出;%15s:输出十五位字符串;%10.5:输出占十位,取了前五位%2.5s:取前五位,占两位,为防损失输出五位。%.3e以指数形式输出,保留三位,a为字符串,输出三位。

任务3

#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);
    scanf("%c%c%c", &c1, &c2, &c3);
    printf("%c%c%c\n", c1, c2, c3);
    scanf("%lf,%lf", &x, &y);
    printf("%lf,%1f\n", x, y);
    return 0;
}

 

 任务4

#include <stdio.h>
int main() {
    char x;
    x = getchar();
    if (x >= '0'&&x <= '9')
        printf("%c是数字字符\n", x);
    else if ((x >= 'A'&&x <= 'Z')||(x>='a'&&x<='z'))
        printf("%c是英文字母",x);
    else
        printf("%c是其它字符\n", x);
    return 0;
}

 

 

 

 任务5

#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;
}

 

 

 

 

 

 去掉第六行的“getchar()”后程序只接受了ans1就结束了

 

 任务6

 

#include<stdio.h>
#include<math.h>
int main() {
    int n, sum;
    scanf_s("%d", &n);
    int k = n + 1;
    sum = 1 * (1 - pow(2,k))/ (1 - 2);
    printf("当n=%d时,sum=%d", n, sum);
    return 0;
}

 

 

 

 

 

 

实验总结

任务1:程序进行计算时从左到右进行,由于代码中的数据都为整型,计算时结果只保留整数部分,因此会产生损失。各步计算顺序不同,产生的误差自然也不同。

任务2:

 代码中12~13行输出了整型数据

%8d表示以8位输出,由于原数据为四位,故在左侧用空格补足八位,%2d以两位输出,为避免损失,输出原数据。

15行中,%f表示输出浮点型;%8输出八位;%8.1f输出八位数据,保留一位小数;%0.2f输出两位小数;%.2e按指数形式输出,保留两位小数。

%lf:输出双精度型数据

%3c:输出三位字符

%s:按字符串输出;%15s:输出十五位字符串;%10.5:输出占十位,取了前五位%2.5s:取前五位,占两位,为防损失输出五位。%.3e以指数形式输出,保留三位,a为字符串,输出三位。

 任务5:代码中第六行内容删除后,运行时只能接收一个回答。

posted @ 2020-11-01 19:50  健力饱  阅读(78)  评论(0)    收藏  举报