Primeira pergunta
Descrição do título:
escreva um programa para codificar uma sequência de 4 caracteres no texto cifrado usando a criptografia de substituição.A regra de criptografia é: substitua a letra original pela terceira letra do alfabeto. Observe que os três últimos caracteres são substituídos pelos três primeiros, como x substituído por a.
Formato de entrada e saída:
entrada: 4 caracteres
saída: 4 caracteres
Entrada de amostra:
ABcx
Saída de amostra:
DEfa
样例代码
#include <stdio.h>
int main()
{
char a[5];
scanf("%s",a);
for(int i=0;i<4;i++)
{
if(a[i]>=120||(a[i]>=88&&a[i]<=90))
{
if(a[i]==120)a[i]=97;
if(a[i]==121)a[i]=98;
if(a[i]==122)a[i]=99;
if(a[i]==88)a[i]=65;
if(a[i]==89)a[i]=66;
if(a[i]==90)a[i]=67;
}
else
a[i]=a[i]+3;
}
printf("%s",a);
return 0;
}
A segunda questão
Descrição do título:
Cálculo do ano bissexto. O programa insere um número inteiro positivo Y e outro número inteiro positivo N, separados por um espaço. Calcule o ano do enésimo ano bissexto após Y (se Y for um ano bissexto, o primeiro ano bissexto depois de Y será Y).
Entrada do programa:
YN
Resultado do programa:
N-ésimo ano bissexto após o início do ano Y
Entrada de amostra:
2005 3
Saída de amostra:
2016
参考代码
#include<stdio.h>
int main()
{
int y, n;
scanf_s("%d %d", &y, &n); //%d%d默认了两个整数之间有空格
for (y; n > 0; y++) //此法相较法二避免了分类讨论
{
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
n--;
}
printf("%d", y-1); //之所以是输出y-1,是因为当n减到1并且此时y对应的是闰年,n会--,但此时y++仍会执行;要是不减1而输出y,得到的结果每次都是正确结果+1的年份
//不合法语句//system ("pause");
return 0;
}
Nota: O julgamento do ano bissexto é um código fixo, é necessário entender:
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)//判断闰年的语句
A terceira questão
Diversidade de métodos
Descrição do título:
Há um elevador no edifício mais alto de uma cidade e o elevador é executado na ordem em que o número de andares é inserido. O elevador estava originalmente no 0º andar. Depois de executar uma sequência de entrada, ela pára neste andar e não retorna ao andar 0. Escreva um programa para calcular o tempo para o elevador executar uma sequência. Demora 6 segundos para cada elevador subir. Cada próximo nível leva 4 segundos. Se permanecer em um determinado andar, não importa quantas pessoas entrem ou saiam, fique por 5 segundos.
Entrada do programa:
a sequência de execução do elevador. O valor do piso é maior ou igual a 1, menor que 100 e 0 na sequência indica o final da entrada da sequência. Por exemplo, se a sequência de entrada for 2 1 0, significa que o elevador subirá primeiro do 0º andar para o 2º andar e depois descerá para o 1º andar.
Saída do programa: o
tempo de execução de cada elevador de sequência (segundos)
Entrada de amostra:
2 1 0
Saída de amostra:
26
参考代码
#include <stdio.h>
int main()
{
int current_floor;
int next_floor;
int sum;
current_floor = 0;
sum = 0;
int diff;
scanf_s("%d", &next_floor);
while (next_floor != 0)
{
diff = next_floor - current_floor;
if(diff>0)
{
sum = sum + diff * 6;
}
if (diff<0)
{
sum = sum + (-diff) * 4;
}
sum = sum + 5;
current_floor = next_floor;
scanf_s("%d", &next_floor);//循环输入next_floor直到next_floor==0
}
printf("%d", sum);
return 0;
}
Quarta pergunta
Diversidade de métodos
Título Descrição:
Escreva um programa Ao inserir uma sequência, é necessário não apenas contar o número de caracteres, mas também indicar o número de letras maiúsculas e minúsculas, números e outros caracteres.
Entrada do programa:
a sequência de caracteres a ser contada
Saída do programa: Os
cinco valores são letras maiúsculas, minúsculas, números, outros caracteres e o número total de caracteres, separados por espaços
Entrada de amostra:
I enjoyed reading these books very much
Saída de amostra:
1 32 0 6 39
参考代码
#include <stdio.h>
#include <string.h>
int main()
{
char a[100];
gets(a,100);//用gets也行,100表示缓冲区大小(可去)
int i;
i=strlen(a);
int total=0,num=0,cap=0,small=0,other=0;
for(int j=0;j<=i;j++)
{
if(a[j]=='\0')break;
if(a[j]>='A'&&a[j]<='Z')cap++;
else if(a[j]>='a'&&a[j]<='z')small++;
else if(a[j]>='0'&&a[j]<='9')num++;
else other++;
total++;
}
printf("%d %d %d %d %d",cap,small, num,other,total);
return 0;
}
Questão 5
Variedade de métodos de solução de problemas
Descrição do título:
Digite um número inteiro positivo (por exemplo: 7654321) e, em seguida, imprima o número inteiro em um formato de seção padrão de três dígitos (vírgula é uma vírgula em espanhol, como 7.654.321)
** Entrada do programa: * Número
inteiro positivo a ser segmentado
Saída do programa:
número inteiro positivo após a subseção
Entrada de amostra:
3456789
Saída de amostra:
3,456,789
参考代码
#include <stdio.h>
int main()
{
int a,i;
char s[30] = "";
scanf("%d",&a);
i = 0;
while(1)
{
s[i] = a%10 + '0';
a = a/10;
if(a==0)
{
break;
}
i++;
}//数位分离
printf("%c",s[i--]);
for(i;i>=0;i--)
{
if((i+1)%3== 0) /* i+1是是单个数字在数字字符串的位置,因为上面i是从0开始的*/
{
printf(",%c",s[i]);
}
else
{
printf("%c",s[i]);
}
}
return 0;
}
Nota: código com separação digital
int a,s[100];
int i=0;
while(1)
{
s[i] = a%10 + '0';
a = a/10;
if(a==0)
{
break;
}
i++;
}//数位分离
Pergunta 6
Descrição do título:
digite um número inteiro n (n> = 2) para determinar se n é um número primo. Se for um número primo, gera "SIM", caso contrário, gera "NÃO".
Entrada do programa:
número inteiro n
Saída do programa:
saída "YES" para números primos, caso contrário, saída "NO".
Entrada de amostra:
7
Saída de amostra:
YES
参考代码
#include <stdio.h>
int main()
{
int n, x;
scanf("%d", &n);
x = 0;
for (int i = n; i > 0; i--)
{
if (n % i == 0)x++;
}
if (x == 2)printf("YES");
else printf("NO");
return 0;
}
Pergunta 7
Descrição do tópico:
Digite um número inteiro positivo (> 1) no teclado e, em seguida, decomponha o número inteiro em 1 e multiplique cada fator primo.Se o número inteiro inserido for um número primo, ele deverá ser decomposto em 1 e o próprio número será multiplicado.
Formato de entrada e saída:
Entrada: 1
saída inteira : fatoração, saída de fator de pequeno a grande. Por exemplo: 1 2 2 * 3
Entrada de amostra:
18
Saída de amostra:
1*2*3*3
参考代码
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
for(int i=1;i<=n;i++)
if (n % i == 0&&i!=n)
{
n = n / i;
printf("%d*", i);
i = 1;
}
else if(n%i==0&&i==n)
{
printf("%d", i);
break;
}
return 0;
}