(一)编程题
1、从键盘输入一元二次方程ax^2+bx+c=0的三个系数,求方程的实数根。若没有实数根,则输出"NO"。
【输入形式】三个浮点数,分别表示a,b,c。
【输出形式】有根则输出两个根,没有输出NO。每个输出有换行。
【样例输入】2 3 1
【样例输出】
x1 = -0.5
x2 = -1
【样例输入】1 1 3
【样例输出】
NO
#include <iostream>
#include <math.h >
using namespace std;
int main()
{
float a,b,c,z,x1,x2;
cout<<"请输入a,b,c的值:";
cin>>a>>b>>c;
z=b*b-4*a*c;
if(z>=0){
x1=(-b+sqrt(z))/(2*a);
x2=(-b-sqrt(z))/(2*a);
cout<<"x1="<<x1<<",x2="<<x2<<endl;
}
else cout<<"NO"<<endl;
return 0;
}
2、输入华氏温度 F 的值,求出对应的摄氏温度 C,并显示。华氏温度 F 与摄氏温度 C 的转化关系如下:C=5/9*(F-32)。
【输入形式】华氏温度
【输出形式】摄氏温度
【样例输入】65
【样例输出】18.3333
【样例输入】32
【样例输出】0
【样例输入】150
【样例输出】65.5556
【提示】警惕任何输入都会让算术表达式计算结果为零。
#include <iostream>
using namespace std;
int main()
{
float C,F;
cout<<"输入F=";
cin>>F;
C=5.0/9.0*(F-32);
cout<<"C="<<C;
return 0;
}
3、找出1000-2000之间所有整数中满足如下条件的数:该数的高端两位数字的和与低端两位数字的和值相等,如1001, 1120。程序能输出所有满足条件的数以及它们的总个数。
【输入形式】无输入
【输出形式】满足条件的数以及它们的总个数
#include <iostream>
#include <math.h >
using namespace std;
int main()
{
int i,a,b,x,y,s=0;
for(i=1000;i<=2000;i++)
{
a=i/1000;
b=i/100%10;
x=i/10%10;
y=i%10;
if((a+b)==(x+y))
{s++;
cout<<i<<",";
}
}
cout<<endl<<"总个数:"<<s<<endl;
return 0;
}4、输出3~100之间的素数(每行输出5个数)
#include <iostream>
using namespace std;
int main()
{
int i, j, n = 0;
for (j = 3; j <= 100; j++)
{
for (i = 2; i <= j - 1; i++)
{
if (j%i == 0)
break;
}
if(i >= j)
{
n++;
cout<<" "<<i;
if (n % 5 == 0)
cout<<endl;
}
}
}
5、计算2+4+6+8+…+n的值
【输入形式】n
【输出形式】算式的和
【样例输入】8
【样例输出】20
#include <iostream>
using namespace std;
int main()
{
int n = 0;
int i = 0;
int sum = 0;
cin>>n;
for (i=2; i<=n; i+=2)
{
sum += i;
}
cout<<sum<<endl;
return 0;
}
6、用冒泡排序法对10个整数排序。
#include <iostream>
#include <math.h >
using namespace std;
int main()
{
int i,j,a[10],t;
cout<<"请输入10个数:";
for(i=0;i<10;i++)
cin>>a[i];
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
cout<<"排序之后:";
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
- 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
#include <iostream>
using namespace std;
int main()
{
int i,x;
int a[10]={5,10,15,23,45,55,65,76,90};
cout<<"请输入一个数:";
cin >>x;
for(i=8;i>=0;i--)
{
if(x<a[i]){
a[i+1] = a[i];
}else{
a[i+1] = x;
break;
}
}
if(i<0) a[0]=x;//如果输入的数比第一个数还要小,另作判断
cout<<"排序之后:";
for(i=0;i<10;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
8、从键盘输⼊n个整数(n<100),存放在⼀个⼀维数组中,逆序输出能被3整除 的元素,并逆序输出数组下标为3的倍数的元素。
输⼊格式:第⼀个整数为个数n,后续为n个整数
输出格式:第⼀⾏能被3整除的元素,第⼆⾏为下标为3的倍数的元素,各个数值之间⽤空格分隔。
Sample Input
10 2 7 9 10 5 4 3 6 8 20
Sample Output
6 3 9
20 3 10 2
#include <iostream>
using namespace std;
int main()
{
int i,j,n,a[100];
cout<<"请输入n的值:";
cin>>n;
cout<<"请输入数组的值:";
for(i=0;i<n;i++)
cin>>a[i];
for(j=n-1;j>=0;j--)
{
if(a[j]%3==0)
cout<<a[j]<<" ";
}
cout<<endl;
for(j=n;j>0;j--)
{
if((j-1)%3==0)
cout<<a[j]<<" ";
}
return 0;
}
9、从键盘输⼊任意个整数(以0结束,个数不超过100),存放在⼀个⼀维数组中,输出这组数的最⼤值。
Sample Input
10 2 7 9 11 5 4 3 6 8 20 0
Sample Output
20
#include <iostream>
using namespace std;
const int Max = 100;
int main()
{
int a[Max], n, i,x;
cout<<"请输入数组的值:";
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
x=a[0];
for(i=0;i<n;i++)
if(a[i]>x) x=a[i];
cout<<x<<endl;
return 0;
}