C apprentissage du langage élémentaire recherche binaire numéro de jonquille impression losange

Astuce: Ici, vous pouvez ajouter le catalogue de tous les articles de la série, et le catalogue doit être ajouté manuellement par vous-même.
Par exemple: le premier chapitre Python Machine Learning Introduction à l'utilisation de pandas


Conseil: Une fois l'article rédigé, la table des matières peut être générée automatiquement. Pour savoir comment la générer, reportez-vous au document d'aide à droite.


Préface

Pour un étudiant qui a réappris le cours de langage C, j'aimerais écrire ici quelques notes importantes, et quelques exemples difficiles (bien sûr, uniquement pour moi), tout le monde peut également s'y référer.

1. Le langage C est le plus simple à démarrer

1. Type de données

char        //字符数据类型
short       //短整型
int         //整形
long        //长整型
long long   //更长的整形
float       //单精度浮点数
double      //双精度浮点数

Chacun occupe quelques octets, vérifiez-le avec la fonction suivante, vous savez, il vaut mieux s'en souvenir.

#include<stdio.h>
void main(){
    
    
	printf("char= %d\n", sizeof(char));
	printf("short=%d\n", sizeof(short));
	printf("int=%d\n", sizeof(int));
	printf("long=%d\n", sizeof(long));
	printf("long long =%d\n", sizeof(long long));
	printf("double= %d\n", sizeof(double));
}

Insérez la description de l'image ici

2. Variables, constantes

Comme son nom l'indique, les variables sont des valeurs qui vont changer. Les constantes sont des valeurs qui ne peuvent pas être modifiées une fois qu'elles sont définies.

  1. La portée d'une variable locale est la portée locale de la variable.
  2. La portée des variables globales est l'ensemble du projet.
  3. Le cycle de vie d'une variable fait référence à la période de temps entre la création de la variable et la destruction de la variable
  4. Le cycle de vie d'une variable locale est: le cycle de vie d'entrée dans le périmètre commence et le cycle de vie hors du périmètre se termine.
  5. Le cycle de vie des variables globales est: le cycle de vie de l'ensemble du programme.

3. Chaîne + caractère d'échappement

Une chaîne de caractères provoquée par des guillemets doubles est appelée chaîne littérale, ou chaîne pour faire court. (Remarque: la marque de fin d'une chaîne est un caractère d'échappement de \ 0. Lors du calcul de la longueur de la chaîne, \ 0 est la marque de fin et n'est pas comptée comme une chaîne)
Caractère d'échappement
:? Utilisé lors de l'écriture de points d'interrogation consécutifs, Empêchez-les d'être analysés en mots de trois lettres.
'Utilisé pour désigner les constantes de caractères'
\ "Utilisé pour désigner un guillemet double dans une chaîne.
\ Utilisé pour désigner une barre oblique inverse, l'empêchant d'être interprétée comme un caractère de séquence d'échappement.
\ a Caractère d'avertissement, buzzer
\ b retour arrière
\ f avance papier
\ n saut de ligne
\ r retour chariot
\ t tabulation horizontale
\ v tabulation verticale
\ ddd ddd représente 1 ~ 3 nombres octaux. Par exemple: \ 130 X
\ xdd dd signifie 2 hexadécimaux chiffres. Par exemple: \ x30 0

#include <stdio.h>
int main()
{
    
    
    printf("%d\n", strlen("abcdef"));
    printf("%d\n", strlen("c:\test\328\test.c"));
    return 0;
}

Les résultats de sortie sont les suivants: 6 14 Le
premier est facile à comprendre. Ici, je divise le second pour le rendre plus facile à comprendre. Le plus embarrassant est que ma compréhension était fausse au début, mais j'ai finalement trouvé que c'était comme Ceci. Pour plus de commodité Comprenez, je sépare chaque caractère avec #: c #: # \ t # e # s # t # \ 32 # 8 # \ t # e # s # t #. # c, vous pouvez trouver un total de 13 #.

4. Instructions de sélection et de boucle

La phrase de choix est ce que nous appelons if, switch, switch.Je pense que c'est un type particulier de phrase de choix, qui est similaire au choix de if et else, qui est plus facile à comprendre. Remarque: le break peut quitter le commutateur et la clause par défaut est utilisée pour le traitement. Si le cas ne peut pas être mis en correspondance, il peut être écrit avant ou après le cas dans le commutateur, cela n'a pas d'importance.
Déclaration de boucle
while
for
do while

#include <stdio.h>
int main()
{
    
    
	int i = 1;
	while (i <= 10)
	{
    
    
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}
#include <stdio.h>
int main()
{
    
    
 int i = 0;
 for(i=1; i<=10; i++)
 {
    
    
 printf("%d ", i);
 }
 return 0;
}
#include <stdio.h>
int main()
{
    
    
 int i = 10;
 do
 {
    
    
 printf("%d\n", i);
 }while(i<10);
 return 0;
}

Là encore, la différence entre break et continue, le premier saute directement hors de la boucle, et le second termine cette boucle et entre dans la boucle suivante.

2. Questions typiques

1. Imprimer le losange

#include<stdio.h>
//打印菱形
int main()
{
    
    
	int i, j, N = 5;
	//上半部分
	for (i = 0; i < N; i++) //N控制上半部分行数
	{
    
    
		for (j = i; j < N - 1; j++) //随行数递增,空格数递减(这里每行前面的空格数分别为4,3,2, 1,0)
			printf(" ");
		for (j = 0; j < 2 * i + 1; j++) //随行数递增,“*”数递增(这里每行前面的*数分别为1,3,5,7,9)
			printf("*");
		printf("\n"); //记得换行
	}
	//下半部分,其实就是上半部分的翻转
	for (i = N - 2; i >= 0; i--) //这里i从N-2开始的,不知道为什么的可以换成N-1试试,保证秒懂
	{
    
    
		for (j = i; j < N - 1; j++) //这里的空格数刚好相反,是随行数递增的
			printf(" ");
		for (j = 0; j < 2 * i + 1; j++) //这里的“*”数则是递减的(想想图形的样子)
			printf("*");
		printf("\n"); //同样的记得换行
	}
	return 0;
}

2. Trouvez et sortez tout le "nombre de jonquilles" entre 0 et 100000.

#include <math.h>
void main(){
    
    
	int n;
	int a[6] = {
    
     0 };
	int i;
	int sum = 0;
	int count = 0;
	for (n = 0; n <= 100000; ++n){
    
     //遍历0-100000之间所有数字
		for (i = n; i; i /= 10){
    
    
			a[count] = i % 10;  //用数组a[count]将每一位存起来,用count记下数字的位数
			++count;
		}
		for (i = 0; i < count; ++i){
    
    
			sum += pow(a[i], count); //将数组中所存的数字的每一位进行对应的位数count次方并求和
		}
		if (n == sum){
    
    
			printf("%d \n", n);
		}
		count = sum = 0; //强制将count与sum归0
	}
}

3. Recherche binaire

#include <math.h>
void main()
{
    
    
	int ar[] = {
    
     12, 23, 34, 45, 56, 67, 78, 90, 100, 120, 150, 200, 1234 };
	int n = sizeof(ar) / sizeof(ar[0]);
	int key;
	printf("input key:>");
	scanf("%d", &key);
	int low = 0;
	int high = n - 1;
	int mid, index = -1;
	while (low <= high)
	{
    
    
		mid = (low + high) / 2;
		if (key == ar[mid])
		{
    
    
			index = mid;
			break;
		}
		else if (key < ar[mid])
			high = mid - 1;
		else
			low = mid + 1;
	}
	if (index == -1)
		printf("要查找的%d不存在.....\n", key);
	else
		printf("要查找的%d在: 第%d个\n", key, index+1);
}

Pour résumer

Voici une petite introduction, et il y a beaucoup de questions typiques, les fonctions suivantes, tableaux, pointeurs, seront ajoutés, comment dire, la deuxième fois pour apprendre cette langue, je me sens très différent, pas la première fois, si ignorant Maintenant , Je sais comment implémenter quelque chose pour une chose, même si parfois la façon dont il est implémenté est nul, c'est aussi la raison pour laquelle il n'y a pas assez d'écriture, donc je dois toujours être en désaccord avec le code.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45070922/article/details/109644258
conseillé
Classement