EOF的巧用
EOF自身特点 一直读 读到文件尾 如 what a nice day 读到空格时就会再进行一次 while循环 ,然后 又输入了一遍 会覆盖之前的输入 所以到最后只会剩下 day
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
char c[10005];
int a;
while(scanf("%s",&c) != EOF); // 很关键 读文件尾
a = strlen(c);
cout << a;
return 0;
}
关于字符 数字的用法 char c; c = ‘0’; 不等于 int a = 0; 两者的ASCII码不同要想直接使用需要 - '0';
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char c[10004];
cin >> c;
int a = strlen(c);
int b;
double d;
b = (c[a - 1] - '0') / 2;
d = (c[a - 1] - '0') / 2.0; //要想得到的数后面 有小数 必须 除以2.0;
if(d > b)
cout << "NO";
if(b == d)
cout << "YES";
}
记住 A的 ASCII码为 65 ,a的为97 两者相差 32。 然后做判断时为了让前后不相互影响要加入continue;或者引入else;
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char a[100];
int i;
cin >> a;
int b = strlen(a);
for(i = 0; i <= b; i++)
{
if(a[i] >= 'a' && a[i] < 'z')
{
a[i] = char(a[i] - 31);
}
else if(a[i] >= 'A' && a[i] < 'Z') //这个else 不能掉,和上面只能有一个执行
{
a[i] = char(a[i] + 33);
}
if(a[i] == 'Z')
{
a[i] = 'A';
}
if(a[i] == 'z')
{
a[i] = 'a';
}
if(a[i] >= '1' && a[i] <= '9')
a[i] = a[i];
}
for(i = 0; i <= b; i++)
cout << a[i];
}
strcpy可以覆盖之前原字符数组的输入
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
int num;
int max = 0;
cin >> n;
char c[100],s[100];
for(int i = 0; i < n; i++)
{
cin >> c;
num = strlen(c);
if(max <= num)
{
max = num;
strcpy(s,c);
}
}
cout << s;
}
一年中节假日的总数 很难!!! 仔细 复习还有万能公式
#include<iostream>
using namespace std;
int mm[10] = {1,5,10,10,10,12};
int dd[10] = {1,1,1,2,3,25};
int day[13] ={0,31,28,31,30,31,30,31,31,30,31,30,31};
void nextday(int& y,int& m,int& d)
{
d++;
if(d == day[m] + 1)//if里只能用==
{
d = 1;
m++;
}
}
int main()
{
int y,w,m,d,sf,ans;
cin >> y;
for(int i = 6; i <=9 ; i++)
{
cin >> mm[i] >> dd[i];
}
cin >> w; //今天是星期几
if((y % 100 != 0 && y % 4 == 0) || y % 400 == 0)
{
day[2]++;
}
m = 1; //m是今天是几月
d = 1; //d是今天是几号
sf = 0;
ans = 0;
while (m < 13)
{
if(m == mm[6] && d == dd[6])
{
ans++;
sf = 2;
}
else if(sf)
{
ans++;
sf--;
}
else if(w == 6 || w == 7)
{
ans++;
}
else
{
for(int i = 0; i < 10; i++)
{
if(m == mm[i] && d == dd[i])
{
ans++;
break;
}
}
}
nextday(y,m,d);
w++;
if(w == 8)
w = 1;
}
cout << ans;
return 0;
}