单词长度
7-10 单词长度 (25分)
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it’s算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。
输入格式:
输入在一行中给出一行文本,以.结束
提示:用scanf("%c",…);来读入一个字符,直到读到.为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It’s great to see you here.
输出样例:
4 5 2 3 3 4
注意空格是一个标志点 通过这一点实现单词长度的计算
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char ch;
int i=0;
int flag=0;
while(scanf("%c",&ch),ch!='.')
{
if(ch!=' ')i++;//计算每一个单词的长度
else if(i!=0)
{
if(flag!=0)//用flag来进行空格的输出
printf(" ");//其实还有别的好用的方法
flag=1;
printf("%d",i);
i=0;//重置,进行统计下一个单词长度
}
}
if(flag==1&&i!=0) printf(" ");
if(i) printf("%d",i);//用于输出最后一个单词长度
}
输出闰年
7-11 输出闰年 (25分)
输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
输入格式:
输入在一行中给出21世纪的某个截止年份。
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
输入样例1:
2048
输出样例1:
2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048
输入样例2:
2000
输出样例2:
Invalid year!
判断是否是闰年然后输出 注意21世纪的范围
#include <bits/stdc++.h>
using namespace std;
int main()
{
int y,f=0,i;
cin>>y;
if(y>2100||y<=2000)
printf("Invalid year!");
else
{
for(i=2001;i<=y;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)//判断是否是闰年
{
printf("%d\n",i);
f++;
}
}
if(f==0)
printf("None");
}
}
找出两个集合中相同的数
7-23 找出两个集合中相同的数 (25分)
给定两个正整数的集合,分别含有m个和n个元素,找出在两个集合中都出现过的数并输出。
输入格式:
第一行输入两个整数m和n,分别表示两个集合中的整数的个数。 第二行输入m个用空格隔开的整数,表示第一个集合中的元素。 第三行输入n个用空格隔开的整数,表示第二个集合中的元素。 保证n和m的值均不超过50000,且集合中所有元素的值大于0且小于等于1000。
输出格式:
找出在两个集合中都有正整数,并按从小到大的顺序输出,每个数后有一个空格。
输入样例:
5 6
2 9 10 7 19
22 10 5 6 7 1
输出样例:
在这里给出相应的输出。例如:
7 10
本题特别鸣谢zyz大佬帮我找到坑点 并认真的讲解简单又正确的思路
#include <iostream>
#include<cmath>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int v[1005];
int k[1005];
int main()
{
int a,b;
int n,m,i,j;
cin>>n>>m;
for(i=0;i<n;i++)
{
cin>>a;
v[a]=1;
}
for(j=0;j<m;j++)
{
cin>>b;
k[b]=1;
}
for(i=1;i<=1000;i++)
{
if(v[i]==1&&k[i]==1)
{
cout<<i<<" ";
}
}
}
输入一个字符串转换成十进制整数
7-24 输入一个字符串转换成十进制整数 (25分)
输入一个字符串,它可能是2–16进制数中一种进制数的表示,计算它对应的10进制数可能的最小值。例如,“151”可以是6–16进制中任何一种进制数的表示。 对应的10进制数可能的最小值就是67,也就是把它当成6进制。
输入格式:
输入一行字符串,仅由‘0’–‘9’和‘A’–'F’这些字符组成,保证转换后对应的10进制数在int范围内。
输出格式:
输出一个整数,为字符串对应10进制数可能的最小值。
输入样例:
213
输出样例:
39
根据题意要尽可能将字符串当成最小的进制
我们知道2进制中只有0,1而3进制中只有0,1,2所以可以访问字符串中出现的最大的字符 求其对应的最小进制 再转化为10进制即可
#include <iostream>
#include<cmath>
#include<bits/stdc++.h>
using namesp