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;
}
样例输入: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;
}
相关文章推荐
- Linux下C语言编程--基础知识
- 零基础易语言入门教程(三)之了解控制台程序
- []转Java咖啡馆---Java语言基础
- 二、VB6语言基础
- 《.net编程先锋C#》第二章 理论基础-公用语言 运行环境
- C#锐利体验之第二讲 C#语言基础介绍
- C 语言编程基础篇之linux版
- 汇编语言的基础知识标识符和表达式的继续
- [转贴]Oracle PL/SQL语言基础
- 面向对象语言基础 一
- [转贴]Oracle PL/SQL语言基础
- Oracle PL/SQL语言基础
- C语言程序设计基础讲座之数组
- Oracle PL/SQL语言基础
- Oracle PL/SQL语言基础
- 第二讲 Java语言基础知识
- DirectX 9高层着色语言介绍3 —— 语言基础(2)
- C 语言编程基础篇之linux版
- Oracle PL/SQL语言基础
- WML语言基础(WAP建站)一