Aprendizagem de linguagem C elementar pesquisa binária número narciso impressão losango

Dica: aqui você pode adicionar o catálogo de todos os artigos da série, e o catálogo precisa ser adicionado manualmente por você.
Por exemplo: o primeiro capítulo Introdução ao aprendizado de máquina Python para o uso de pandas


Dica: Depois de escrever o artigo, o índice pode ser gerado automaticamente. Para saber como gerá-lo, consulte o documento de ajuda à direita


Prefácio

Para um aluno que reaprendeu o curso de linguagem C, gostaria de escrever algumas notas importantes aqui, e alguns exemplos difíceis (claro, só para mim), todos também podem se referir a ele.

1. A linguagem C é a mais fácil de começar

1. Tipo de dados

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

Cada um ocupa alguns bytes, verifique com a seguinte função, você sabe, isso é melhor lembrar.

#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));
}

Insira a descrição da imagem aqui

2. Variáveis, constantes

Como o nome sugere, as variáveis ​​são valores que irão mudar, enquanto as constantes são valores que não podem ser alterados depois de definidas.

  1. O escopo de uma variável local é o escopo local da variável.
  2. O escopo das variáveis ​​globais é todo o projeto.
  3. O ciclo de vida de uma variável se refere ao período de tempo entre a criação da variável e a destruição da variável
  4. O ciclo de vida de uma variável local é: o ciclo de vida de entrada no escopo começa e o ciclo de vida fora do escopo termina.
  5. O ciclo de vida das variáveis ​​globais é: o ciclo de vida de todo o programa.

3. String + caractere de escape

Uma string de caracteres causada por aspas duplas é chamada String Literal, ou string para abreviar. (Observação: a marca final de uma string é um caractere de escape de \ 0. Ao calcular o comprimento da string, \ 0 é a marca final e não é contada como uma string)
Caractere de escape
:? Usado ao escrever pontos de interrogação consecutivos, Evita que sejam analisados ​​em palavras de três letras.
'Usado para denotar constantes de caractere'
\ "Usado para denotar aspas duplas dentro de uma string.
\ Usado para denotar uma barra invertida, evitando que seja interpretado como um caractere de sequência de escape.
\ a Caractere de aviso, campainha
\ b backspace
\ f alimentação de papel
\ n alimentação de linha
\ r retorno de carro
\ t guia horizontal
\ v guia vertical
\ ddd ddd representa 1 ~ 3 números octais. Por exemplo: \ 130 X
\ xdd dd significa 2 hexadecimal dígitos. Por exemplo: \ x30 0

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

Os resultados de saída são: 6 14 O
primeiro é fácil de entender. Aqui eu divido o segundo para ficar mais fácil de entender. O mais embaraçoso é que meu entendimento estava errado no início, mas finalmente descobri que era tipo isso. Por conveniência, entenda, eu separo cada caractere com #: c #: # \ t # e # s # t # \ 32 # 8 # \ t # e # s # t #. # c, você pode encontrar um total de 13 #

4. Selecione e execute um loop de instruções

A frase de escolha é o que chamamos de if, switch, switch. Acho que é um tipo especial de frase de escolha, que é semelhante à escolha de if e else, que é mais fácil de entender. Observação: a interrupção pode sair da chave e a cláusula padrão é usada para o processamento. Se o caso não puder ser correspondido, ele pode ser escrito antes ou depois do caso na chave, não importa.
Instrução de loop
while
por
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;
}

Aqui, novamente, a diferença entre break e continue, o primeiro salta diretamente do loop, e o último termina este loop e entra no próximo loop.

2. Perguntas típicas

1. Imprimir losango

#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. Encontre e produza todo o "número de narcisos" entre 0 e 100.000.

#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. Pesquisa binária

#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);
}

Resumindo

Aqui está uma pequena introdução, e há muitas perguntas típicas, as seguintes funções, matrizes, ponteiros, serão adicionados, como dizer, na segunda vez para aprender esta linguagem, me sinto muito diferente, não a primeira vez, tão ignorante Agora , Eu sei como implementar algo para uma coisa, embora às vezes a forma como é implementado seja uma porcaria, esse também é o motivo para escrever muito pouco, então ainda tenho que discordar do código.

Acho que você gosta

Origin blog.csdn.net/weixin_45070922/article/details/109644258
Recomendado
Clasificación