您的位置:首页 > 编程语言 > C语言/C++

C语言基础题

2016-12-07 15:16 253 查看
1,三个整数排列,从小到大排序后输出。

样例输入:20,7,33

样例输出:7,20,33

1.第一次输出

#include<stdio.h>

#include<stdlib.h>

int main(){

  int a,b,c;

  int s;

  scanf("%d%d%d",&a,&b,&c);

  if(a>b){

          s=a;

          a=b;

          b=s;

          }

  if(c<a){

          printf("%d %d %d\n",c,a,b);

          }

          if(c>b){

                  printf("%d %d %d\n",a,b,c);

                  }

          else{

               printf("%d %d %d\n",a,c,b);

               }

  system("pause");

  return 0;

不足是:完全没有考虑到输入的三个数一样大小时候的情况。

2.参照书中的例子

#include<stdio.h>

#include<stdlib.h>

int main(){

   int a,b,c;

   scanf("%d %d %d",&a,&b,&c);

   if(c<=b&&b<=a)printf("%d %d %d\n",c,b,a);

   else if(a<=b&&b<=c)printf("%d %d %d\n",a,b,c);

   else if(a<=c&&c<=b)printf("%d %d %d\n",a,c,b);

   else if(b<=c&&c<=a)printf("%d %d %d\n",b,c,a);

   else if(b<=a&&a<=c)printf("%d %d %d\n",b,a,c);

   else if(c<=a&&a<=b)printf("%d %d %d\n",c,a,b);

 

   system("pause");

   return 0;

}

一开始程序的方向逻辑没有清楚,实际,应该将a,b,c三个数的集中排列情况列出,而后依次排出。中间有出过错,原因是因为if(b<c&&a<c)printf("%d %d %d\n",b,c,a);程序运行到这里好像就停止了,于是没有输出。

第一次改进:就是上面那个错误的纠正;

第二次改进:因为单纯的大于小于无法判定输入为“1 1 1”时候的情况,于是在判定条件处加了“=”等于号。---------仍然不能正确输出1 1 1 ,结果是输出了6个111

第三次改进:在if的前面加入了else,输出结果正确。

结论:要全面考虑

3.比较简单的程序

#include<stdio.h>

#include<stdlib.h>

int main(){

  int a,b,c,t;

  scanf("%d%d%d",&a,&b,&c);

  if(a>c){

          t=a;

          a=c;

          c=a;

          }

  if(b<a){

          t=a;

          a=b;

          b=t;

          }

  if(c<b){

          t=b;

          b=c;

          c=t;

          }

  printf("%d %d %d\n",a,b,c);

  system("pause");

  return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: