2
源代码:
#include
#include
#include
using namespace std;
#define maxn 610
int Judge(int a,int b) //最简真分数判断
{
int p;
while(b!=0)
{
p=a%b;
a=b;
b=p;
}
if(a>1)
return 0;
else
return 1;
}
int main()
{
int n,a[maxn];
int i,j;
int count;
while(scanf("%d",&n)!=EOF)
{
count=0;
if(n==0)
break;
for(i=0;i
程序截图:
※2. (2007年清华大学计算机研究生机试真题)质因数的个数
题目描述:
求正整数N(N>1)的质因数的个数。
相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
输入:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1
对于每组数据,输出N的质因数的个数。
样例输入:
120
样例输出:
5
提示:
注意:1不是N的质因数;若N为质数,N是N的质因数。
源代码:
#include
#include
int is_Prime(int n) //判断一个数是否是质数(素数)
{
int i;
int flag=1;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
flag=0;
break;
}
}
return flag;
}
int main()
{
int N;
int i,j,count;
while(scanf("%d",&N)!=EOF)
{
j=sqrt(N);
count=0;
for(i=2;i<=j;i++) //判断一个质数i是否是N的因数
{
while(N%i==0 && is_Prime(i)) //注意相同的质因数需要重复计算,故放到while循环内
{
count++;
N/=i;
}
if(N==1) //while循环结束后N为1,直接跳出;否则找下一个质因数
break;
}
if(N!=1) //以上循环结束后N是质数,表示此时的N也是N的质因数
count++;
printf("%d\n",count);
}
return 0;
}
程序截图:
3. 回文子串
题目描述:
输入一个字符串,输出该字符串中对称的子字符串的最大长度。
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
输入:
存在多组数据,每组数据一行字符串,长度不大于100。
输出:
输出回文子串的最大长度。
样例输入:
google
样例输出:
4
源代码:
#include
#include
#define maxlen 105
int Judgestr(char str[],int len) //判断字符串是否是回文串
{
int i=0,j=len-1;
int flag=1;
while(i
程序截图:
※4. (2002年华中科技大学计算机研究生机试真题)统计单词
题目描述:
编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。
(凡是以一个或多个空格隔开的部分就为一个单词)
输入:
输入包括1行字符串,以“.”结束,字符串中包含多个单词,单词之间以一个或多个空格隔开。
输出:
可能有多组测试数据,对于每组数据,
输出字符串中每个单词包含的字母的个数。
样例输入:
hello how are you.
样例输出:
5 3 3 3
【分析】需要注意用scanf("%s",str); 或cin>>str; 输入字符串,在没有输入任何字符的时候按空格、回车是不算字符的,如本题输入( hello how are you.)结果是一样的;在字符后面的空格为结束符,即变成(hello'\0' how'\0'are'\0'you.'\0'),只是这样最后一个空格比较难解决,幸好有题中说以'.为结束符,这样就有了界限,根据这个界限来换行,进行下一组输入。
此外,也可将每个单词包含的字母个数存入一数组,可以比较灵活地实现输出。
源代码:
#include
#define maxlen 1010
int main()
{
char str[maxlen];
int i,len;
while(scanf("%s",str)!=EOF)
{
len=0;
for(i=0;str[i]!='\0' && str[i]!='.';i++)
len++;
if(str[i]=='.')
printf("%d\n",len);
else
printf("%d ",len);
}
return 0;
}
程序截图:
=====================================我是分割线=====================================
4. 拓展:输入一句话,统计这句话中包含多少个单词
源代码:
#include
#include
#define maxlen 1010
int main()
{
char str[maxlen]={'\0'};
int i,flag,count=0;
while(gets(str)!=NULL)
{
flag=0,count=0; //flag开始置0可包括输入的第一个字符非空格的情况,意味着已有一个单词
for(i=0;i
程序截图: