语法百题36-99

更新时间:2024-01-07 04:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1036: 语法百题 神奇的fans 题目描述

传说fans是一个数学天才。在他五岁那年,从一堆数字卡片中选出了4张 卡片:5,7,6,8。这4个数字有什么神秘之处呢?如果把这4张卡片自左往右的排成:5,6,7,8。你就会发现:原来这4个数字构成了等差数列!当年 fans选出了n组卡片,据说都能够构成等差数列。但是事实真的是这样吗?fans真的有这么神奇吗? n组数据就是fans选出的n组卡片,请你判断每一组卡片是否能构成等差数列. 输入

第一个数为数据的组数n,表示后面有n行,每行中的第一个数为该组数据的元素个数m(1≤m≤100),其后是m个正整数(不会超出int的表示范围)。 输出

如果能够构成等差数列,输出“yes”,否则输出“no”。 样例输入 2 4 5 7 6 8

8 1 7 3 2 8 12 78 3 样例输出 yes no

#include #include using namespace std; int main() {

int n,x[25],s=1; cin>>n;

for(int i=1;i<=n;i++) {

int a[105],t,z,f; cin>>z;

for(int i=1;i<=z;i++) cin>>a[i]; for(int i=1;i

for(int j=i+1;j<=z;j++) {

if(a[i]>a[j]) {

t=a[i]; a[i]=a[j]; a[j]=t; } } }

for(int i=1;i<=z;i++) {

if(i==1)f=a[i+1]-a[i]; if(i==z) { x[s]=0; s++; break; }

else if(f!=a[i+1]-a[i]) { x[s]=1; s++; break; } } }

for(int i=1;i<=n;i++) {

if(x[i]==0)

cout<<\ else

cout<<\ }

//system(\ return 0; } 程序2:

#include #include #include #include #include

#include using namespace std; int main() {

int n,m,a[100],x[1000],i; cin>>n;

for(i=0;i

cin>>m;

for(int j=0;j>a[j]; sort(a,a+m);

for(int f=0;f

if(a[f+1]-a[f]!=a[f+2]-a[f+1])x[i]=1; if(x[i]==1)cout<<\ else cout<<\

} return 0; }

1037: 语法百题 数据记录 时间限制: 1 Sec 内存限制: 128 MB

提交: 27 解决: 18

题目描述

现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。 编写一个程序打印一个学生的数据记录。 N<100 输入

学生数量N占一行 每个学生的学号、姓名、三科成绩占一行,空格分开。 输出

每个学生的学号、姓名、三科成绩占一行,逗号分开。 样例输入 2

a100 zhblue 70 80 90 b200 newsclan 90 85 75 样例输出

a100,zhblue,70,80,90 b200,newsclan,90,85,75 #include using namespace std;

int main(int argc, char *argv[]) {

int s,i; cin>>s; string a,b; int c,d,e; for(i=0;i

cin>>a>>b>>c>>d>>e;

cout<

1038: 语法百题 成绩统计 时间限制: 1 Sec 内存限制: 128 MB

题目描述

有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩) 输入

学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。 输出

各门课的平均成绩 最高分的学生的数据(包括学号、姓名、3门课成绩)平均分为整数 样例输入 2

1 blue 90 80 70 b clan 80 70 60 样例输出 85 75 65 1 blue 90 80 70

提示 n<=20

#include using namespace std; int main() {

string a[100],max2;

int n,c[100],d[100],e[100],f[100],i,g[100],max0=-1000,o=0,h[100],p=0,q=0; int max3,max4,max5; char b[100],max1; cin>>n;

for (i=0;i

cin>>b[i]>>a[i]>>c[i]>>d[i]>>e[i]; o+=c[i]; p+=d[i]; q+=e[i];

g[i]=c[i]+d[i]+e[i];

if (g[i]>max0) {max0=g[i];max1=b[i];max2=a[i];max3=c[i];max4=d[i];max5=e[i];} } h[0]=o/n; h[1]=p/n; h[2]=q/n; for (i=0;i<3;i++) cout<

cout<

1039: 语法百题 数字

时间限制: 1 Sec 内存限制: 128 MB

题目描述

给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入

一个不大于5位的数字

输出

三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数 样例输入 12345 样例输出 5 1 2 3 4 5 54321 提示

哈姆雷特:数字还是字符?这是一个问题! #include #include using namespace std; int main() {

int l,i; string s; cin>>s; l=s.length(); cout<=0;i--) cout<

1040: 语法百题 保留字母 时间限制: 1 Sec 内存限制: 128 MB

题目描述

编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。英文大小写都可以。 输入

一个字符串,长度不超过80个字符

输出

删掉非英文字母后的字符串。 样例输入 abc123+xyz.5 样例输出 abcxyz

#include

using namespace std;

int main() {

char a;

a=cin.get();

while(a!=EOF) {

if((a>64)&&(a<91)) {cout<96)&&(a<123)) {cout<

a=cin.get(); } return 0; }

#include using namespace std; int main() {

char a; while (cin>>a) {

if (a>='a'&&a<='z'||a>='A'&&a<='Z') cout<

1041: 语法百题 逆序输出 时间限制: 1 Sec 内存限制: 128 MB

题目描述

输入10个数字,然后逆序输出。 输入

十个整数 输出

逆序输出,空格分开 样例输入

1 2 3 4 5 6 7 8 9 0 样例输出

0 9 8 7 6 5 4 3 2 1 #include using namespace std; int main() {

int a[11];

for(int i=1;i<=10;i++) cin>>a[i]; for(int i=10;i>=1;i--) cout<

1042: 语法百题 IP判断 时间限制: 1 Sec 内存限制: 128 MB

题目描述

在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。 合法的IP是这样的形式:A.B.C.D 其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001这种情况。 现在,请你来完成这个判断程序吧^_^ 输入

输入由多行组成,每行是一个字符串,输入由“End of file”结束。 字符串长度最大为30,且不含空格和不可见字符

输出

对于每一个输入,单独输出一行 如果该字符串是合法的IP,输出Y,否则,输出N 样例输入 1.2.3.4 a.b.c.d 267.43.64.12 12.34.56.bb 210.43.64.129 -123.4.5.6 End of file 样例输出 Y N N N Y N

#include int main() {

char a[100]; while (1) {

scanf(\

if (a[0]=='E' && a[1]=='n' && a[2]=='d') break; int i=-1; bool flag=1;

for (int j=1;j<=4;j++) {

int temp=0;

for (i++;a[i]!='.' && a[i]!='\\0';i++) {

if (a[i]>'9' || a[i]<'0') {

printf(\ flag=0; break; }

temp*=10; temp+=a[i]-'0'; }

if (!flag) break;

if (temp<0 || temp>255) {

printf(\ flag=0; break; } } if (flag) printf(\ printf(\ } return 0; }

题目描述

对10个整数从小到大排序。 输入

10个整数 输出

排序好的10个整数 样例输入

4 85 3 234 45 345 345 122 30 12 样例输出 3 4 12

1043: 语法百题 排序

: 1 Sec 内存限制: 128 MB

时间限制

30 45 85 122 234 345

#include #include using namespace std; int main() {

int i,j,temp,n,a[12]={0}; n=10;

for(i=0;i>a[i]; for(i=0;i

if(a[i]>a[j]) {

temp=a[i]; a[i]=a[j]; a[j]=temp; } }

for(j=0;j1044: 语法百题 Tom数

时间限制: 1 Sec 内存限制: 128 MB 题目描述

正整数的各位数字之和被Tom称为Tom数。求输入数(<2^32)的Tom数! 输入

每行一个整数(<2^32). 输出

每行一个输出,对应该数的各位数之和. 样例输入

12345 56123 82 样例输出 15 17 10

#include #include using namespace std; int main() {

long long a,sum=0; while(cin>>a) {

while(a>0) {

sum+=a; a/=10; }

cout<

//system(\ return 0; }

1045: 语法百题 插入数字 时间限制: 1 Sec 内存限制: 128 MB

题目描述

已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。 输入

第一行,原始数列。 第二行,需要插入的数字。 输出

排序后的数列

样例输入

1 7 8 17 23 24 59 62 101 50 样例输出 1 7 8 17 23 24 50 59 62 101

#include using namespace std; int main() {

int a[1000],n,i,j,t,min,k; bool flag; n=10;

for(i=1;i<=n;i++)cin>>a[i]; for(i=2;i<=n;i++) {

k=a[i]; j=i-1;

while(a[j]>k&&j>=1) {

a[j+1]=a[j]; j--; } a[j+1]=k; }

for(i=1;i<=n;i++) cout<

语法百题-选票统计1046:

时间限制: 1 Sec 内存限制: 128 MB

题目描述

附中的oier又要选队长了,河伯苑圣和郝志宇当然要争一下。所以所有人都要投票。输入n和s,n为整数,s为一个字符串。n代表一共要参加选举的人数。s为选票。n个人分别用abcde??表示,所以s如果是aabc的话就代表a有俩票,b和c各一票。不区分大小写,如果有其他字符则无视。输出一共n行,每行输出每个人的选票。 输入 n s 输出 a:... b:... c:... d:... ... 样例输入 3

aBcAcb123a 样例输出 a:3 b:2 c:2

#include #include int n,a[100]; char s[1000]; int main() {

scanf(\

for (int i=0;i

a[s[i]-33]++; a[s[i]-65]++; }

for (int i=0;i

printf(\

}

1047: 语法百题 亲密数 时间限制: 1 Sec 内存限制: 128 MB

题目描述

两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求n以内的全部亲密数。 输入

一个整数n 输出

n以内的全部亲密数(输出格式:(A,B),不加换行,不加分隔符号) 一对亲密数只输出一次, 小的在前 样例输入 1000 样例输出 (220,284) 提示

按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。计算数a的各因子的算法:

用a依次对i(i=1~a/2)进行模运算,若模运算结果等于0,则i为a的一个因子;否则i就不是a的因子。 #include using namespace std; int yzh(int n) {

int i,s=0; for(i=1;i

int main() {

int j,n,i; cin>>n;

for(i=1;i<=n;i++)

if(yzh(i)<=n&&yzh(i)>i&&yzh(yzh(i))==i) cout<<\}

1048: 语法百题 最简真分数序列 时间限制: 1 Sec 内存限制: 128 MB

题目描述

按递增顺序依次列出所有分母为40,分子小于40的最简分数。 输出

分数之间用逗号分开(含最末逗号) 样例输出

1/40,3/40,7/40,9/40,11/40,13/40,17/40,19/40,21/40,23/40,27/40,29/40,31/40,33/40,37/40,39/40, 提示

对分子采用穷举法,利用最大公约数的方法,判断分子与40是否构成真分数。 #include using namespace std; bool hz(int a,int b) {

bool f=true; int i;

for(i=2;i<=a;i++) if(a%i==0&&b%i==0) f=false; return f; }

int main() {

int i;

for(i=1;i<=40;i++) if(hz(i,40)==true) cout<

1049: 语法百题 弹球

时间限制: 1 Sec 内存限制: 128 MB

题目描述

一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入

M N 输出

它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行 样例输入 1000 5 样例输出 31.25 2875.00 #include using namespace std; int main() {

double m,n,i,o=0; cin>>m>>n; o=m;

for (i=1;i<=n;i++) { o+=m; m=m/2.00; }

printf(\ // system(\ return 0; }

1050: 语法百题 委派任务 时间限制: 1 Sec 内存限制: 128 MB

题目描述

某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:

1)A和B两人中至少去一人; 2)A和D不能一起去;

3)A、E和F三人中要派两人去; 4)B和C都去或都不去; 5)C和D两人中去一个; 6)若D不去,则E也不去。 问应当让哪几个人去? 输出

要派出的人 ,若有多个,按字母递增顺序排列,用逗号分开(含末尾逗号) 样例输入 样例输出 A,B,C,F,

#include using namespace std; int main() {

cout<<\ return 0; }

1051: 语法百题 字符串正反连接 时间限制: 1 Sec 内存限制: 128 MB

题目描述

所给字符串正序和反序连接,形成新串并输出 输入

任意字符串(长度<=50) 输出

字符串正序和反序连接所成的新字符串 样例输入 123abc 样例输出 123abccba321 #include #include #include using namespace std; char a[100],b[100]; int main() {

cin>>a>>b; cout<

for(int i=strlen(b)-1;i>=0;i--) {

cout<

for(int i=strlen(a)-1;i>=0;i--) {

cout<

1052: 语法百题 尼科彻斯定理 时间限制: 1 Sec 内存限制: 128 MB

题目描述

验证尼科彻斯定理,即:任何一个正整数的立方都可以写成一串连续奇数的和。 输入

任一正整数 输出

该数的立方分解为一串连续奇数的和 样例输入

13 样例输出

13*13*13=2197=157+159+161+163+165+167+169+171+173+175+177+179+181 提示

本题是一个定理,我们先来证明它是成立的。对于任一正整数a,不论a是奇数还是偶数,整数(a×a-a+1)必然为奇数。 构造一个等差数列,数列的首项为(a×a-a+1),等差数列的差值为2(奇数数列),则前a项的和为: a×((a×a-a+1))+2×a(a-1)/2 =a×a×a-a×a+a+a×a-a =a×a×a

定理成立。证毕。

通过定理的证明过程可知L所要求的奇数数列的首项为(a×a-a+1),长度为a。编程的算法不需要特殊设计,可按照定理的证明过直接进行验证。 #include #include using namespace std; int main() {

int a,b,c,d; scanf(\ b=a*a*a;

printf(\ for(d=0,c=0;c

d+=a*a-a+1+c*2;

printf(c?\}

// system(\ return 0; }

1053: 语法百题 斐波纳契数列 时间限制: 1 Sec 内存限制: 128 MB

题目描述

斐波纳契数列 1,1,2,3,5,8,13,21,34,55,89……这个数列则称为“斐波纳契数列”,其中每个数字都是“斐波纳契数”。 输入

一个整数N(N不能大于40) 输出

由N个“斐波纳契数”组成的“斐波纳契数列”。 样例输入 6 样例输出 1 1 2 3 5 8 #include using namespace std; int main() {

int a[10001],n,i; cin>>n; a[1]=1; a[2]=1;

for(i=3;i<=n;i++) {

a[i]=a[i-1]+a[i-2]; }

for(i=1;i<=n;i++) {

cout<

1054: 语法百题 最大数问题 时间限制: 1 Sec 内存限制: 128 MB

题目描述

输入若干个整数,以-1标记输入结束。输出其中的最大数 输入

若干个整数。(以-1标记输入结束) 输出

其中的最大数 样例输入

1 2 5 7 8 6 1 -6 -1 样例输出 8

#include #include using namespace std; int main() {

int a=0,max=0,min=0; cin>>a; max=a; while(a!=-1) {

if(a>max) {

max=a; }

scanf(\}

printf(\ //system(\ return 0; }

题目描述

求1+2!+3!+...+N!的和 输入

正整数N(N〈=20)

语法百题 求1+2!+3!+...+N!的和时间限制: 1 Sec 内存限制: 128 MB

1055: 输出

1+2!+3!+...+N!的和 (结果为整数形式) 样例输入 3 样例输出 9

#include #include #include

#include #include #include using namespace std; int main() {

long long N,i,l,j; cin>>N;

for(i=1,l=1,j=0;i<=N;i++) {

l=l*i; j=l+j; }

cout<

1056: 语法百题 求s=a+aa+aaa+aaaa+aa...a的值

时间限制: 1 Sec 内存限制: 128 MB

题目描述

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个一位的整数。 例如2+22+222+2222+22222(此时共有5个数相加) 输入

整数a和n(n个数相加,1<= n, a<=9) 输出

s的值 样例输入 2 2 样例输出 24

#include #include

using namespace std; int main() {

long long h1,h2; int i,a,n; cin>>a>>n;

h1=a; h2=a;

for (i=1;i<=n-1;i++) {

h1=h1*10+a; h2=h2+h1; } cout<

1057: 语法百题 哥德巴赫猜想 时间限制: 1 Sec 内存限制: 128 MB

题目描述

德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对 输入

输入任意的>6的正偶数(<32767) 输出

试求给出的偶数可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)

样例输入 1234 样例输出 25

#include #include using namespace std; bool zs(int num) {

float a=sqrt(num); if (num==1)

return false;

for(int i=2;i<=a;i++) {

if (num%i==0) return false; }

return true; }

int main() {

int i,num,sum=0; cin>>num;

for (i=2;i<=num/2;i++) if (zs(i)&&zs(num-i)) sum++;

cout<

题目描述

按如下递归公式求函数值。 x=1时 f(x)=10;x>1时 f(x)=f(x-1)+2 输入 整型变量x

1058: 语法百题 求函数值 : 1 Sec 内存限制: 128 MB

时间限制

输出 f(x) 样例输入 10 样例输出 28

#include int main() {

int n;

scanf(\

printf(\ return 0; }

#include #include using namespace std; int f(int x) {

if (x==1) return 10; else return f(x-1)+2; }

int main() {

int a,o; cin>>a; o=f(a);

printf(\ //system(\ return 0; }

题目描述

1059: 语法百题 求车速 : 1 Sec 内存限制: 128 MB

时间限制一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。新的对称数是多少? 输入 输出 样例输入 样例输出 95959 提示

根据题意,设所求对称数为i,其初值为95859,对其依次递增取值,将i值的每一位分解后与其对称位置上的数进行比较,若每个对称位置上的数皆相等,则可判定i即为所求的对称数。

#include #include using namespace std; int main() {

int t,a[5]; long int k,i;

for(i=95860;;i++) {

for(t=0,k=100000;k>=10;t++) {

a[t]=(i%k)/(k/10); k/=10; }

if((a[0]==a[4])&&(a[1]==a[3])) {

printf(\ printf(\ break; } }

return 0; }

1060: 语法百题 进制转换 时间限制: 1 Sec 内存限制: 128 MB

题目描述

一个十进制数n(n<=200000000)转换成二进制数,例如输入10,输出1010. 输入 一个整数n 输出 二进制数 样例输入 10 样例输出 1010

#include int a[32];

int main() {

int n;

bool flag=0; scanf(\

for (int i=31;n;i--) {

a[i]=n%2; n/=2; }

for (int i=0;i<32;i++) {

if (a[i]) flag=1; if (flag)

printf(\ }

return 0; }

1061: 语法百题 立方和不等式 时间限制: 1 Sec 内存限制: 128 MB

题目描述

试求满足下述立方和不等式的m的整数解。1^3+2^3+...+m^3〈=n 本题算法如下:对指定的n,设置求和循环,从i=1开始,i递增1取值,把i3(或i*i*i)累加到s,直至s>=n,脱离循环作相应的打印输出。 输入

正整数n 输出

不等式的整数解 样例输入 10 样例输出 2

#include

int main() {

int n,temp=0,i; scanf(\

for (i=1;temp<=n;i++) temp+=i*i*i;

printf(\ return 0; }

1062: 语法百题 自守数问题 时间限制: 1 Sec 内存限制: 128 MB

题目描述

自守数是指一个数的平方的尾数等于该数自身的自然数。 例如: 25^2=625 76^2=5776 9376^2=87909376 请求出200000以内的自守数? 输出

200000以内的自守数(包括0, 数之间用两个空格分开) 提示

若采用“求出一个数的平方后再截取最后相应位数”的方法显然是不可取的,因为计算机无法表示过大的整数。分析手工方式下整数平方(乘法)的计算过程,以376为例: 376 被乘数 X 376 乘数 ----------

2256 第一个部分积=被乘数*乘数的倒数第一位 2632 第二个部分积=被乘数*乘数的倒数第二位 1128 第三个部分积=被乘数*乘数的倒数第三位 ---------- 141376 积

本问题所关心的是积的最后三位。分析产生积的后三位的过程,可以看出,在每一次的部分积中,并不是它的每一位都会对积的后三位产生影响。总结规律可以得到:在三位数乘法中,对积的后三位产生影响的部分积分别为: 第一个部分积中:被乘数最后三位*乘数的倒数第一位 第二个部分积中:被乘数最后二位*乘数的倒数第二位 第三个部分积中:被乘数最后一位*乘数的倒数第三位 将以上的部分积的后三位求和后截取后三位就是三位数乘积的后三位。这样的规律可以推广到同样问题的不同位数乘积。 按照手工计算的过程可以设计算法编写程序。

#include #include #include #include #include

using namespace std; int wei(int x){ long long w=1; while(x>0){ x/=10; w*=10; }

return w; }

int main(){

long long i; bool flag=false;

for(i=0;i<=200000;i++){

long long a=i*i; if(a%wei(i)==i){ if(flag){

cout<<\ }else{

cout<

flag=true; }

return 0; }

1063: 语法百题 舍罕王的失算 时间限制: 1 Sec 内存限制: 128 MB

题目描述

相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐.这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧.就在棋盘的第1格放1粒,第2格放2粒,第三格放4粒,以后每一格都比前一格增加一位,依此放完棋盘一前n个格子,我就感激不尽了.舍罕王让人扛了一袋麦子,他要兑现他的许诺.

请问,国王要兑现他的许诺共要多少粒麦子赏赐他的宰相? 输入

一个整数n(n<=50) 输出

一个整数 样例输入 3 样例输出 7

#include #include

using namespace std; int main() {

int a,b,c,d; cin>>a; while(a!=1) {

if(a%2==0)

{cout<

{cout<

return 0; }

1064: 语法百题 角谷猜想 时间限制: 1 Sec 内存限制: 128 MB

题目描述

角谷猜想: 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 输入

任一正整数 输出

演算的过程 样例输入 10 样例输出 10/2=5 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1

#include using namespace std; void odd(int&n) {

int d=n; n=n*3+1;

cout<

void even(int&n)

{

int d=n; n/=2;

cout<

int main() {

int n; cin>>n; while(n!=1)

{

if(n%2==0)even(n); else if(n%2==1)odd(n); } }

1065: 语法百题 班级人数 时间限制: 1 Sec 内存限制: 128 MB

题目描述

某班学生参加程序设计大赛,最后结果及格有超过P%但不足Q%的人。现在给你P和Q,你要算出该班最少有多少人。(数据弱了一点,所以好通过)。 输入

两个实数P,Q。用空格隔开。每个数最多有两位小数。0.00<=p<q<=99.99 多行,多组数据 输出

这个班级的最少的人数。多行多组数据 样例输入 13 14.1 67.73 67.92 样例输出 15

28

#include #include

#include

using namespace std; int main() { double a,b; int i=0;

while(cin>>a>>b) { for (i=1; ; i++)

if(floor(i*b/100)-floor(i*a/100)>=1) break;

cout<

return 0; }

1066: 语法百题 完数

时间限制: 10 Sec 内存限制: 128 MB

题目描述

一个数如果恰好等于它的因子之和,这个数就称为\完数\。 例如,6的因子为1、2、3,而6=1+2+3,因此6是\完数\。 编程序找出N之内的所有完数,并按下面格式输出其因子: 输入 N 输出

? its factors are ? ? ? 样例输入 1000 样例输出

6 its factors are 1 2 3 28 its factors are 1 2 4 7 14

496 its factors are 1 2 4 8 16 31 62 124 248

#include using namespace std;

int main() {

int n,N,s;

cin>>N;

for(n=1;n<=N;n++) {

int s=0;

for(int i=1;i

cout<

{cout<

return 0; }

1067: 语法百题 阿姆斯特朗数 时间限制: 1 Sec 内存限制: 128 MB

题目描述

如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。 如 407=4^3+0^3+7^3就是一个阿姆斯特朗数。试编程求1-n以内所有阿姆斯特朗数。n<=1000000 输入

一个整数n 输出

从小到大输出,每行一个数 样例输入 1000 样例输出 1 153 370

371 407

#include using namespace std; int main() {

int n,i,s,x; cin>>n;

for (i=1;i<=n;i++) {

x=i; s=0;

while(x!=0) {

int y; y=x; s=s+y*y*y;

x=x/10; }

if(i==s) cout<

return 0; }

1068: 语法百题 连续自然数和 时间限制: 1 Sec 内存限制: 128 MB

题目描述

对一个给定的自然数M,求出所有的连续的自然数段(连续个数大于1),这些连续的自然数段中的全部数之和为M。 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。 输入

一行,包含一个整数为M的值(10 <= M <= 2,000,000) 输出

每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,可能有多种答案,都要输出,所有输出行的第一个数按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。

样例输入 10000 样例输出 18 142 297 328 388 412 1998 2002

#include using namespace std; int main() {

long i,j,k,m ;

cin>>m;

k = m/2+1 ;

for(i=1 ;i <=k ; i++) for(j=i+1; j<=m ; j++) if( (j-i+1)*(i+j)/2 >=m ) {

if ( (j-i+1)*(i+j)/2 == m ) {

cout<

return 0 ; }

1069: 语法百题 筛法求素数 时间限制: 1 Sec 内存限制: 128 MB

题目描述

用筛法求之N内的素数。 n<=150 输入 N 输出

0~N的素数 样例输入 100 样例输出 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

#include using namespace std; int main() {

int a,i,j,k; cin>>a; if(a>1) {

cout<<\ for(i=3;i<=a;i++) {

for(j=2;j

if(j==i-1)cout<

//system(\ return 0; }

#include #include #include using namespace std; int main() {

int a1[100000]={0}; int i,j,t,t2,n; cin>>n;

for(i=2;i<=sqrt(n);i++) if(a1[i]==0) {

t2=n/i;

for(j=2;j<=t2;j++) a1[i*j]=1; } t=0;

for(i=2;i<=n;i++) if(a1[i]==0) {

cout<

cout<

1070: 语法百题 密码

时间限制: 1 Sec 内存限制: 128 MB

题目描述

网上流传一句话:\常在网上飘啊,哪能不挨刀啊~\。其实要想能安安心心地上网其实也不难,学点安全知识就可以。 首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:

(1).密码长度大于等于8,且不要超过16。

(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。 这四个字符类别分别为: 1.大写字母:A,B,C...Z; 2.小写字母:a,b,c...z; 3.数字:0,1,2...9;

4.特殊符号:~,!,@,#,$,%,^;

给你一个密码,你的任务就是判断它是不是一个安全的密码。 输入

输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。 输出

对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。 样例输入 3 a1b2c3d4 Linle@ACM ^~^@^@!% 样例输出 NO YES NO

#include #include

#include

using namespace std; char s[1001]; int len;

bool judgea(char x) {

if(x<='Z'&&x>='A')return true; return false; }

bool judgeb(char x) {

if(x<='z'&&x>='a')return true;

return false; }

bool judgec(char x) {

if(x<='9'&&x>='0')return true; return false; }

bool judged(char x)//~,!,@,#,$,%,^; {

if(x=='~'||x=='!'||x=='@'||x=='#'||x=='$'||x=='%'||x=='^')return true; return false; }

int main() {

int ans; cin>>ans; while(cin>>s) {

int i,j,a=0,b=0,c=0,d=0,flag=1,total=0; len=strlen(s);

if(len<8||len>16)flag=0; else {

for(i=0;i<=len-1;i++) {

if(judgea(s[i]))a++; if(judgeb(s[i]))b++; if(judgec(s[i]))c++; if(judged(s[i]))d++; }

if(a>0)total++; if(b>0)total++; if(c>0)total++; if(d>0)total++; if(total<3)flag=0; }

if(flag==0)cout<<\ else cout<<\ cout<

} }

1071: 语法百题 数组的距离 时间限制: 1 Sec 内存限制: 128 MB

题目描述

已知元素从小到大排列的两个数组f[]和g[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离 输入

第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。 第二行有m个元素,为数组f[]。 第三行有n个元素,为数组g[]。 输出

数组的最短距离 样例输入 5 5 1 2 3 4 5 6 7 8 9 10 样例输出 1

#include #include #include #include using namespace std; int min(int x,int y) {

if (x>=y) return y; else return x; }

int main() {

int h,m,n,i,j; int f[1001],g[1001]; for (i=0;i<=1000;i++)

{

f[i]=0; g[i]=0;

}

cin>>m>>n;

for (i=1;i<=m;i++) cin>>f[i];

for (j=1;j<=n;j++) cin>>g[j];

h=abs(f[1]-g[1]); for (i=1;i<=m;i++) {

for (j=1;j<=n;j++) h=min(h,abs(f[i]-g[j])); }

cout<

return 0; }

1072: 语法百题 母牛生小牛 时间限制: 1 Sec 内存限制: 128 MB

题目描述

设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛? 输入

输入一个整数N。(1≤N≤50) 输出

第N年时母牛的数量 样例输入 5 样例输出 3

#include using namespace std; int main()

{

int a[1000]={0},n,i=1,j,k; cin>>n;

for(j=1;j<=n;j++) for(k=1;k<=i;k++) {

a[k]++;

if(a[k]>=4)++i; } cout<

//system(\ return 0; }

#include using namespace std; int main() {

int a[60],i,n,s=0; cin>>n;

a[1]=1;a[2]=1;a[3]=1;a[4]=2;a[5]=3; for (i=6;i<=n;i++) {

a[i]=a[i-1]+a[i-3]; }

cout<

1073: 语法百题 矩阵转换 时间限制: 1 Sec 内存限制: 128 MB

题目描述

写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。 输入

一个3x3的矩阵 输出

转置后的矩阵 样例输入 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 2 5 8 3 6 9

#include

void swap(int &a,int &b) {

a^=b;

b^=a; a^=b; }

int main() {

int a[3][3];

for (int i=0;i<3;i++) for (int j=0;j<3;j++) scanf(\ swap(a[0][1],a[1][0]); swap(a[0][2],a[2][0]); swap(a[1][2],a[2][1]); for (int i=0;i<3;i++) {

for (int j=0;j<3;j++) printf(\ printf(\ }

return 0; }

1074: 语法百题 矩阵对角线之和 时间限制: 1 Sec 内存限制: 128 MB

题目描述

求一个3×3矩阵对角线元素之和。 输入

矩阵 输出

主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7

#include main()

{int i=0,j=0,a[3][3],s1,s2; for(i=0;i<3;i++) for(j=0;j<3;j++)

scanf(\s1=a[0][0]+a[1][1]+a[2][2]; s2=a[0][2]+a[1][1]+a[2][0]; printf(\}

1075: 数学 计算直线的交点数 时间限制: 1 Sec 内存限制: 128 MB

题目描述

平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数。 比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行)。 输入

输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n(n<=20),n表示直线的数量. 输出

每个测试实例对应一行输出,从小到大列出所有相交方案,其中每个数为可能的交点数,每行的整数之间用一个空格隔开。 样例输入 2 3 样例输出 0 1 0 2 3

#include using namespace std;

int f[25][200];

int main() {

int n,i,j,k,tmp; f[1][0]=1;

for(i=2;i<=20;i++) {

f[i][0]=1;

for(j=1;j

tmp=i-j;

for(k=0;k<=190;k++) {

if(f[j][k]==1) f[i][k+j*tmp]=1; } } }

while(cin>>n) {

tmp=n*(n-1)/2;

for(i=0;i<=tmp;i++) {

if(i==0) cout<<'0';

else if(f[n][i]==1) cout<<' '<

cout<

return 0; }

1076: 语法百题 迭代法求平方根 时间限制: 1 Sec 内存限制: 128 MB

题目描述

用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数 输入

a 输出

a的平方根 样例输入 4 样例输出 2.000

#include\#include\main()

{float x0,x1,a; scanf(\x1=a/2; do

{x0=x1;x1=(x0+a/x0)/2;}

while(fabs(x0-x1)>=0.00001); printf(\}

#include #include int main() {

double a; scanf(\

printf(\ return 0; }

1077: 语法百题 约瑟夫问题1 时间限制: 1 Sec 内存限制: 128 MB

题目描述

有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。 输入

初始人数n 输出

最后一人的初始编号 样例输入 3 样例输出 2

#include

const int M = 3;

int main() {

int n, s = 0; scanf(\

for (int i = 2; i <= n; ++i) s = (s+M)%i;

printf(\ return 0; }

1078: 语法百题 约瑟夫问题2

时间限制: 1 Sec 内存限制: 128 MB

题目描述

设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。 输入

多组数据,输入多行,每行2个数,分别表示n和m. 输出

多行,计算每一行中最后剩下这个人的编号. 样例输入 10 3 2 1 样例输出 4 2

#include using namespace std; int main(void) {

int i,n,m,p,q,s; int a[1000];

while(cin>>n>>m) {

for(i=0;i

a[i]=1; p=0;

for(q=1;q<=n-1;q++) {

for(i=p;i

i=(i-1)%n; a[i]=0;

本文来源:https://www.bwwdw.com/article/ar7x.html

Top