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;
}
利用了C++的库函数