CSP-J入门组
setw(2)
cout<<setw(2) //设置后面显示字符的宽度为2
cout<<fixed<<setprecision(6)<<变量名;//设置小数点后保留几位
数位五五
题链接
https://ac.nowcoder.com/acm/problem/22168
求出a到b之间有多少个数,数位之和为5的倍数
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
using namespace std;
bool number(int n){
int nums,sum;
nums = n;
sum =0;
while(nums!=0){
sum += nums%10;
nums = nums/10;
}
bool res = (sum%5==0)?true:false;
return res;
}
int main(){
int begin,end,res;
res =0;
cin>>begin>>end;
for(int i=begin;i<=end;i++){
if(number(i)){
res++;
}
}
cout<<res;
return 0;
}
回文数
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
using namespace std;
bool number(int n){
int nums,sum;
nums = n;
sum =0;
while(nums!=0){
sum *=10;
sum += nums%10;
nums = nums/10;
}
bool res = (sum==n)?true:false;
return res;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
if(number(i)){
cout<<i<<endl;
}
}
return 0;
}
字符统计
题目:https://ac.nowcoder.com/acm/problem/22202
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
#include <cstdio>
using namespace std;
int main(){
string n;
getline(cin,n);
int let=0;
int dig=0;
int oth=0;
for(int i=0;i<n.size();i++){
if(n[i]=='?') break;
if((n[i]-65>=0 && n[i]-65<=25) ||(n[i]-97>=0 && n[i]-97<=25) ) let++;
if(n[i]>='0' && n[i]<='9') dig++;
}
oth=n.size()-1-let-dig+oth;
cout<<"Letters="<<let<<endl
<<"Digits="<<dig<<endl
<<"Others="<<oth<<endl;
return 0;
}
选择排序
#include <bits/stdc++.h>
using namespace std;
int main(){
int arr[] = {3,1,5,2,4};
int len = sizeof(arr)/sizeof(arr[0]);
for(int i =0;i<len;i++){
int min = i;
for(int j=i+1;j<len;j++){
min = arr[j]<arr[min]?j:min;
}
cout<<"min:"<<min<<endl;
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
for(int i=0;i<len;i++){
cout<<arr[i]<<" ";
}
return 0;
}
冒泡排序
#include <bits/stdc++.h>
using namespace std;
void swap(int arr[],int i,int j){ //交换数组两个数字下标
int temp = arr[i];arr[i] = arr[j];
arr[j]=temp;
}
void printarr(int arr[],int len){//打印数组
for(int i=0;i<len;i++){
cout<<arr[i]<<" ";
}
}
void maxarr(int arr[],int len){//找到当前数组的最大值
for(int i=0;i<len-1;i++){
if(arr[i]>arr[i+1]) swap(arr,i,i+1);//交换位置
}
}
int main(){
int arr[] = {9,3,1,4,6,8,7,5,2};
int len = sizeof(arr)/sizeof(arr[0]);
for(int i=len;i>0;i--){//找到最后一位之后,便不考虑所以是
// 从大到小
maxarr(arr,i);
}
printarr(arr,len);
return 0;
}