实验二总结


Part1: 格式化输出函数printf()和格式化输入函数scanf()

#include <stdio.h>
int main() {
    int x=1234;
    float f=123.456;
    double m=123.456;
    char ch='a';
    char a[]="Hello, world!"; // 定义一个数组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;
}

此部分主要考察C语言常用输出格式符:在这个程序中,我们会发现第四行输出的最后三位数是“001”而不是“000”,这是由于计算机精度问题造成的;然后就是代码打的是输出“%2d",结果输出的是”1234”而不是“12”,这是计算机的默认规则,即实际数位超过设定数位按照实际数位输出;还有就是在输入double型数据时scanf()要用%lf。

更改前:

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

更改后:

#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,%lf\n",x,y);
    return 0;
} 

此代码缺少了取地址运算符"&";双精度变量x对应长双精度格式%lf。

Part 2:

①getchar()

#include <stdio.h>
int main() {
    char ch;
    ch = getchar();        // 用户从键盘输入字符,如果输入成功,输入的字符被赋值给ch 
    putchar(ch);        // 使用putchar()输出字符变量ch中存放的字符 
    printf("%c",ch);     // 使用printf()和格式符%c输出单个字符 
    return 0;
}

②putchar()

#include <stdio.h>
int main() {
    char ch;
    ch = 'A';
    putchar(ch);          // 参数ch是字符型变量 
    putchar(ch+32);      // 参数ch+32是字符型表达式 
    putchar('\x41');     // 参数是字符型常量,是用十六进制表示的转义字符 
    putchar('\n');       // 参数\n是字符型常量,是转义字符,表示换行 
    return 0;
}

Part3:if语句

#include <stdio.h>
int main() {
    int a,b;
    int t;   // 用于交换a和b时,作为中间变量 
    printf("输入两个整数给a和b:\n");
    scanf("%d%d",&a,&b);
    if(a>b) {
        t = a; 
        a = b;
        b = t; 
    }
    printf("a=%d, b=%d\n",a,b);
    return 0;
} 
#include <stdio.h>
int main() {
    printf("输入一个整数给n:\n");
    scanf("%d",&n);
    if(n%2)
        printf("n是奇数.\n");
    else
        printf("n是偶数.\n");
    return 0;
} 
#include <stdio.h>
int main() {
    int level;
    printf("输入现在状态等级(1-5):  ");
    scanf("%d",&level);
    if(level == 1) 
        printf("high翻了:)\n");
    else if(level == 2) 
        printf("low爆了:(\n");
    else
        printf("一言难尽,无法概括。。。\n");
    return 0;
} 

Part4: switch语句体验练习

#include <stdio.h>
int main() {
    int level;
    printf("输入现在状态等级(1-5):  ");
    scanf("%d",&level);
    switch(level) {
        case 1: printf("high翻了:)\n"); break;
        case 2: printf("low爆了:(\n"); break;
        default: printf("一言难尽,无法概括。。。\n");
    }
    return 0;
} 

若把case语句后面的break删除,这出现下图所示结果:

这说明switch语句遇到break则跳出,否则一直执行,所以我们在使用switch语句时,应该注意不要漏掉case语句后面的break。

Part 5

方法一:if语句:

#include<stdio.h>
int main(){
    int x;
    printf("请输入你的答案(A,B,C or D):");
    scanf("%c",&x);
    if(x=='A')
    printf("Binggo, you are right~");
    else
    printf("try again~");
    return 0;
}

方法二:switch语句:

#include<stdio.h>
int main(){
    int answer;
    printf("请输入你的答案(A,B,C or D):");
    scanf("%c",&answer);
    switch(answer){
        case'A':printf("Binggo, you are right~");break;
        default:printf("try again~");break;
    }
    return 0;
}

总结:在这次实验中,我初步了解了if语句和switch语句的用法,对于精度要求、字符宽度等细节也有了进一步的了解。

互评地址:

https://www.cnblogs.com/ability-1206/p/10618612.html

https://www.cnblogs.com/nuist-tyl/p/10643576.html

https://www.cnblogs.com/aoliaoliao/p/10608671.html

优质内容筛选与推荐>>
1、GNU make manual 翻译( 一百零九)
2、【NOIP复习】最短路总结
3、整数划分类型题目--专练
4、nginx 安装
5、2017 《java技术预留作业2》 1501 苑博洋


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn