@2018.12.06
2018.12.06
第一题:
第一题
这题主要是:1.找出非元音字母 2.大写换成小写
但是我这里的方法有点费时费力,打的时候要数ASCII码,超级慢
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
char a[101];
cin >> a;
int i = 0;
while (a[i] != 0)
{
if (a[i] == 65 || a[i] == 79 || a[i] == 89 || a[i] == 69 || a[i] == 85 || a[i] == 73 ||
a[i] == 65 + 32 || a[i] == 79 + 32 || a[i] == 89 + 32 || a[i] == 69 + 32 || a[i] == 85 + 32 || a[i] == 73 + 32)
{
i++;
continue;
}
if (a[i] >= 65 && a[i] <= 90) cout << "." << char(a[i] + 32);
else cout << "." << a[i];
i++;
}
return 0;
}
这里提供另一位不用数ASCII码的解法:
int main()
{
char *letter = new char[100];
char *print = new char[100];
char exp[] = { 'a','e','i','o','u','y','A','E','I','O','U','Y' };
gets_s(letter, 100);
int len1;
for (int i=0; i <= 99; i++) { if (letter[i] == '\0') { len1 = i; break; } } for (int i = 0; i <= len1; i++) for (int j = 0; j <= 11; j++) { if (letter[i] == exp[j]) letter[i] ='0'; } int rem = 0; for (int i = 0; i <= len1; i++) { if ((letter[i] >= 'a' && letter[i] <= 'z') || (letter[i] >= 'A' && letter[i] <= 'Z'))
{
print[rem] = letter[i];
rem++;
}
}
int sum=0;
for (int i = 0; i < 2 * rem; i++)
{
if (i % 2 == 1) { letter[i] = print[sum]; sum++; }
else letter[i] = '.';
}
puts(letter);
delete letter;
delete print;
}
第二题:
第二题
这题要注意那个入住的有两个人,而且他们要住同一间房。所以。。。。。。
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
int n, a, b, ans = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a >> b;
if (a < b - 1)ans++;
}
cout << ans;
return 0;
}
第三题:
第三题
这里其实是在统计前一个和后一个字符相同的次数。题目讲的很绕,要先想想是个什么情况再做。
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
char a[50];
cin >> a;
int k = 0;
for (int i = 0; i < n - 1; i++)
{
if (a[i] == a[i + 1])k++;
}
cout << k << endl;
return 0;
}
第四题:
第四题
这题学到了什么叫无限输入多组数据。哇哦,第一次写while(cin >> a>> b)。
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a >> b)
{
cout << a + b << endl;
}
return 0;
}
第五题:
第五题
这道题我的解题思路:1.被5分出了多少组数,分别是什么? 2.排序 3.输出
这道题写太长了,感觉思路好像不太行。之后参考一下别人的。
#include"stdafx.h"
#include <iostream>
using namespace std;
int main()
{
char num[1000] = { 0 }; //用户输入的数
int n, i; //n是记录被5分出了多少组数,i是记录目前在num【1000】中的位置
int p[500]; //保存被分出的数
while (cin >> num)
{
//初始化p,n,i
for (i = 0; i < 500; i++)
{
p[i] = -1;
}
n = 0;
i = 0;
//开始分析输入的数
while (num[i] != 0)
{
while (num[i] != 53)
{
if (num[i] == 0)break;
if (p[n] == -1)p[n] = 0;
p[n] = p[n] * 10 + int(num[i] - 48);
i++;
}
if (p[n] != -1)n++;
i++;
}
//按大小排序
for (int j = 0; j < n; j++)
{
for (int h = j; h < n; h++)
{
if (p[j] > p[h])
{
int t = p[j];
p[j] = p[h];
p[h] = t;
}
}
}
//按格式输出
for (int h = 0; h < n-1; h++)
{
cout << p[h]<<" ";
}
cout << p[n - 1];
cout << endl;
}
return 0;
}
第六题:
第六题
很简单的题,是在看看对ASCII码的了解程度。其实是和“输入三个整数,从小到大输出”是一样的。
#include <iostream>
using namespace std;
int main()
{
char num[3];
while (cin >> num)
{
for (int i = 0; i < 3; i++)
{
for (int j = i; j < 3; j++)
{
if (num[i] > num[j])
{
char t = num[i];
num[i] = num[j];
num[j] = t;
}
}
}
for (int i = 0; i < 2; i++)
{
cout << num[i] << " ";
}
cout << num[2]<<endl;
}
return 0;
}
第七题:
第七题
关键在于怎么控制格式:
C语言:print("%.3lf" ,rrrPI4/3);
c++: fixed << setprecision(3)
什么的。。。。。。。
#include<iomanip>
#include<iostream>
using namespace std;
#define PI 3.1415927
int main()
{
double r;
while (cin >> r)
{
cout << fixed << setprecision(3) << r * r*r*PI*4.0 / 3.0 << endl;
}
return 0;
}
第八题:
第八题
题目几乎什么都给了,记得等价于“==”和等于“=”的区别。
#include<iostream>
using namespace std;
int main()
{
int a, b;
while (cin >> a >> b)
{
if ((a + b) % 86 == 0)
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
}
}
return 0;
}