/* 有一个分数序列:2/1,3/2,5/3,8/5……求出这个数列的前n项之和. */ #include <iostream> #include <cstdio> using namespace std; int main() { int n=0; float sum=0; float a = 1.0; float b = 2.0; cin>>n; if(n<1||n>40) return 0; for(int i=0; i< n;i++){ sum = sum + b/a; b = a + b; a = b - a; } cout<<sum<<endl; printf("%.6f",sum); return 0; }
/* 由键盘输入一行仅由英文字母及空格组成的字符,编程实现(相邻单词之间用一个空格或多个空格隔开) (1)输出每个单词及其长度 (2)输出最长的单词 例如:输入:I am a boy 输出:I 1 am 2 a 1 boy 3 The longest word is:boy */ #include <iostream> #include <cstdio>
using namespace std; int main(){ char a[1000]; char b[30];
int i,j,m=0,n=0; //m记录最长的单词长度,j保存临时的单词长度,n记录最长单词的最后一位 printf("请输入字符:"); gets(a);
插入排序由N-1趟排序组成。对于P = 1 趟到 P = N - 1趟,插入排序保证从位置0到位置P上的元素为已排序状态。插入排序利用了这样的事实:位置0到位置 P - 1上的元素是已排过序的。 下表表达了一般的方法。在第P趟,我们将位置P上的元素想做移动到它在前P+1个元素中的正确位置上。下面的程序实现了该想法。第2行到第5行实现数据移动而没有明显使用交换。位置P上的元素存于Tmp,而(在位置P之前)所有更大的元素都被向右移动一个位置。然后Tmp被置于正确的位置上。这种方法与实现二叉堆时所用到的技巧相同。