(C/C++)杭电OJ1056、1157

OJ1056

#include<stdio.h>
int main()
{
double length,sum;
while(scanf("%lf",&length)!=EOF&&length){
int count = 0;
for(double i = 2;i<=300;i++){
sum = sum+1.0/i;
count ++;
if(sum>=length){                        //注意此处应该有等号 
printf("%d card(s)\n",count);
sum = 0;
break;
}
}
}

}


#include<stdio.h>
    int main()
     {
        double length,sum;
while(scanf("%lf",&length)!=EOF&&length){
 int count = 0;
 for(double i = 2;sum<length;i++){              //注意sum<length的方法 
count ++;
sum = sum+1.0/i;
 }
   sum = 0;
 printf("%d card(s)\n",count);
   }     

     }

这个方法好在在for循环中直接找到判断出口的方法。

通过不断实战和训练,锻炼自己找准最主要最关键实现方法的能力,

OJ1157 

  #include<stdio.h>
int main()
     {
        int N,num,temp;
        int a[10000];
        while(scanf("%d\n",&N)!=EOF){
        for(int i = 0;i<N;i++){
scanf("%d",&a[i]);
}
        for(int i = 0;i<N-1;i++){
        for(int j = 0;j<N-1-i;j++){
        if(a[j]>a[j+1]){
        temp = a[j];
        a[j] = a[j+1];
        a[j+1] = temp;
}
}
}
num = N/2;
printf("%d\n",a[num]);                //不要忘记每次输出要输出空行 
}}     

  冒泡排序

#include<stdio.h>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
   int n, i;
   int arr[10005];
   while(scanf("%d", &n)!=EOF)
   {
       for(i=0; i<n; i++)
      scanf("%d", &arr[i]);
  sort(arr, arr+n);
  printf("%d\n", arr[n/2]);
   }
   return 0;

}

扫描二维码关注公众号,回复: 2197545 查看本文章

利用了C++的库函数

猜你喜欢

转载自blog.csdn.net/m0_37632283/article/details/79927196