这周的题,好难啊。。。好几个都得靠度娘。

编程题 - 字符加密

编写程序将4个字符构成的字符串用替换加密法编码为密文,其中加密规则是:将原来的字母用字母表中其后的第3个字母替换。注意,最后3个字符用前3个替换,如x用a替换。
输入:4个字符
输出:4个字符
样例:
Love
Oryh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
void rrr(int x)
{
int r,l;
r=x-23;
l=x+3;
if(x == 88 || x == 89 || x == 90 || x == 120 || x == 121 || x == 122)
printf("%c",r);
else
printf("%c",l);
}
void main()
{
char a,b,c,d;
scanf("%c%c%c%c",&a,&b,&c,&d);
rrr(a);
rrr(b);
rrr(c);
rrr(d);
}

编程题 - 闰年

闰年计算。程序输入一个正整数Y,以及另一个正整数N。计算从Y年开始后的第N个闰年是哪一年(如果Y本身是闰年,则Y之后的第一个闰年是Y)。
程序输入:
输入:
2005 3
输出:
2016

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
int run(int y)
{
int a;
if(y%400==0)//a,判断是否为闰年
return 1;
else{
if(y%4==0&&y%100!=0)
return 1;
else
return 0;
}
}
void main(){
int y,n,d=0,i=1;
scanf("%d %d",&y,&n);
//if (run(y))
//{
// d=1;
//}
n=n-d;
while(y>0)
if (run(y))
{
break;
}
else
{
y++;
}
//printf("%d",y);
while(i<n)
{
y=y+4;
if(run(y))
{
i++;
}
else
{
i=i;
}
}
printf("%d",y);
}

编程题 - 字符统计

编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。
程序运行结果如下:
输入:
I am 21 years old.
输出(五个数值依次为大、小写字母、数字、其他字符和总共含有的字符个数):
1 10 2 5 18

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
void main()
{
char s;
int da=0,xi=0,nu=0,ot=0,all=0;
while ((s=getchar()) != '\n')
{
if (s>= 'a'&&s<='z')
{xi++;
}
else if (s>='A'&&s<='Z')
{da++;
}
else if (s>='0'&&s<='9')
{nu++;
}
else
{ot++;
}
}
all=da+xi+nu+ot;
printf("%d %d %d %d %d",da,xi,nu,ot,all);
}

编程题 - 判断素数

输入一个整数,判断n是否为素数。
输入:
7
输出:
YES
输入:
9
输出:
NO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
void main()
{
int n,i=2;
scanf("%d",&n);
while(i<n)
{
if(n%i!=0)
{i++;
}
else
{i=2;
break;
}
}
if (i!=2){printf("YES");
}
else{printf("NO");
}
}

编程题 - 勾股数

找出N以内的勾股数的个数。要求找出三个整数a、b、c,它们满足以下的条件:
a*a+b*b=c*c
a <= b < c <= N
输入:N
输出:勾股数的个数
样例:
10
2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
int main()
{
int a, b, c, N;
int n = 0;
scanf("%d",&N);
for (a = 1; a <= N; a++)
for (b = a+1; b <= N; b++)
for (c = b+1; c <= N; c++)
{
if (a*a + b*b == c*c)
{
n++;
}
}
printf("%d", n);
//getchar();
return 0;
}

编程题 - 因子分解

从键盘输入一个正整数(>1),然后将该整数分解为1和各个质因子的相乘,如果输入的整数本身就是质数,则应分解为1和该数本身相乘。
输入:
1个整数
输出:
因子分解,因子由小到大输出。如:1*2*2*3
样例:
18
1*2*3*3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
int is(int n)
{
int i;
for (i=2;i < n;i++)
if (n%i==0)
break;
if (i==n)
return 1;
else
return 0;//is函数判断是否为素数
}
void main()
{
int n,s,i=2;
scanf("%d",&n);
printf("1");
s=n;
while(i<s)
{
if(s%i==0){

s=s/i;
printf("*%d",i);
}
else
{
i++;
}
}
printf("*%d",i--);
}

编程题 - 最大公因子

输入两个正整数,计算这两个整数的最大公因子。
输入:
24 18
输出:
6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
void main()
{
int a,b,c,n1,n2;
scanf("%d %d",&a,&b);
if(a>=b)
{
n1=a;
n2=b;
}
else
{
n1=b;
n2=a;
}
while(n2>0)
{
c=n1%n2;
n1=n2;
n2=c;
}
printf("%d",n1);
}

编程题 - 数列之和

输入a,n,求S=a + aa + a…a(n个a),其中a是个整数。
例如,输入2,5,计算2+22+222+2222+22222
输入:
2 3
输出:
246

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<math.h>
int main()
{
int a,n,i,aa,aaa,d;
scanf("%d %d",&a,&n); //2 number 2 3
i=1;
d=a;
aa=a;
while (i<n){
aaa=aa*10+a; //aaa=22
aa=aaa; //aa=22
d=d+aaa;
i=i+1;
}
printf("%d",d);
}