鉴于在学校弱弱的接触过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的初始值应该为第一个数,但是怎样写才会简介呢?
C语言每日一题之No.1,码迷,mamicode.com
时间: 2024-12-24 13:45:18