您的位置:首页 > 编程语言 > C语言/C++

第五周循环控制编程练习/课堂作业 素数和+念整数《 程序设计入门——C语言》第七期 浙江大学 翁恺

2019-03-25 00:31 232 查看

一、素数和(5分)

题目内容:

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

 

输入格式:

两个整数,第一个表示n,第二个表示m。

 

输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

 

输入样例:

2 4

 

输出样例:

15

时间限制:500ms内存限制:32000kb

[code]#include<iostream>
using namespace std;

int main()
{
int n, m, sum=0;		//sum记录第n个素数到第m个素数之间所有的素数的和
int prime=2;		//	素数
int count = 0;		//记录素数个数
int isprime;		//记录是否为素数
scanf("%d %d", &n, &m);		//0<n<=m<=200

while (count < m)
{
isprime = 1;		//素数标志位初始化
//判断prime是否为素数
for (int i = 2; i < prime; i++)
{
if (prime%i == 0)
{
isprime = 0;
break;
}
}

if (isprime == 1)         //是否为素数
{
count++;		//	这是第几个素数
if (count >= n&&count <= m)		//此素数在(n,m)范围内则加入
{
sum += prime;
}
}

prime++;
}

printf("%d\n", sum);

system("pause");
return 0;
}

另外:输出整数区间(n,m)之间的所有素数(老师的方法)

[code]int isPrime(int i)		//	判断输入整数i是否为素数,返回素数标志位
{
int ret = 1;		//记录i是否为素数
int k;
//判断是否为素数
for (k = 2; k <= i - 1; k++) {
if (i%k == 0) {
ret = 0;
break;
}
}
return ret;		//返回是否为素数标志位
}

int main()
{
int n, m, sum = 0;		//sum记录第n个素数到第m个素数之间所有的素数的和
int count = 0;		//记录素数个数
int i;
scanf("%d %d", &n, &m);		//0<n<=m<=200
int n2 = n;

if (n == 1) n = 2;		//1不是素数
for (i = n; i <= m; i++) {		//	遍历n到m间的数,判断是否为素数
if (isPrime(i)) {		//调用判断是否为素数函数
sum += i;
count++;
}
}

printf("%d到%d之间一共有%d个素数,和为%d。\n",n2,m,count, sum);

system("pause");
return 0;
}

二、念整数(5分)

题目内容:

你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

如输入1234,则输出:

yi er san si

注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:

fu er san si yi

 

输入格式:

一个整数,范围是[-100000,100000]。

 

输出格式:

表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

 

输入样例:

-30

 

输出样例:

fu san ling

时间限制:500ms内存限制:32000kb

[code]#include<iostream>
using namespace std;

int main()
{
int x;
scanf("%d", &x);

//如果x为负数先输出“fu”,并将x转化为正数
if (x < 0)
{
printf("fu ");
x = -x;
}

int x2 = x;		//定义x2暂存x的原值

int count = 1;		//定义一个count初始化为1,用于记录x求对应最高位所需要除以的数,
//比如x=123,则count=100,123/100=1(最高位)

//接下来逐次对x除以10求得count值
while (x>9) {
count *= 10;
x /= 10;
}

//对原值x2除以count求得最高位,循环实现取得x2的每一位整数并输出相应拼音
do {
int d= x2 /count;
//判断当前位并输出相应拼音
switch (d) {
case 0:
printf("ling");
break;
case 1:
printf("yi");
break;
case 2:
printf("er");
break;
case 3:
printf("san");
break;
case 4:
printf("si");
break;
case 5:
printf("wu");
break;
case 6:
printf("liu");
break;
case 7:
printf("qi");
break;
case 8:
printf("ba");
break;
case 9:
printf("jiu");
break;
}
//控制空格是否输出
if (count > 1) {
printf(" ");
}
x2 = x2 % count;		//把x2的最高位去除
count /= 10;
} while (count>0);

printf("\n");
system("pause");
return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐