实验二

Part 1:格式化输出函数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;
}

exe.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;
} 

exe.2修改后

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

 这两个错误一个是: 第一个scanf里少了地址运算符“&”;另一个是把“%f"改为”%lf",这是因为前面为双精度double类型,后面必须与%lf相对应。找出这些并不难。

几个常用格式符的用法:

%d: 按十进制整型输出。 %5d: 按数据长度为5输出,如果不够五位数,则左补空格;如果大于五位数,则原样输出;

 

%f: 指按浮点型数据输出。 %lf: 指输出精度精度为double类型。%.3f: 指按小数点后保留三位有效数字输出。%6.2f:指的是按数据宽度为6,而小数部分占两位输出。

当前面定义的数据为float类型时就必须用%f进行输出。

%e:指的是按指数型数据输出。

%s:指的是按字符串输出

Part 4 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;
} 

有break的情况:

无break的情况:

在switch语句中如果有break,这个switch结构会在这个break处执行完毕,然后去执行下一个程序或者结束。如果没有switch,这个程序会一直执行下去,直到这个switch结构结束。

Part 5 简单编程小练习

 编程模拟用户做选择题的情况:要求用户从键盘输入一个答案选项(A,B,C,D之一),如果用户答案是'A',则输 出提示信息"Binggo, you are right~",否则,输出提示信息"try again~"。

if 类型

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

switch 类型

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

运行结果如下:

 

这个编程比较简单,没什么难度,但要注意如果要用if语句,一定要记住else后面不加条件。

Part 6 拓展练习

 

/*求两个数的最大公约数*/
#include <stdio.h>
     int main(){
       int a,b,r;
       scanf("%d %d",&a,&b); 
      do{r=a%b;
     a=b;
     b=r;
      }while(r!=0);
    printf("最大公约数为:%d\n",a);
    
     return 0;    
}

实验总结与体会

 1.格式化输入与输出函数中最值得注意的是 地址运算符“&”的使用和精度类型所对应的格式符的使用。

 2.if语句中要注意的是 else后面不再添加条件。

 3.switch语句中一定要记得break的使用。

 4.学C语言一定要勤加练习,只有这样才能学好它。

1 https://www.cnblogs.com/zwl415/p/10639305.html

2 https://www.cnblogs.com/ft1574497591/p/10629304.html

3 https://www.cnblogs.com/WPA1/p/10634206.html

转载于:https://www.cnblogs.com/xinzhi999/p/10623365.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值