实验二

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

(1)

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

 

常用的输出格式字符需要熟练运用,“%8d”中的8表示列数,当实际数位超过设定值时,保留实际位数,例如%2.5s中输出值为hello。

小数点后位数表示输出精度

 

(2)修改

修改前源代码

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

地址是由地址运算符“&”后跟变量名组成的。第七行缺失了地址符&

double型数据在scanf()函数中要用%lf。倒数第三行少了l

 

Part 2

(1)在c程序开发环境下,编写、运行程序putchar.c,结合运行结果,理解其用法

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

 

(2)在c程序开发环境下,编写、运行程序getchar.c,结合运行结果,理解其用法

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

 

 

Part 3

(1)单分支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;
}

if语句后要带{}

 

(2)两分支if语句

如果括号里的表达式成立(逻辑真),就执行语句序列1;否则,执行语句序列2。

#include <stdio.h>
int main() {
    printf("输入一个整数给n:\n");
    scanf("%d",&n);
    if(n%2)
        printf("n是奇数.\n");
    else
        printf("n是偶数.\n");
    return 0;
}

 

(3)多分支if语句

如果表达式1成立(逻辑真),就执行语句序列1;否则,判断表达式2,如果表达式2成立,执行语句序 列2,否则,判断表达式3,...

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

if后的小括号必须要有,语句序列中只有一条语句的时候,可以省略{}

 

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 1和case 2最后的break, 保存并重新编译后,再次运行,运行结果为

 

去掉break程序无法暂停,将完整运行

Part5: 简单编程练习

 

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

注意赋值为==不是=

 

 

【实验总结与体会】

*本次实验都是在已经给出流程图的情况下一些较为简单的if语句,如果在只有问题的情况下需要自己设计还未掌握

*符号中英文转化有些细节还是不到位,在查找自己的错误时还存在困难

 

实验一评论地址:

https://www.cnblogs.com/radius1/p/10559627.html

https://www.cnblogs.com/yuan82/p/10565353.html

https://www.cnblogs.com/ls4computer/p/10566103.html

 

posted @ 2019-03-27 16:46  奥利奥利奥qxy  阅读(226)  评论(1编辑  收藏  举报