计算书费java,C++期末作业复习题库

1.除以13

描述

输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。

输入

一个大于0的大整数,长度不超过100位。

输出

两行,分别为整数除法得到的商和余数。

样例输入:

2132104848488485

样例输出:

164008065268345

0

#include

#include

#include

using namespace std;

int main()

{

int t,len,shang[300],yu=0,b[150]={0}; //yu表示余数,shang[300]表示商

char a[150];

gets(a+1); //从标准输入设备读取字符串函数

len=strlen(a+1); //获取字符串长度

for(int i=1;i<=len;i++)

{

b[i]=a[i]-48; //ascll表中0-9是在48-57,所以需要重零开始

b[i]=b[i]+yu*10;

yu=b[i]%13; //得到余数

shang[i]=b[i]/13; //得到商

}

for(int j=1;j<=len;j++) //用于删除前导0

{

if(shang[j]!=0)

{

t=j;

break;

}

}

for(t;t<=len;t++) //此时t=j

{

cout<

}

cout<

cout << yu<< endl;

return 0;

}

2.判决素数个数

描述

输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。

输入

两个整数X和Y(1 <= X,Y <= 105)。

输出

输出一个整数,表示X,Y之间的素数个数(包括X和Y)。

样例输入:

1 100

样例输出:

25

#include

#include

#include

using namespace std;

bool isprime(int n)

{

if(n < 2) return false;

if(n == 2) return true;

for(int i = 2; i <= sqrt(n); ++i)

{

if(n % i == 0) return false;

}

return true;

}

int main()

{

int x, y, sum = 0;

scanf("%d%d",&x,&y);

if(x>y) swap(x,y);//如果x>y,则需要交换

for(int i = x; i <= y; ++i) //循环出全部数,判断某个数是素数。

{

if(isprime(i)) sum++;

}

printf("%d",sum);

return 0;

}

3.人民币支付

描述

从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的钞票。

输入

一个小于1000的正整数。

输出

输出分行,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数

样例输入

735

样例输出

7

0

1

1

1

0

#include

using namespace std;

//计算返回位数

int juge(int n){

int count=0;

while(n){

n/=10;

count++;

}

return count;

}

int main(){

int n,a=0,b=0,c=0,d=0,e=0; //定义输入的变量,以及每张人民币的面值为代表: a:100 b:50 c:20……

cin >> n; //例如 396

while(n>5){ //如果输入金额大于5,那么进入循环,判断其位数,再从大往小递减

if(juge(n) == 3){ //这里的3表示3个零, 例如:n=96 a=3

a=n/100;

n=n%100;

}

if(juge(n) == 2){ //同上 例如:n=96

if(n >= 50){

n=n-50;

b++;

}

while(n>=20){ //例如:( n=46 a=3 b=1 c=0),(n=26 a=3 b=1 c=1),(n=6 a=3 b=1 c=2)

n=n-20;

c++;

}

if(n>=10){ //例如:(n=6 a=3 b=1 c=2 d=0)

n=n-10;

d++;

}

}

if(n >= 5){ //例如:(n=6 a=3 b=1 c=2 d=0),//(n=1 a=3 b=1 c=2 d=0 e=1)

n=n-5;

e++;

}

}

cout<

cout<

cout<

cout<

cout<

cout<

}

4.最长单词

描述

一个以'.'结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式

输入

一个以'.'结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式

输出

该句子中最长的单词。如果多于一个,则输出第一个

样例输入

I am a student of Peking University.

样例输出

University

#include

#include

#include

using namespace std;

int main()

{

char a[2500]; //题目说明不超过500但是试了501-510运行都显示错误 不清楚为什么 给大点就完事 有人知道原因希望告知评论下

gets(a);

int len=strlen(a);

int k=0,max=-1,max_x;

for(int i=0;i

{

if( (a[i] >= 'a' && a[i]<='z') || (a[i] >= 'A' && a[i] <='Z')) //若为大小字母则 计数器 k++

{

k++;

}

else //若为 空格与点则

{

if(k>max) //判断最大长度

{

max=k; //记录最大长度存入max中

max_x=i-max; //记录最大单词的起始坐标

}

k=0; //计数器清零

}

}

for(int i=max_x;i

cout<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值