开始学c++ 第一天
复试终于告一段落,总算是有书读了,不过c貌似用不上了,导师说要c++,好吧,从头开始学习c++。
从当当买的书还没到,先把复试的上机题写上吧,平均十分钟一道题;
第一题:输入10个数,输出前5小的数
算法:排序,冒泡排序之后输出前5个数字
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int s[10],min,m;
for(int i=0;i<10;i++)
cin>>s[i];
for(int i=0;i<10;i++)
{
min=s[i];
m=i;
for(int j=i+1;j<10;j++)
{
if(s[j]<min)
{
min=s[j];
m=j;
}
}
if(m!=i)
{
int temp=s[i];
s[i]=s[m];
s[m]=temp;
}
}
for(int i=0;i<5;i++)
cout<<s[i]<<" ";
}
第二题:变形斐波拉切数列求和
1,1,1,3,5,9...从第四项开始,每一项是前三项的和,求第n项的取值
算法:主要针对第四项以后,令s[3]={1,1,1}。从第四项开始,每向前移动一项,则s[3]中每一项后移,最高项为数组各项之和。最后对数组求和即可得到结果,注意用于保存数组各项和的变量,每次前移之前,都需要初始化为0;
1 #include <cstdlib> 2 #include <iostream> 3 using namespace std; 4 5 int main(int argc, char** argv) 6 { 7 int n,m,w,p=0,s[3]; 8 cin>>n; 9 //cout<<"1 1 1 "; 10 for(int i=0;i<3;i++) 11 { 12 s[i]=1; 13 cout<<" s:"<<s[i]<<" "; 14 } 15 16 if(n<=3) 17 m=1; 18 else 19 { 20 for(int i=4;i<n;i++) 21 { 22 w=0; \\对w初始化 23 for(int j=0;j<3;j++) 24 { 25 w=w+s[j]; 26 if(j<2) 27 s[j]=s[j+1]; 28 } 29 s[2]=w; 30 for(int k=0;k<3;k++) 31 cout<<" s"<<k<<":"<<s[k]<<" "; 32 cout<<"w:"<<w<<" "; 33 } 34 for(int i=0;i<3;i++) 35 { 36 m=m+s[i]; 37 // cout<<" s:"<<s[i]<<" "; 38 39 } 40 } 41 42 cout<<"the result:"<<m<<" "; 43 }
第三题:解一元二次方程,输入a,b不全为0的a,b,c,输出解
算法:直接利用求根公式,根据条件判断即可
1 #include <cstdlib> 2 #include <iostream> 3 #include <math.h> 4 using namespace std; 5 6 int main(int argc, char** argv) 7 { 8 int a,b,c; 9 float x1,x2; 10 cin>>a>>b>>c; 11 if(a==0&&b==0) 12 { 13 cout<<"error"; 14 } 15 else if(a==0&&b!=0) 16 { 17 x1=-c/b; 18 cout<<"the solve is:"<<x1; 19 }else 20 { 21 int t=b*b-4*a*c; 22 if(t>=0) 23 { 24 float w=sqrt(t); 25 x1=(-b-w)/(2*a); 26 x2=(-b+w)/(2*a); 27 cout<<"the solve is:"<<"x1="<<x1<<", x2="<<x2; 28 }else 29 { 30 x1=sqrt(-t); 31 x2=-b/(2*a); 32 cout<<"the solve is:"<<"x1="<<x2<<"-"<<x1<<"i, x2="<<x2<<"+"<<x1<<"i"; 33 } 34 35 36 } 37 }
浙公网安备 33010602011771号