oj 寻找最大值
输入n个整数,从n个整数中找到其中的最大值并输出。
输入
第一行是一个正整数n(n>=1)。
第二行是n个用空格分隔的整数(可正可负)。
#include<stdio.h>
int main(){
int n,i;
int a=1,b=1;
scanf("%d",&n);
for(b=1;b<=n;b++){ //设置循环次数,注意是b<=n
scanf("%d",&i); //把数字存入i里
if(a<i){ //用a来储存最大值
a=i;
}
}
printf("%d",a);
}
c语言中判断不等于是!= 等于是==
oj十进制转化二进制
难点:如何将计算出来的二进制倒过来输出
解答:用数组
#include<stdio.h>
int main(){
int n,i;
int a[32],j=0;
int k;
scanf("%d",&n);
while(n!=0){
i=n%2;
n=n/2;
a[j++]=i; //将i存入数组a中
}
for(k=j-1;k>=0;k--){ //实现逆向输出,就是找一个k使得a[j]反着来
printf("%d",a[k]);
}
return 0;
}
如果二进制数是10,转换后的reverse[]是:
reverse[0] = 0 reverse[1] = 1 reverse[2] = 0
这里j的值是3。
我们需要从下标2开始输出到下标0,所以for循环的条件应该是:
k = j - 1 k >= 0
这样每次循环就可以输出reverse[]正确的顺序了。
总之,由于下标从0开始,所以最大下标应该是实际元素个数j减1,即j-1。
这就是为什么初始化for循环下标k为j-1。