输入一个正整数n,输出n中的最大数字和最小数字!!!!
最大值与最后一个交换,需要使用到max 和a[i],以及一个临时变量,你代码中使用的是max a[0] a[i],这里貌似有点问题。最小值与第一个交换,貌似你也是用的这3个变量。
如果觉得使用的变量过多,可以不使用临时变量,用嵌入式程序员的思路,节约空间复杂度,只使用max 和 a[i]两个变量就地进行值的交换
在你的两个 if 语句内改成
max = max + a[i];
a[i] = max - a[i];
max = max - a[i];
如果担心两数和超出范围可以用^异或操作
改成
max = max ^ a[i];
a[i] = a[i] ^ max;
max = max ^ a[i];
这样就不用担心两整数的和超出表示范围了。
下面的min的操作也与以上内容类似。
改成
min = min ^ a[0];
a[0] = a[0] ^ min
min = min ^ [a0]
太不规范了吧。。看着头晕。。
for(i=0;i<n;i++)
{
if(t<=a[i]);
else t=a[i];
}
第15行的这个for循环,里面的if语句干嘛的。。
首先将输入的int 数字,转为String类型,然后采用String的方法split分为单个字符,将其转为数字后存到数组a中,然后利用数组的排序方法sort,取得最小值和最大值。
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n,num,max = 0,min = 0;
n = in.nextInt();
Integer n1 = Integer.valueOf(n);//in.nextInt();
String s = n1.toString();
String s1[] = s.split("|");
Integer[] a = new Integer[s1.length - 1];
System.out.println(s1.length);
for(int i = 1; i < s1.length; i ++){
a[i - 1] = Integer.valueOf(s1[i]);
}
Arrays.sort(a);
max = a[a.length - 1];
min = a[0];
/*…源代码…*/
System.out.println("max="+max+" min="+min);
}
package script;
import java.util.*;
public class exp1501 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n, num, max = 0, min = 0;
n = in.nextInt();
final int DIGIT = 10;
int[] number = new int[DIGIT];// 10位够吧。。。不够再加
Arrays.fill(number, -1);// 所有的值填为-1,因为填0的话如果你输入的值不含0,最小值也会是0
int i = 1;
//把输入的数字生成数组
while (n != 0) {
num = n % 10;
number[i - 1] = num;
n /= 10;
i++;
}
Arrays.sort(number);//排序,由小到大
//遍历, 如果不是-1,那么就是最小值
for (int temp : number)
if(temp!=-1){
min=temp;
break;
}
max = number[DIGIT - 1];//最后一个就是最大值
System.out.println("max=" + max + " min=" + min);
}
}
String sInt = String.valueOf(Math.abs(n));
num = Integer.valueOf(sInt.charAt(0) + "");
max = min = num;
for (int i = 1; i < sInt.length(); i++) {
num = Integer.valueOf(sInt.charAt(i) + "");
if (min > num) {
min = num;
} else if (max < num) {
max = num;
}
}
//方式二:
num = Math.abs(n);
max = min = num % 10;
while ((num = num / 10) > 0) {
int itmp = num % 10;
if (min > itmp) {
min = itmp;
} else if (max < itmp) {
max = itmp;
}
}
3. 编写一个程序,先输入一个正整数n,然后输入n个整数,输出这n个整数中...
include <stdio.h>int main(void){ int n, a, i, max; scanf("%d", &n); scanf("%d", &max); for (i = 0; i < n - 1; i++) { scanf("%d", &a); if (a > max) max = a; } printf("%d\\n", max); return 0;} ...
输入一个正整数n,输出n中的最大数字和最小数字!!!
循环比较输入的字符串,一个字符一个字符的循环,初始化时,将max,min都初始化成第一个字符中的数值,循环时,如[i]比max 大,则将max 重新赋值,如比min小,则将min重新赋值,循环完后,输出max,min即可。
任意输入n个数,输出其中最大值与最小值,并输出它在序列中的位置!C语 ...
使用do while循环读入变量,首先把最大值和最小值初始化成第一个读入的值,后续的循环就是判断当前读入的值是否比最大值大或者最大值小,从而实时修改相应的值即可。最后设立一个结束的标识符。
(C语言)输入一个正整数n, 再输入n 个整数,输出这n个整数的最大值.
{ intn,a,i,t;scanf("%d",&n);if(n<=0){ printf("输入n的值错误");return0;} scanf("%d",&t);\/\/先读的第一个数要默认成最大的,不然,t的初值是不定的 for(i=1;i{ scanf("%d",&a);if(t} printf("%d",t);return0;\/\/ } ...
输入一个正整数n.输出n!的最高位上的数字.
给你说说思路吧 ,输入一个数用此数除以10 得余数,再判断是否是偶数,是记录下来,此数为最高位,然后,用这个数除以10 是否为0,为零 则跳出,不为零则继续 除以10 得 余数,再判断,然后判断除以10 是否为0,就这样判断。。
输入一个正整数n,输出n中的最大数字和最小数字怎样编写代码
把输入的数转化为字符串数组,根据字符串的长度(位数)确定循环次数,用两个变量存最大数和最小数,每次取出一位和前面进行比较,即可求出 使用的函数 itoa 把整型数字转化为字符串 atoi 把字符串转化为整型数字
用户输入一个正整数N,分别计算出累加和小于等于N时的最大正整数编写程序...
} printf("累加和小于等于%d时的最大正整数为%d\\n", N, i-1);return 0;} 该程序使用scanf()函数从键盘读取一个正整数N,然后使用while循环计算累加和。在每次循环中,将当前的i加到累加和sum中,并将i加1。如果累加和小于等于N,则继续循环,否则退出循环。最后,程序输出累加和小于等于N时的...
java 输入一个正整数n, 再输入n个整数,输出最大值。
public static void main(String[] args){ int ri, repeat;int i=0,max = 0,n,x;Scanner in=new Scanner(System.in);repeat=in.nextInt();n=in.nextInt();max=n;for(ri=1; ri<=repeat-1; ri++){ n=in.nextInt();if(max<n){ max=n;} } System.out.println(max);} ...
输入一个正整数n再输入n个学生的成绩输出最大值用C
include <stdio.h>int main(){ int i,n,c,max=-1; scanf("%d",&n); for(i=0;i<n;++i){ scanf("%d",&c); if(c>max) max=c; } printf("最大分数:%d\\n",max); return 0;}
编程,输入一个正整数n,再输入n个整数,输出其中的最大值输入的每个数都...
a=inputbox("n?")'输入N For a=0 to n-1 b=inputbox("?")'询问 b=int(b)'将b转化为整数 If b>99 or b<201 then'如果b的范围在100~200 If c<>"" then'如果c不为空 If c>b then c=c'如果c大于b就不变 Elseif c