A:计算多项式的值
数字的计算,输入输出即可
#include<stdio.h>
int main(){
double x,a,b,c,d;
scanf("%lf%lf%lf%lf%lf%lf",&x,&a,&b,&c,&d);
double sum=a*(x*x*x)+b*(x*x)+c*x+d;//sum保存结果
printf("%0.7lf",sum);//%0.7lf输出
return 0;
}
B:高斯求和
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int sum=0;//保存计算结果,初值为 0
for(int i=0;i<=n;i++){//循环加到输入的数
sum+=i;//等价于sum=sum+i;
}
cout<<sum;//输出答案
return 0;
}
C:字符出现位置
#include<iostream>
using namespace std;
char a[1005];//放在main函数上面,不然会出错
int main(){
int n;
char c;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];//数组读入数据
}
cin>>c;
for(int i=0;i<n;i++){
if(a[i]==c){//判断找到了目标字符的情况
cout<<i;//输出下标
return 0;//结束程序,程序将不会进行下去
}
}
cout<<-1;//上面循环结束,即表示找不到目标字符,输出 -1
return 0;
}
D:蒜头君上班
法一:
#include<iostream>
using namespace std;
int main(){
double x;
cin>>x;
//根据题意可以得到一元一次方程 27+23+x/3=x/1.2 ==> 50+x/3=10x/12 ==>600+4x=10x ==>解的x=100的时走路与骑车一样快,x>100的时候骑车快,x<100的时候走路快
if(x>100){
cout<<"Bike";
}else if(x==100){
cout<<"All";
}else{
cout<<"Walk";
}
return 0;
}
法二:
比谁用的时间短,输出即可
#include<iostream>
using namespace std;
int main(){
int x;
cin>>x;
if((23+27+x/3.0)<(x/1.2)){
cout<<"Bike";
}else if((23+27+(x/3.0))>(x/1.2)){
cout<<"Walk";
}else{
cout<<"All";
}
return 0;
}
E:价钱统计
考虑「四舍六入五留双」与四舍五入之间的差别
#include<iostream>
using namespace std;
int main(){
double a,b,c,d;
cin>>a>>b>>c>>d;
//保留一位小数,操作到小数点后两位
double a1=(double)((int)(10*(a*1.2+0.05)))/10;//强制转换类型计算
double b1=(double)((int)(10*(b*3.5+0.05)))/10;
double c1=(double)((int)(10*(c*4.5+0.05)))/10;
double d1=(double)((int)(10*(d*5.0+0.05)))/10;
double sum=a*1.2+b*3.5+c*4.5+d*5.0;
printf("%0.1f\n",a1);
printf("%0.1f\n",b1);
printf("%0.1f\n",c1);
printf("%0.1f\n",d1);
printf("%0.1f",(double)((int)(10*(sum+0.05)))/10);
return 0;
}
F:字典序
法一
#include<iostream>
#include<string>
using namespace std;
int main(){
string s,s1;
cin>>s>>s1;
int t=s.compare(s1);//若字符串 S 按字典顺序要先于 S1,则返回负值;反之,则返回正值。比较方法为从两个字符串开始比较的位置一个个字符顺序相比ASCII值。
if(t>0){
cout<<"NO";
}
if(t<0){
cout<<"YES";
}
// cout<<t;
return 0;
}
法二
#include<iostream>
#include<string>//c++自带操作string
using namespace std;
int main(){
string s,s1;
cin>>s>>s1;//cin读入到空格换行停止
if(s>s1) cout<<"NO";
else cout<<"YES";
return 0;
}
G:矩阵加法
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;//输入行数和列数
int a[105][105];//保存输入
int b[105][105];//保存答案
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];//输入第一个数组
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
int x;
cin>>x;//第二个数组使用一个变量,一个一个读入
b[i][j]=x+a[i][j];//两个数组行数和列数相加
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cout<<b[i][j]<<" ";//输出答案
}
cout<<endl;//输出换行
}
return 0;
}
H:双重循环 归并排序 逆序数
#include<iostream>
using namespace std;
int main(){
int n;
int a[1005];//保存输入,根据题意数组尽量开大一点点
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int sum=0;//记录逆序数个数
for(int i=0;i<n-1;i++){//循环到n-1
for(int j=i+1;j<n;j++){//j=i+1,保持拿前面与后面比较
if(a[i]>a[j]){//前面大于后面就加一
sum++;
}
}
}
cout<<sum;//输出答案
return 0;
}