7-1 输出2到n之间的全部素数 (5分)
本题要求输出2到n之间的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
输入格式:
输入在一行中给出一个长整型范围内的整数。
输出格式:
输出素数,每个数占6位,每行输出10个。如果最后一行输出的素数个数不到10个,也需要换行。
输入样例:
10
输出样例:
2 3 5 7
include <iostream>
include <iomanip>
include <cmath>
using namespace std;
int main()
{
long int a,b,c=0,n,i;
bool prime;
cin>>n;
for(a=2;a<=n;a++)
{ prime=true;
b=int(sqrt(a+1));
for(i=2;i<=b;i++)
{
if (a%i==0)
{
prime=false;break;
}
}
if(prime)
{
cout<<setw(6)<<a;
c++;
if (c%10==0)
{
cout<<endl;
}
}
}
if(c%10!=0)
{
cout<<endl;
}
return 0;
}
7-2 输出前 n 个Fibonacci数 (11分)
本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如:1,1,2,3,5,8,13,...。
输入格式:
输入在一行中给出一个整数N(1≤N≤46)。
输出格式:
输出前N个Fibonacci数,每个数占11位,每行输出5个。如果最后一行输出的个数不到5个,也需要换行。
如果N小于1,则输出"Invalid."
输入样例1:
7
输出样例1:
1 1 2 3 5
8 13
输入样例2:
0
输出样例2:
Invalid.
include <stdio.h>
int main()
{
int i,n,count=0;
scanf("%d",&n);
if (n<1)
{
printf("Invalid.\n");
}
else
{
long int a[46]={1,1};
for(i=2;i<n;i++)
{
a[i]=a[i-1]+a[i-2];
}
for(i=0;i<n;i++)
{
printf("%11d",a[i]);
count++;
if(count%5==0)
{
printf("\n");
}
}
}
if(count%5!=0)
{
printf("\n");
}
return 0;
}
7-3 穷举问题-搬砖 (5分)
某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法?
输入格式:
输入在一行中给出一个正整数n。
输出格式:
输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c"的格式,输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。
如果找不到符合条件的方案,则输出"None"
输入样例:
45
输出样例:
men = 0, women = 15, child = 30
men = 3, women = 10, child = 32
men = 6, women = 5, child = 34
men = 9, women = 0, child = 36
include <iostream>
include <iomanip>
include <cmath>
using namespace std;
int main()
{
int m,w,c,n;
bool prime=0;
scanf("%d",&n);
for(m=0;m<=n/3;m++)
{
for(w=0;w<=n/2;w++)
{
c=n-m-w;//少点未知数也快点
if(n==3*m+2*w+0.5*c&&c>=0)
{
printf("men = %d, women = %d, child = %d\n",m,w,c);
prime=1;
}
}
}
if(prime==0)
{
cout<<"None"<<endl;
}
return 0;
}
7-4 计算阶乘和 (10分)
对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。
输入格式:
输入在一行中给出一个不超过10的正整数N。
输出格式:
在一行中输出S的值。
输入样例:
3
输出样例:
9
include <iostream>
using namespace std;
int main()
{
int n,s=0,i,t=1;
cin>>n;
for(i=1;i<=n;i++)
{
t *= i;
s += t;
}
cout<<s;
return 0;
}
7-5 求10个点到原点的距离和 (5分)
求10个点到原点的距离和。输入10个点的坐标,计算并输出这些点到原点的距离和。定义函数dist(x, y),计算平面上任意一点(x, y)到原点(0, 0)的距离,函数返回值类型是double。
输入格式:
输入在一行中给出10对实数,每对实数对应一个点的横坐标和纵坐标。
输出格式:
在一行中按照“distance = S”的格式输出部分和的值S,精确到小数点后六位,请注意等号的左右各有一个空格。题目保证计算结果不超过双精度范围。
输入样例:
0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9
输出样例:
distance = 63.639610
include <iostream>
include <cmath>
include <iomanip>
using namespace std;
int main()
{ double dist(double x,double y);
double a,b;
double s=0,sum=0;
for(int i=1;i<=10;i++)
{
scanf("%lf %lf",&a,&b );
s=dist(a,b);
sum += s;
}
printf("distance = %.6lf\n",sum);
return 0;
}
double dist(double x,double y)
{
double q,w,e;
q=xx;
w=yy;
e=sqrt(q+w);
return e;
}
7-6 简单计算器 (10分)
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:
1+2*10-10/2=
输出样例:
10
include<iostream>
include<iomanip>
using namespace std;
int main()
{
int num,b;
char op;
cin>>num;
while(cin>>op)
{
if(op=='+')
{
cin>>b;
num+=b;
}
else if(op=='-')
{
cin>>b;
num-=b;
}
else if(op=='')
{
cin>>b;
num=b;
}
else if (op=='/')
{ cin>>b;
if(b==0)
{
cout<<"ERROR"<<endl;break;
}
else if(b!=0)
{
num/=b;
}
}
else if(op=='=')
{
cout<<num<<endl;break;
}
else
{
cout<<"ERROR"<<endl;break;
}
}
return 0;
}
7-7 统计一行文本的单词个数 (10分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let's go to room 209.
输出样例:
5
include <stdio.h>
int main()
{
char string[19999];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
{
if(c==' ')
{
word=0;//用word值的来回切换实现单词个数的变化
}
else if(word==0)//word==0->新的空格->多了一个单词
{
word=1;
num++;
}
}
printf("%d",num);
return 0;
}
网友评论