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

Posted shouweareld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验2 格式化输入输出和分支语句相关的知识,希望对你有一定的参考价值。

Part1
/*
《C语言程序设计教程学习指导》p118 实验内容(1) 这是一个常用格式控制符使用示例 运行程序,观察行结果,对照每一行printf()中的格式控制符,理解其功能和用法 */ #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 ", y, z); printf("y=%d, z=%d ", y,z); printf("%8d,%2d ", x,x); printf("%f, %8f, %8.1f, %0.2f, %.2e ",f,f,f,f,f); printf("%lf ",m); printf("%3c ", ch); printf("%s %15s %10.5s %2.5s %.3s ",a,a,a,a,a); return 0; }

技术图片

第2行是因为输出函数中用了y=,z=的修饰符

第3行是因为输出函数中用了限制输出数据域宽的修饰符8,所以前面的“1234”有4个空格;后面虽然也用了限制输出数据域宽的修饰符2,因为数据长度>2,所以按实际输出

第4行第1个是因为十进制与二进制转换之间发生错误,所以有123.456001;第2个是因为输出函数中用了限制输出数据域宽的修饰符8,”123“为1位,“."为1位,”456“为3位,所以“123.456001”前面有2个空格;第3个是因为修饰符.1代表小数点后保留一位,四舍五入取5,同时输出函数中用了限制输出数据域宽的修饰符8,所以前面有空格;第4个是因为修饰符.2表示小数点后保留两位,四舍五入;第5个是因为.2e表示以指数形式输出,且四舍五入保留2位

第5行是因为”%If“表示双精度浮点型,以double型输出,所占位数不一样,所以后面补0

第6行是因为输出函数中用了限制输出数据域宽的修饰符3,所以“a”前面有2个空格

第8行是因为输出函数中用了限制输出数据域宽的修饰符15,所以“Hello,world!”前面有3个空格

第9行是因为输出函数中用了限制输出数据域宽的修饰符10和修饰符.5,表示输出数据域宽为10,但字符串实际输出位数是5,所以输出是“Hello”,并且前面有5个空格

第10行是因为输出函数中用了限制输出数据域宽的修饰符2和修饰符.5,虽然也用了限制输出数据域宽的修饰符2,因为数据长度>2,所以按实际输出,但字符串实际输出位数是5,所以输出是“Hello”

第11行是因为用了修饰符.3,所以字符串实际输出位数是3,是“Hel"

 

/* 
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
",a1,a2,a3);
    scanf("%c%c%c",&c1,&c2,&c3);
    printf("%c%c%c
",c1,c2,c3);
    scanf("%lf,%lf",&x,&y);
    printf("%lf,%lf
",x,y);
    return 0;
} 

技术图片

原代码中变量a1,a2,a3在输入函数中没有使用地址形式,应加上&;x是双精度变量,在输入函数中使用了单精度格式,应加上l

Part2 

/*
《C语言程序设计教程学习指导》p122 实验内容(1):判断三角形类型:一般三角形、等腰三角形、等边三角形 
 这是一个使用多分支if语句编程解决非数值类问题示例 
 运行程序,输入不同边长数据进行测试,观察输出结果是否正确,理解和巩固if语句功能和用法
*/ 
 #include <stdio.h>
 int main() {
     double a,b,c;
     scanf("%lf %lf %lf", &a, &b, &c);
     
     if(a<0 || b<0 || c<0)
         printf("不能构成三角形
");
     else if(a+b>c && a+c>b && b+c>a) {
         if(a==b && a==c)   
             printf("构成等边三角形
");
         else if(a==b || a==c || b==c)   
             printf("构成等腰三角形
");    
         else
             printf("构成一般三角形
");
     }
     else
         printf("不能构成三角形
");
         
     return 0;
} 

技术图片

技术图片

技术图片

技术图片

技术图片

 

/*
《C语言程序设计教程学习指导》p122 实验内容(1):判断三角形类型:一般三角形、等腰三角形、等边三角形 
 这是一个使用多分支if语句编程解决非数值类问题示例 
 运行程序,输入不同边长数据进行测试,观察输出结果是否正确,理解和巩固if语句功能和用法
*/ 
 #include <stdio.h>
 int main() {
     double a,b,c;
     scanf("%lf %lf %lf", &a, &b, &c);
     
     if(a<0 || b<0 || c<0)
         printf("不能构成三角形
");
     else if(a+b>c && a+c>b && b+c>a) {
    if(a==b || a==c || b==c) {
        if(a==b && a==c)
             printf("构成等边三角形
");
         else    
             printf("构成等腰三角形
");    
         }
    else
         printf("构成一般三角形
");
     }
     else
         printf("不能构成三角形
");
         
     return 0;
} 

技术图片

技术图片

技术图片

技术图片

技术图片

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

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

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

技术图片

技术图片

技术图片

技术图片

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

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

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

技术图片

 技术图片

技术图片

技术图片

choice由char改为int后程序不做改变依然能满足题目要求

Part3

#include<stdio.h>
int main()
{
    int x,y;
    printf("请输入一个三位以内的十进制整数:
");
    scanf("%d",&x);
    printf("计算其逆序数:
");   
    if(x<=0||x>=1000)
    {        
        printf("数据输入错误,请重新输入
");       
    }
    if(x>0&&x<=9)
    { 
        y=x;
        printf("%d",y);
        printf("正序和逆序相同
");
    }     
    if(x>=10&&x<=99)
    {   
        y=(x/10)%10+x%10*10;    
        if(y==x)      
        printf("正序和逆序相同
");
        else
        printf("正序和逆序不同
"); 
    } 
    if(x>=100&&x<=999)
    {
        y=(x/10)%10*10+(x/100)%10+(x%10)*100;
        if(y==x)
        printf("正序和逆序相同
"); 
        else
        printf("正序和逆序不同
");               
    } 
    return 0;    
}

技术图片

技术图片

技术图片

#include<stdio.h>
int main()
{
    printf("输入年份 月份:
");
    int year,month,day,leapyear;
    scanf("%d %d",&year,&month);
    leapyear=year%4==0&&year%100!=0||year%400==0;
    if(year<0||month<1||month>12)
        printf("输入的数据错误!");
    else 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 if(month==2)
        day=28+leapyear;
    printf("%d年%d月的天数为:%d
",year,month,day);
    return 0;    
}

技术图片

技术图片

技术图片

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

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

技术图片

 

 

以上是关于实验2 格式化输入输出和分支语句的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

实验四——多分支结构及本章总结

实验四——多分支结构及本章总结