La position actuelle:Accueil du site>Langue C - quelques exercices classiques de langue C

Langue C - quelques exercices classiques de langue C

2022-07-23 10:12:48Les cheveux n'ont pas beaucoup de code

Exercices1 Le plus petit nombre d'étapes de la série Fibonacci

FibonacciC'est comme ça que les tableaux sont définis:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
Donc,,FibonacciLa séquence est comme:0, 1, 1, 2, 3, 5, 8, 13, ...,InFibonacciLes nombres dans les colonnes sont appelésFibonacciNombre.Pour toiN,Tu veux en faire unFibonacciNombre,À chaque étape, vous pouvez mettre les chiffres actuelsXDevientX-1OuX+1,Je vais te donner un numéroNTrouver le nombre minimum d'étapes nécessaires peut devenirFibonacciNombre.

Description des entrées:

Saisissez un entier positifN(1 ≤ N ≤ 1,000,000)

Description des produits:

La sortie d'un nombre minimum d'étapes devientFibonacciNombre"

 (Trouver un nombre et le plus petit nombre d'étapes d'un élément dans la séquence Fibonacci)

Cliquez ici,Saut à la question 

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a=0;
    int b=1;
    int c=a+b;
    int n;
    scanf("%d",&n);
    while(1)
    {
        if(a==n||b==n)
        {
            printf("%d",0);
        break;
        }
        else
        {
            if(n>a&&n<b)
            {
                if(abs(n-a)>abs(b-n))
                    printf("%d",abs(n-b)); 
                else
                    printf("%d",abs(n-a));
                    break;
            }
        }
         a=b;
            b=c;
            c=a+b;
    }
    return 0;
}

absFonctions

 Fichier d 'en - tête#include<stdlib.h>

int abs(int x)

-- Valeur complète

Valeur de retour:Cette fonction renvoie x Valeur absolue de

Exercices2 Remplacement des espaces 

Veuillez implémenter une fonction,Remplacer chaque espace dans une chaîne par“%20”.Par exemple,Quand la chaîne estWe Are Happy.La chaîne remplacée estWe%20Are%20Happy. 

class Solution {
public:
	void replaceSpace(char *str,int length) {
       int i=0;
       int count=0;
        while(str[i]!='\0')
        {
            if(str[i]==' ')
            {
                count++;
            }
            i++;
}
        i=length-1;
        int j=length-1+count*2;
        for(i=length-1,j=length-1+count*2;i>0,j>0;i--,j--)
        {
            if(str[i]!=' ')
                str[j]=str[i];
        else
            {
                str[j--]='0';
                    str[j--]='2';
                str[j]='%';
            }
        }
	}
};

Comment résoudre le problème: Calculez d'abord le nombre d'espaces , Chaque espace est ensuite modifié en 3Caractères, Cela signifie que deux caractères sont ajoutés à chaque espace , Nombre d'espaces *2, Ensuite, ajoutez cette longueur à l'arrière du tableau ( Allongez le tableau ), Et puis commencer à traverser d'avant en arrière , Convertir sur demande après avoir rencontré un espace  

Choix des questions 

Première question unsigned char Examen de la plage de valeurs

#include<stdio.h>
int main(){
unsigned char i = 7;
int j = 0;
for(;i > 0;i -= 3){
++j;
}p
rintf("%d\n", j);
return 0;
}

  Quelle est la sortie du programme ()
A 2
B Cycle mort
C 173
D 172

Explication du problème:unsigned charPlage de valeurs0-255

iPlage de variation:7,4,1,254-2(Au milieujPlus maintenant.84Une fois,2Quandj Encore une fois, c'est 85Une fois),255-0(Au milieujPlus maintenant.85Une fois)

Deuxième question Opérations de bits 

L'une des options suivantes doit permettre deflagLe deuxièmebitPosition0()
A.flag&=~2
B.flag|=2
C.flag^=2
D.flag>>=2

 A 2Binaire de0010

      Après avoir pris le non 1100

     Le deuxièmebitBitwise0, Avec n'importe quel nombre et le résultat est 0

L'une des options suivantes doit permettre deflagLe deuxièmebitPosition0()

int fun(int a){
 a^=(1<<5)-1;
 return a;
}

F(21)Les résultats de

A.10
B.5
C.3
D.8

A,1Binaire de000001

      Cinq à gauche      100000

              Moins1       011111

Et21XOR            010101

                          001010

Les résultats sont les suivants:10

Question n° 3 Conversion de cas 

#include <stdio.h>
int main() {
char a = 0, ch;
while ((ch = getchar()) != '\n') {
if (a % 2 != 0 && (ch >= 'a' && ch <= 'z'))
ch = ch - 'a' + 'A';
a++;
putchar(ch);
}p
rintf("\n");
return 0;
}

 Le programme suivant s'exécute,Si vous entrez1abcedf2df<Retour à la voiture>Le résultat est()

A.1abcedf2df
B.1ABCEDF2DF
C.1AbCeDf2dF
D.1abceDF2DF

C, Le titre convertit les caractères minuscules en majuscules , Et cette lettre ASCII La valeur du Code ne peut pas être 2Nombre entier de fois de

Question n° 4 Alignement de la mémoire structurelle 

struct One{
	double d;
	char c;
	int i;
}
struct Two{
	char c;
	double d;
	int i;
}

 Les deux structures suivantes

In#pragma pack(4)Et#pragma pack(8)Dans le cas de,Les dimensions des structures sont respectivement()

A.16 24,16 24
B.16 20,16 20
C.16 16,16 24
D.16 16,24 24

A

Question 5 Cycle 

int x = 1;
do{	
    printf("%2d\n",x++);
}while(x--);

 

A.1
B.Aucune sortie
C.2
D.Dans le cycle de la mort

D

Question 6 Opération 

#include<stdio.h>
#include<stdlib.h>
void main()
{
  int a = -3;
  unsigned int b = 2;
  long c = a + b;
  printf("%ld\n", c);
}

 

A.-1
B.4294967295
C.0x7FFFFFFF
D.0xFFFFFFFF

A

 Question 7 Fonctionnement du pointeur

Avec définitionchar *p[]={"Shanghai","Beijing","Honkong"};Le résultat estjL'expression du caractère est

A.*p[1] +3
B.*(p[1] +3)
C.*(p[3] +1)
D.p[3] [1]

B

 

À propos de"Pointeur"La description incorrecte de()

A.Lorsqu'il est utiliséfreeAprès avoir libéré le contenu d'un pointeur,La valeur de la variable pointeur est définie àNULL
B.32La longueur de n'importe quel type de pointeur sous le système bit est4Octets
C.Le type de données du pointeur indique le type de données que le pointeur pointe réellement vers le contenu
D.Un pointeur sauvage est un pointeur vers une adresse mémoire non assignée ou déjà libérée

A

Question 8 Récursion de la fonction 

int f(int x){
    return ((x>2) ? x*f(x-1) : 3);
}
int i;
i=f(f(2));

 

Après avoir exécuté la fonction ci - dessus . iLa valeur de()

A.30
B.Récursion infinie
C.9
D.2160

C

Question 9 Tableau bidimensionnel 

 

int p[][4] = {
   {1}, {3, 2}, {4, 5, 6}, {0}};

Moyenne,p[1][2]La valeur de()

A.1
B.0
C.6
D.2

B

Question 10 Macro - définition 

 

À propos deC/C++Macro - définition pour,C'est faux.()

A. La définition de macro ne vérifie pas l'exactitude des paramètres ,Il y aura des risques pour la sécurité
B. Les constantes définies par macro sont plus faciles à comprendre , Si vous pouvez utiliser des macros pour définir des constantes ,Évitez l'utilisationconstConstante
C. Trop de définitions imbriquées de macros peuvent affecter la lisibilité du programme ,Et c'est facile de faire des erreurs.
D. Par rapport à l'appel de fonction , La macro - définition peut améliorer l'efficacité du programme 

Avec les définitions de macro suivantes: 

#define N 3+1

#define Y(n) ((N+1)*n)

Exécutez l'instruction z=2*(N+Y(5+1))Après,z La valeur de()

A.60
B.190
C.248
D. Aucune des réponses ci - dessus n'est correcte 

A

Question 11 Compilation du programme 

Composé de plusieurs fichiers sourcesCProcédure,édité、Prétraitement、Compiler、Les étapes telles que le lien produisent l'exécutable Final.Laquelle des étapes suivantes peut découvrir que la fonction appelée n'est pas définie()

A.Prétraitement
B.Compiler
C.Liens
D.Mise en œuvre

C

 

Question n° 12 Conversion implicite

char a; int b; float c; double d;

Alors l'expression a*b+d-c Le type de valeur est()

A.float
B.int
C.char
D.double

D

 

 

 

 

 

 

 

Mentions de copyright
Auteur de cet article [Les cheveux n'ont pas beaucoup de code],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/204/202207230323382507.html

Recommandé au hasard