首页 > 其他 > 详细

实验2 格式化输入输出和分支语句

时间:2019-11-06 09:49:45      阅读:93      评论:0      收藏:0      [点我收藏+]

实验结论

Part1:

格式化输出函数printf()和格式化输入函数scanf() ex2_1.cpp

#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);
    // 不一致。%8d %2d 表示的数据位置宽度不同, 数据宽度不够,默认右对齐,左侧补空格 
    printf("%f, %8f, %8.1f, %0.2f, %.2e\n",f,f,f,f,f);
    // 不一致 。 %f, %8f 浮点型数据输入时为十进制,计算机读取转化为二进制,再输出为十进制之间有误差
    // %8.1f, %0.2f 小数点前面表示的是宽度,小数点后表示保留的小数点后位数,要四舍五入 
    // %.2e 小数点后表示保留的小数点后位数,要以指数形式表示 
    printf("%lf\n",m);//一致, %lf双精度浮点型,精确度高 
    printf("%3c\n", ch);//不一致 3也表示数据位置宽度,数据宽度不够,默认右对齐,左侧补空格 
    printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n",a,a,a,a,a);
    // 有的不一致。%15s数据位置宽度不同,数据宽度不够,默认右对齐,左侧补空格
    //%10.5s\n%2.5s\n%.3s\n   %a.bs 字符串输出a位,取字符串前b位, 对齐,左侧补空格
    return 0;
}

 

 

技术分享图片

精度要求高的情况下用%lf


ex2_2.cpp

 

/* 
C语言程序设计教程学习指导》p119 实验内容(2)  
这是一个格式化输入输出函数及格式符使用练习
找出两处错误,修改并运行程序 
为a1,a2,a3,c1,c2,c3,x,y输入数据,使得:
a1=1,a2=2,a3=3,c1=‘a‘,c2=‘b‘,c3=‘c‘, x=1.5, y=2.5 
*/ 
#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); // x为双精度浮点型常量,要用%lf 
    printf("%lf,%lf\n",x,y);// x为双精度浮点型常量,要用%lf 
    return 0;
} 

技术分享图片

 

 

Part2:

 

1.从键盘上输入3个数,让它们代表3条线段的长度,编写一个c程序判断这3条线段组成的三角形属于什么类型 (一般三角形、等腰三角形、等边三角形或不构成三角形)。

输入多组测试数据,让每一个分支都有可能被执行到,观察结果。

#include <stdio.h>
 int main() {
     double a,b,c;
     scanf("%lf %lf %lf", &a, &b, &c);
     
     if(a<0 || b<0 || c<0)
         printf("不能构成三角形\n");
     else if(a+b>c && a+c>b && b+c>a) {
         if(a==b && a==c)   
             printf("构成等边三角形\n");
         else if(a==b || a==c || b==c)   
             printf("构成等腰三角形\n");    
         else
             printf("构成一般三角形\n");
     }
     else
         printf("不能构成三角形\n");
         
     return 0;
} 

 

 技术分享图片

 技术分享图片

 技术分享图片

 技术分享图片

 

思考:line14-line19替换,在软件环境中,替换代码,然后运行程序,输入不同边长数 据进行测试验证。

 #include <stdio.h>
 int main() {
     double a,b,c;
     scanf("%lf %lf %lf", &a, &b, &c);
     
     if(a<0 || b<0 || c<0)
         printf("不能构成三角形\n");
     else if(a+b>c && a+c>b && b+c>a) {
        if(a==b || a==c || b==c) { 
           if (a==b && a==c) 
            printf("构成等边三角形\n"); 
        else
            printf("构成等腰三角形\n");
              } 
     else
        printf("构成一般三角形\n");

     }
     else
         printf("不能构成三角形\n");
         
     return 0;
} 

 技术分享图片

 技术分享图片

技术分享图片

技术分享图片

2.要求用户从键盘输入0~9之间的数字,选择屏幕配色方案,打印字符串。

运行程序,分别输入0~9之间的不同数值,观察程序运行结果,分析并理解其中if语句实现的多分支结构的用 法。

// 功能: 从键盘上输入数字选择屏幕配色方案,打印字符串 

// 输入1, 选择黑底绿色配色方案 
// 输入2,选择白底黑色配色方案 
// 输入3,选择蓝底黑色配色方案 
// 输入其它,选择黑底白字配色方案(默认) 

#include <stdio.h>
#include <stdlib.h>
int main() {
    char choice;
    
    // 显示菜单 
    printf("输入0~9以内的数字,选择屏幕背景色前景色方案: \n");
    printf("1-\t黑底绿色\n");
    printf("2-\t白底黑色\n");
    printf("3-\t蓝底白色\n");
    printf("其它-\t黑底白色(默认)\n");
    printf("\n请输入, 选择你想使用的屏幕配色方案:    ");
    
    // 要求用户从键盘输入0~9的数字,选择屏幕配色方案 
    choice = getchar();
    
    // 根据用户输入,设置屏幕配色方案 
    if (choice == 1) {
        system("color 02");
        printf("《黑客帝国》一类的影视剧常见这种屏幕色:)\n"); 
    } 
        
    else if(choice == 2) {
        system("color f0");
        printf("大部分编辑器默认是这种配色:)\n");    
    }
        
    else if(choice == 3) {
        system("color 1f");
        printf("这是机器蓝屏故障时的不讨喜色:)\n");
    }
        
    else {
        system("color 0f");
        printf("控制台程序默认小黑窗:)\n");        
    }
        
        
    printf("programming is fun, just try@_@\n");
    
    
    return 0;
} 

 技术分享图片

技术分享图片

技术分享图片

技术分享图片

思考:如果把line11中用于存放用户选择的choice类型改成int,修改程序代码,使其依然能够满足题目要求。

 

// 功能: 从键盘上输入数字选择屏幕配色方案,打印字符串 

// 输入1, 选择黑底绿色配色方案 
// 输入2,选择白底黑色配色方案 
// 输入3,选择蓝底黑色配色方案 
// 输入其它,选择黑底白字配色方案(默认) 

#include <stdio.h>
#include <stdlib.h>
int main() {
    int a;
    
    // 显示菜单 
    printf("输入0~9以内的数字,选择屏幕背景色前景色方案: \n");
    printf("1-\t黑底绿色\n");
    printf("2-\t白底黑色\n");
    printf("3-\t蓝底白色\n");
    printf("其它-\t黑底白色(默认)\n");
    printf("\n请输入, 选择你想使用的屏幕配色方案:    ");
    
    // 要求用户从键盘输入0~9的数字,选择屏幕配色方案 
    scanf("%d",&a);
    
    // 根据用户输入,设置屏幕配色方案 
    if (a == 1) {
        system("color 02");
        printf("《黑客帝国》一类的影视剧常见这种屏幕色:)\n"); 
    } 
        
    else if(a == 2) {
        system("color f0");
        printf("大部分编辑器默认是这种配色:)\n");    
    }
        
    else if(a == 3) {
        system("color 1f");
        printf("这是机器蓝屏故障时的不讨喜色:)\n");
    }
        
    else {
        system("color 0f");
        printf("控制台程序默认小黑窗:)\n");        
    }
        
        
    printf("programming is fun, just try@_@\n");
    
    
    return 0;
} 

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

Part3: 编程练习  

1.从键盘上输入一个三位数以内的十进制整数,判断其是否满足正序、逆序相同。例如,121满足。156不满足。 输入不同测试数据,确保程序逻辑无误、无考虑不周的状况。

 

#include<stdio.h>
int main()
{
    int a,b,c;
    printf("请输入一个三位数以内的十进制整数:");
    printf("计算其逆序数……\n");
    scanf("%d",&a);
    b=a%10*10+a/10;
    c=a/100+(a/10)%10*10+(a%10)*100;
    if(a<0||a>999)
    {
    printf("输入有误");
    }
    else if(a>9&&a<1000)
    {
        if(a==b||a==c)
        printf("%d正序与逆序相同",a);
         else
        {
          printf("%d正序与逆序不同",a);
        }
    }
    else if(a>0&&a<10)
    {
    printf("%d正序与逆序相同",a);
    }
    return 0;
} 

 技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

 

 

2.从键盘上输入年份和月份,计算该月有多少天。(要求:用if语句实现) 说明:教材p70 例3.25是用switch语句实现的。结合示例程序,理解算法逻辑,用if语句编程实现。 输入不同测试数据,确保程序逻辑无误、无考虑不周的状况。

 

#include<stdio.h>
int main()
{
    int year,month,day,leapyear;
    printf("输入年份 月份:\n");
    scanf("%d %d",&year,&month);
    if(year<0||month<1||month>12)
    printf("输入错误!\n");
    leapyear=year%4==0&&year%100!=0||year%400==0;
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
    day=31;
    else if(month==4||month==6||month==9||month==11)
    day=30;
    else
    day=28+leapyear; 
    printf("%d年%d月的天数为:%d\n",year,month,day);
    return 0;
 } 

技术分享图片

技术分享图片

技术分享图片

技术分享图片

3. 从键盘输入一个百分制成绩(整型量),要求输出成绩等级:优秀、良好、中等、及格、不及格。(要求:用 switch语句实现) 输入不同测试数据,确保程序逻辑无误、无考虑不周的状况。

 

#include<stdio.h>
#include<stdlib.h> 
int main ()
{
    int score;
    printf("输入分数(0~100):\n");
    scanf("%d",&score);
    if(score<0||score>100)
    {
    printf("分数不在有效区间内");
    exit(0);
    }
    switch(score/10)
    {
        case 10:
        case 9:printf("优秀\n");break;
        case 8:printf("良好\n");break;
        case 7:printf("中等\n");break;
        case 6:printf("及格\n");break;
        default:printf("不及格\n");break; 
    }
    return 0;
 } 

技术分享图片

技术分享图片

技术分享图片

实验总结与体会


格式化输入/输出函数、格式符使用中的注意事项:scanf后需要地址符告诉系统输入数字的存储位置

通过本次实验,对if语句、switch用法是否已经理解并掌握:掌握还不够

请总结列出。 本次实验尝试中踩的坑:不同函数输入方式不同。int型需要scanf(),而字符要getchar();

掌握还是不够熟练,发现问题比较慢 ;头文件会忘记写;if后运行的大括号会漏掉;if后要执行不可加“;”

 

实验2 格式化输入输出和分支语句

原文:https://www.cnblogs.com/lugorialing/p/11796314.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!