码迷,mamicode.com
首页 > 其他好文 > 详细

实验二

时间:2019-11-03 14:28:10      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:sys   return   mamicode   初始   使用   color   int   精度   switch语句   

#实验结论
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!";
     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,进行右对齐。

               输出格式为“%2d”,因为数据进行右对齐,从右边进行输出,因此输出原型。

第四行:输出格式为“%f”float以二进制形式储存,因此在转变数据输出时输出的时123.456的近似数。

               输出格式为“%8f”因为输出数据占8个单位,其中整数整体占一个单位,“.”占一个单位,小数位一个数据占一个单位(001原因见上一行)。

               输出格式“%8.1f”其中.1代表小数点后只有一个数据宽度,通过四舍五入将4进一位为5。同时数据宽度为8个单位,因此整数前右对齐,留出空格。

              输出格式“%0.2f”输出时四舍五入保留两位小数。

              输出格式“%.2e”%e指以指数形式输出实数,.2指输出的小数部分的位数,其中又进行了四舍五入。

第五行:输出格式“%lf”,因为m的输入形式是double型,因此以十进制形式输出,lf表示双精度浮点数,所占单位也比f大,因此在小数后面取0占位。

第六行:输出格式“%3c",表明数据宽度为3个单位,因此右对齐,在a的左边留出三个空格。

第八行:输出格式“%15s”,表明输出字符串占15个单位,右对齐,因此在左边空格占位。

第九行:输出格式“%10.5s”,10代表字符串占据10个单元,.5表示输出5个字符。右对齐,所以在左边空格占位。

第十行:输出格式“%2.5s”,2表示占2个单位,.5表示输出5个字符,右对齐。

第十一行:输出格式“%.3s”,表示输出3个字符。

 

ex2-2.cpp

错误源代码:

#include <stdio.h>
int main() {
 double x,y;
 char c1,c2,c3;
 int a1,a2,a3;
 scanf("%d%d%d",a1,a2,a3);                              -在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);                                       -在%f前加上l
 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("%f,%lf\n",x,y);
     return 0;
 } 

 

运行结果:

 

技术图片

 

 

总结1.

%d:%md-整型输出单位为m个单位,%m.nd-整型输出占m个单位,并且如果输出数据不满n个,即在左边用0占位。

%f:%lf-双精度浮点数,对应double。%m.nf-数据占m个单位,小数点后保留n个小数(进行四舍五入),%.nf-整数部分不变,小数部分保留n个小数(四舍五入)

%c:%mc-表示字符占m个单位,右对齐(空格补位)。

%s:%ms-字符串占m个单位,右对齐(空格补位)。%m.ns-字符串占m个单位,且字符串显示n个字符。

%lf:是double类型,如果用%f输入,会导致输入错误。

%ld:是长整型数,在整数是长整型时,如果用%d输出,就会只取整型前几个数,导致输出错误。

 

 Part2: 验证性内容

ex2-3.cpp

初始源代码:

 

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

 

运行结果:

技术图片

 

 

 

技术图片

 

 技术图片

 

 

 技术图片

 

 

技术图片

 

也可替换成:

  #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("构成等边三角形");
          else
          printf("构成等腰三角形"); 
         }else
          printf("构成一般三角形"); 
     }
      else
          printf("不能构成三角形\n");  
      return 0;
 } 

输出结果不变。

 

ex2-4.cpp

初始源代码:

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

运行结果:

技术图片

 

 技术图片

 

 技术图片

输入4~9:

 

 技术图片

 

 技术图片

 

 

  如果变量choice由char类型改成int类型:

应将源代码改为:

#include <stdio.h>
#include <stdlib.h>
int main() {
    int choice;
    
    // 显示菜单 
    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",&choice);
    
    // 根据用户输入,设置屏幕配色方案 
    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;
} 

 

输出结果不变。

part3: 编程练习

1、从键盘上输入一个三位数以内的十进制整数,判断其是否满足正序、逆序相同。

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d",&a);    
    b=a/10+(a%10)*10;
    c=a/100+(a/10-(a/100)*10)*10+((a%100)%10)*100;

    if(a>=0&&a<10)
    printf("%d正序和逆序相同",a);
    else if(a==b||a==c)
    printf("%d正序和逆序相同",a);
    else
    printf("%d正序和逆序不相同",a);
    return 0;
}

结果:

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

2、 从键盘上输入年份和月份,计算该月有多少天

源代码:

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

输出结果:

技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 3、从键盘输入一个百分制成绩(整型量),要求输出成绩等级:优秀、良好、中等、及格、不及格

源代码:

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

运行结果:

技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

技术图片

 

 #实验总结与体会

1、if()出错

2、switch用法时,忘加break;做截止。

3、#include<stdlib.h>

      ······

     if(x<0||x>100)
 {
  printf("分数不在有效区间内\n");
  exit(0);
 }

     ······

上面一段我在switch语句中想用default代替,结果发现不好代。

实验二

标签:sys   return   mamicode   初始   使用   color   int   精度   switch语句   

原文地址:https://www.cnblogs.com/gebilaowangfangruidong/p/11784380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!