实验2 C语言表达式编程应用及输入输出函数

任务1:

// ex1.cpp
#include <stdio.h>
#include <stdlib.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, ", d, e, f);
    
    system("pause");
    
    return 0;
}

 

因为定义的a,b,c,d,e,f均为整型,所以当C语言从左往右进行运算时,所得的商将小数部分舍弃掉,就会出现现在的结果;

任务2:

// ex2.cpp

#include <stdio.h>
#include <stdlib.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);
    
    system("pause");
    
    return 0;
}

%d :用来输出十进制整型数据的实际长度输出;
\n :换行;
%8d :按照有符号十进制整数格式输出,输出数据位宽为8,如果不足8位默认右对齐;
%2d :按照有符号十进制整数格式输出,输出数据位宽为2,如果大于2位,按照原来数据的位宽输出;
%f :以float型格式输入或输出变量的值默认保留6位小数;
%8f :按照float格式输出,输出数据位宽为8,保留6位小数,如果不足8位默认右对齐,如果大于8位,按照原来数据的位宽输出;
%8.1f :按照float格式输出,输出数据位宽为8,保留1位小数,如果不足8位默认右对齐,如果大于8位,按照原来数据的位宽输出;
%0.2f :按照float格式输出,保留2位小数;
%.2e :以科学计数法形式输出,保留两位小数;
%lf :以double型格式输入或输出变量的值,保留6位小数;
%3c :按照字符型格式输出,输出数据位宽为3,如果不足3位默认右对齐,如果大于3位,按照原来数据的位宽输出;
%s :按照字符串型格式输出;
%15s :按照字符串型格式输出,输出数据位宽为15,如果不足15位默认右对齐,如果大于15位,按照原来数据的位宽输出;
%10.5s :按照字符串型格式输出,输出数据位宽为10,且只输出字符串的前5个字符,如果不足10位默认右对齐,如果大于10位,按照原来数据的位宽输出;
%2.5s :按照字符串型格式输出,输出数据位宽为2,且只输出字符串的前5个字符,如果不足2位默认右对齐,如果大于2位,按照原来数据的位宽输出;
%.3s :按照字符串型格式输出,且只输出字符串的前3个字符

任务3:

// ex3.cpp

#include <stdio.h>
#include <stdlib.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("%.1lf, %.1lf\n", x, y);
    
    system("pause");
    
    return 0;
}

任务4:

// ex4.cpp
// 
#include <stdio.h>
#include <stdlib.h>
int main() {
    char x;
    x = getchar();
    
    if(x >= 48 && x<= 57)
        printf("%c是数字字符\n", x);

    else if(x >= 65 &&x <= 90 || x >= 97 && x <= 122)
        printf("%c是字母字符\n", x);

    else
        printf("%c是其他字符\n", x);

    system("pause");
    
    return 0;
}

任务5:

// ex5.cpp
#include <stdio.h>
#include <stdlib.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");

    system("pause");
    
    return 0;
}

如果没有getchar()这个函数,就无法运行第二个问题,应该是getchar()这个函数只能输入一个字符,不知道说的对不对。

任务6:

// ex6.cpp
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){
    
    int a1 = 1, q = 2, n;
    double sum;
    
    scanf("%d", &n);
    
    sum = (a1*(1-pow(q,n)))/(1-q);
    printf("n = %d 时, sum = %.0lf", n, sum);
    
    system("pause");
    
    return 0;
}

实验结论:通过这次实验,我了解了多种函数的用法,收获颇丰;但还是要多上机练习才可。

posted @ 2020-11-01 17:45  huvyioy  阅读(106)  评论(2编辑  收藏  举报