内モンゴル大学の2018年のコンピュータの再試験の筆記試験の本題のテーマとソースコードの参考解答
第1題: は2つの整数を入力して、2つの数の間のすべての偶数の和を求めます(この2つの数を含みます)
第2題: 入力一個数n,計算1+2*2+…+n*n
第三題:平方根を求める反復式は,a[n+1]=1/2(a[n]+X/a[n])である. 要求前後2回で求めた得差の絶対値は0.00001未満である.
第四題:ファイルの中の情報を読み込んで、80文字は1行で、行数、大文字と小文字、数字の個数を統計します.
第五題: (a+b)のn次方程式の展開後の各係数,すなわち楊輝三角
第六題: は1つの整数を入力して、再帰は逆順にこの整数の各位の数を出力します
第七題: 選択ソート
#include
using namespace std;
int main(){
int a,b,sum = 0;
cin>>a>>b;
if(a > b){
int temp = a;
a = b;
b = temp;
}
for(int i = a; i <= b; i++){
if(i % 2 == 0){
sum += i;
}
}
cout<<sum<<endl;
return 0;
}
第2題: 入力一個数n,計算1+2*2+…+n*n
#include
using namespace std;
int main(){
int n, sum = 0;
cin>>n;
for(int i = 1; i <= n; i++){
sum += i*i;
}
cout<<sum<<endl;
return 0;
}
第三題:平方根を求める反復式は,a[n+1]=1/2(a[n]+X/a[n])である. 要求前後2回で求めた得差の絶対値は0.00001未満である.
#include
#include
using namespace std;
int main(){
double n, x1, x2;
cin>>n;
x2 = n;
while(fabs(x1 - x2) >= 0.00001){
x1 = x2;
x2 = (x1 + n / x1) / 2;
}
cout<<x2<<endl;
return 0;
}
/*
fabs() 。 #include
double , double 。 , double 。
abs()
int
*/
第四題:ファイルの中の情報を読み込んで、80文字は1行で、行数、大文字と小文字、数字の個数を統計します.
#include
#include
#include
using namespace std;
int main(){
ifstream in("C:\\Users\\11752\\Desktop\\test.txt"); //
string s;
int line_total = 0; //
int AZ_total = 0; //
int az_total = 0; //
int num_total = 0; //
if(in.is_open()){
while(getline(in,s)){
// , in s
for(int i = 0; i <= s.length(); i++){
if(s[i] >= 'A' && s[i] <= 'Z'){
AZ_total++;
}
if(s[i] >= 'a' && s[i] <= 'z'){
az_total++;
}
if(s[i] >= '0' && s[i] <= '9'){
num_total++;
}
}
line_total++;
}
}
in.close();
cout<<line_total<<" "<<AZ_total<<" "<<az_total<<" "<<num_total<<endl;
return 0;
}
/*
getline(in,s)
:#include
getline() istream& getline ( istream &is , string &str , char delim );
istream &is , cin;
string&str ( ,str );
char delim , '
', ( )。
*/
第五題: (a+b)のn次方程式の展開後の各係数,すなわち楊輝三角
#include
using namespace std;
int main(){
int n,a[100][100];;
cin>>n;
for(int i = 0; i <= n; i++){
for(int j = 0; j <= i; j++){
if(i == j || j == 0){
a[i][j] = 1;
} else {
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
}
// 0 n ,
for(i = 0; i <= n; i++){
for(int j = 0; j <= i; j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
// n
for(i = 0; i <= n; i++){
cout<<a[n][i]<<" ";
}
cout<<endl;
return 0;
}
第六題: は1つの整数を入力して、再帰は逆順にこの整数の各位の数を出力します
#include
using namespace std;
void nxPrint(int n){
cout<<n%10<<" ";
if(n/10){
n /= 10;
nxPrint(n);
}
}
int main(){
int n;
cin>>n;
nxPrint(n);
cout<<endl;
return 0;
}
第七題: 選択ソート
#include
using namespace std;
void selection_sort(int *arr, int n){
//n , ,
int min;
for(int i = 0; i < n - 1; i++){
// n-1
min = i;
for(int j = i + 1; j < n; j++) //
if(arr[j] < arr[min])
min = j;
swap(arr[i],arr[min]);
}
}
int main(){
int n; //
cin>>n;
int *a = new int[n]; //
//
for(int i = 0; i < n; i++){
cin>>a[i];
}
selection_sort(arr,n);
//
for(i = 0; i < n; i++){
cout<<a[i]<<" ";
}
cout<<endl;
//
delete []a;
a = NULL;
return 0;
}