C语言每日一题之No.1
时间:2014-07-22 23:07:54
收藏:0
阅读:359
鉴于在学校弱弱的接触过C,基本上很少编程,C语言基础太薄弱。刚好目前从事的是软件编程,难度可想而知。严重影响工作效率,已无法再拖下去了。为此,痛下决心恶补C语言。此前只停留在看书,光看好像也记不住,C这东西毕竟是练出来的,所以从今天开始,每日一道C语言题目,从题目入手来补知识漏洞。题目比较基础,如不堪入目,还请见谅。
题目:输入三个整数,输出最大的数
思路:定义三个变量用来存储输入的整数
比较三个变量的大小,找到最大的数
定义一个变量存储来存储最大的数
程序:
1 #include <stdio.h> 2 3 int maxium(int a,int b,int c) 4 { 5 int max = 0; 6 7 max = a>b ? a:b;//三目运算符,两两相比较,max保存大的数 8 max = max>c ? max:c;//三目运算符,大的数与剩下的数作比较 9 return max; 10 } 11 void main() 12 { 13 int a = 0; //定义三个变量a、b、c来保存输入 14 int b = 0; 15 int c = 0; 16 int max = 0;//定义变量max来保存最大数 17 printf("请输入任意三个数:"); 18 scanf("%d",&a);//输入三个数 19 scanf("%d",&b); 20 scanf("%d",&c); 21 max = maxium(a,b,c);//调用获取最大数 22 printf("三个数中最大的数是:%d\n",max); 23 24 }
改进:
求最大数的函数不必设三个输入参数,假设是10个数或者是更多的数来比较呢?难道输入参数也要设置为10个吗?比较明智的办法是求最大数的函数设置为两个输入参数,尽做两两比较,然后递归调用这个函数即可。
1 #include <stdio.h> 2 /* 3 int maxium(int a,int b,int c) 4 { 5 int max = 0; 6 7 max = a>b ? a:b;//三目运算符,两两相比较,max保存大的数 8 max = max>c ? max:c;//三目运算符,大的数与下一个数作比较 9 return max; 10 }*/ 11 int maxium(int a,int b) 12 { 13 int max = 0; 14 max = a>b ? a:b; 15 return max; 16 } 17 void main() 18 { 19 int a = 0; //定义三个变量a、b、c来保存输入 20 int b = 0; 21 int c = 0; 22 int max = 0;//定义变量max来保存最大数 23 printf("请输入任意三个数:"); 24 scanf("%d",&a);//输入三个数 25 scanf("%d",&b); 26 scanf("%d",&c); 27 // max = maxium(a,b,c);//获取最大数 28 max = maxium(maxium(a,b),c);//获取最大数 29 printf("三个数中最大的数是:%d\n",max); 30 31 }
延伸:如果是更多的数呢?比如10个数?
1 #include <stdio.h> 2 3 int maxium(int a,int b) 4 { 5 int max = 0; 6 max = a>b ? a:b; 7 return max; 8 } 9 10 void main() 11 { 12 int nInput[10] = {};//定义一个数组来存放10个数并且初始化 13 int max = 0; 14 printf("请输入任意10个数:"); 15 for(int i=0;i<10;i++) 16 { 17 scanf("%d",&nInput[i]); 18 max = maxium(max,nInput[i]);//循环调用求最大数函数,将最大值存放在max里再参与下次比较 19 } 20 printf("10个数中最大的数是:%d\n",max); 21 }
由以上代码发现语法错误:数组初始化问题
int nInput[10] = {};是肯定不对的
正确的初始化方法:
int nInput[10] = {0};
那么接下来有问题的是:max的初始值为0,让这10个数与从0开始一次比较,那假如这10个数都比0小呢?那输出的结果等于0.很显然,这是不行的,因为10个数中并没有0这个数。max的初始值应该为第一个数,但是怎样写才会简介呢?
评论(0)