Informe del experimento en lenguaje C de la Universidad de Correos y Telecomunicaciones de Nanjing 2v2

Experimento 2: Selección y programación de estructura de bucle

1. El propósito y los requisitos del experimento
(1) Capaz de elegir correctamente el uso de la declaración if y la declaración de cambio para realizar el diseño del programa de la estructura seleccionada.
(2) Utilice correctamente las sentencias while, for, do ... while para realizar la programación de la estructura de bucle.
(3) Capaz de utilizar el anidamiento de bucles para lograr un control de programa más complejo y comprender el proceso de ejecución y los cambios de condición de los programas de anidamiento de bucles.
(4) Utilice el depurador vs 2010 para rastrear y depurar el programa, establecer puntos de interrupción, rastreo de un solo paso, ver el valor de la variable o expresión correspondiente, ayudar a comprender el ciclo, seleccionar la estructura del proceso de ejecución del programa y encontrar y modificar errores lógicos.

2.
Hardware del entorno experimental (equipo experimental) :
software de microordenador : sistema operativo Windows, Microsoft Visual Studio 2010

3. Principio y contenido del
experimento Tema del experimento (1) [Ver tema 6 del experimento 2 del libro de texto del experimento] : Programe exp2_6.c, lea los valores de 3 variables dobles a, byc, y use la instrucción if para juzgar si son Si se puede formar un triángulo, ¿qué tipo de triángulo (triángulo equósceles, triángulo isósceles, triángulo rectángulo, triángulo rectángulo isósceles, triángulo general)? Genere los resultados del juicio en varias situaciones. (Se recomienda consultar el diagrama de flujo 4.20 del libro de texto de orientación experimental. Ordene a, byc de pequeño a grande para simplificar el código)
Solución experimental:
① El código del programa fuente exp2_6.c es:

#include<stdio.h>
#include<math.h>
int main()
{
    
    
	double a,b,c,t;
	printf("请输入三角形的三边长:");
	scanf("%lf,%lf,%lf",&a,&b,&c);    
	if(a>b)  
	{
    
    
		t=a;
		a=b;
		b=t;
	}
	if (a>c)
	{
    
    
		t=a;
		a=c;
		c=t;
	}
	if (b>c)
	{
    
    
		t=b;
		b=c;
		c=t;
	}
	if (a+b<=c)
		printf("不能构成三角形");
	else if (fabs(a*a+b*b-c*c)<1e-3)
		if (fabs(a-b)<1e-3)
				printf("这是个等腰直角三角形");
		else
				printf("这是个直角三角形");
	else if (fabs(a-b)<1e-3||fabs(b-c)<1e-3)
		if (fabs(a-c)<1e-3)
				printf("这是个等边三角形");
		else
			    printf("这是个等腰三角形");
	else
			printf("这是个一般三角形");
	printf("\n");
	return 0;
}

② Ejecute el programa varias veces, ingrese datos diferentes y obtenga resultados diferentes. Complete la siguiente tabla. Los
tres datos originales representan la situación. Los tres lados de su entrada. El resultado de salida de su programa
puede formar un triángulo equilátero 3,3,3. Este es un triángulo equilátero. Triángulo equilátero
puede formar un triángulo rectángulo 4,3,5 Este es un triángulo rectángulo
puede formar un triángulo rectángulo isósceles 1.414,1,1 Este es un triángulo
rectángulo isósceles puede formar un triángulo isósceles 3,3,4 Este es un triángulo isósceles
puede formar Triángulo general 2,3,4 Este es un triángulo general, no
puede formar triángulo 1,1,2, no puede formar triángulo

Tema del experimento (2) [consulte el tema 1 del experimento tres del libro de texto del experimento] : Utilice las declaraciones while, for, do ... while para calcular el problema de suma:

Respuestas experimentales:
① El código fuente para la suma de los primeros 1000 elementos es el siguiente:

#include<stdio.h>
int main()
{
    
    
	double item,sum=0;
	int i,sign=1;
	double m=2,n=1;
	for(i=1;i<=1000;i++)//循环i从1到1000
	{
    
    
	    item=sign*m*1.0/n;//计算每一项的绝对值
	    sign=-sign;//改变每一项的正负
		m=m+n;//计算分子
		n=m-n;//计算分母
		sum+=item;//求和
	}
	printf("sum=%f\n",sum);//输出和
	return 0;
}

① Si el número de elementos a calcular no es la constante 1000 sino la variable n (valor obtenido por entrada), modifíquelo en base al programa exp3_1.c, el nombre del programa fuente modificado es: exp3_1A.c, ejecute el programa. Escriba la declaración que ha cambiado (incluida la adición, eliminación, modificación) en la siguiente tabla (la primera línea de la tabla es un ejemplo). Las
instrucciones de funcionamiento originales en exp3_1.c se modifican en consecuencia. No
hay aumento en exp3_1A.c y no hay un mensaje para ingresar el número de elementos de cálculo. Oración printf ("Ingrese el número de elementos de cálculo N:");
No hay oración para aumentar el número de elementos de cálculo de entrada scanf ("% d", & N);
para (i = 1; i <= 1000; i ++) Modifique 1000 a N para (i = 1; i <= N; i ++)

② Ejecute el programa anterior, complete la siguiente tabla y observe los resultados
. El resultado de la suma del valor n ingresado por el teclado y la salida de pantalla
2 suma = 0.500000
8 suma = 0.577683
13 suma = 2.195954
14 suma = 0.577921
15 suma = 2.195956
16 suma = 0.577922
19 suma = 2.195956
20 suma = 0.577922
199 suma = 2.195956
200 suma = 0.577922
  Por favor ingrese los números pares e impares que excedan de 16 usted mismo , observe los resultados de la suma y combine los resultados en la tabla anterior. ¿Qué reglas encuentra? Observe las características de cada elemento del resumen, consulte la información y explique las leyes que ha descubierto.
Descubrí que la
suma de los números impares
superiores a 16 tiende a 2,195956 y los resultados de la suma de los números pares superiores a 16 tienden a 0,577922.
Explicación: La
suma de los números pares e impares superiores a 16 supera la precisión del tipo doble.

Tema del experimento (3) [vea el tema 4 del experimento tres del libro de texto del experimento] : Escriba el programa exp3_4.c, primero use un bucle para determinar si el entero positivo x leído en el teclado es un número primo y emita el resultado del juicio. Vuelva a escribir sobre esta base y agregue el bucle externo para encontrar todos los números primos en el rango especificado (a, b) y déjelos en el formato de 5 por línea. (Aquí las variables a, b se ingresan desde el teclado y el rango es: 10≤a≤b≤1000)
Solución experimental:
escriba el programa exp3_4.c para leer un entero positivo x desde el teclado, juzgue si es un número primo y emita el resultado del juicio, código como sigue:

#include<stdio.h>
#include<math.h>
int main()
{
    
    
	int x,k,i;
	printf("请输入一个正整数x:");
	scanf("%d",&x);
	if(x<=0)
		printf("请输入一个正整数:");
	else if(x==1)
		printf("%d is not a prime.\n",x);
	else
	{
    
    
		k=(int)sqrt(x);
	    for(i=2;i<=k;i++)
			if(x%i==0)
				break;
		if(i>k)
			printf("%d is a prime,\n",x);
		else
			printf("%d is not a prime.\n",x);
	}
	return 0;
}

② Vuelva a escribir sobre la base del programa exp3_4.c, agregue el bucle externo, busque todos los números primos en el rango especificado (a, b) y déjelos en el formato de 5 por línea. El código del programa reescrito exp3_4A.c es el siguiente :
(Sugerencia: la variable x utilizada para determinar si un número primo ya no se lee, sino como una variable de control de bucle. Tome todos los números en el rango especificado (a, b) a su vez. Los valores de las variables ayb se ingresan desde el teclado. Asegúrese de que la lectura a, b estén en el rango de [10, 1000], y a es el límite inferior y b es el límite superior, es decir, la condición que debe cumplirse es: 10 <= a <= b <= 1000; de lo contrario, los datos de entrada no son válidos. Solicitar al usuario que vuelva a ingresar a, b hasta que se cumplan los requisitos)

#include<stdio.h>
#include<math.h>
int main()
{
    
    
	int x,k,i,count=0,a,b;
	printf("请输入正整数a,b:");
	scanf("%d,%d",&a,&b);
	if(a<10||b>1000||a>b)
		printf("请输入a和b使得10<=a<=b<=1000!");
	else 
	     for(x=a+1;x<b;x++)
	     {
    
    
		   k=(int)sqrt(x);
	       for(i=2;i<=k;i++)
			   if(x%i==0)
				   break;
		   if(i>k)
		   {
    
    
			   count++;
			   printf("%5d",x);
			   if(count%5==0)
				   printf("\n");
		   }
	     }
		 printf("\n");
	return 0;
}

Ejecute el programa, ingrese los valores de ayb de acuerdo con la primera columna de la tabla y complete los resultados de salida correspondientes
. Los valores de ayb ingresados ​​por el teclado se mostrarán en la pantalla.
12 14 13
24 28
34 56 37 41 43 47
531111189113127131 137, 139,
149, 151, 157, 163, 167,
173, 179, 181

Tema del experimento (4) [vea el tema 6 del experimento tres en el libro de texto experimental] : programe exp3_6.c para generar una forma de diamante usando anidación de bucles.
*
* * *
* * * * *
* * * * * * *
* * *
* * *
*
Solución experimental:
①Escriba el código fuente del programa exp3_6.cy haga los comentarios apropiados:

#include<stdio.h>
int main()
{
    
    
	int i,j;
	for(i=1;i<=4;i++)//上三角控制行
	{
    
    
		for(j=1;j<=4-i;j++)//上三角控制每行空格
			printf(" ");
	    for(j=1;j<=1+2*(i-1);j++)//上三角控制每行*
			printf("*");
		printf("\n");
	}
    for(i=3;i>=1;i--)//下三角控制行
	{
    
    
		for(j=1;j<=4-i;j++)//下三角控制每行空格
			printf(" ");
	    for(j=1;j<=1+2*(i-1);j++)//下三角控制每行*
			printf("*");
		printf("\n");
	}
	return 0;
}

② Intente hacer ciertas modificaciones sobre la base del programa anterior, y la salida respectivamente: triángulo superior, triángulo inferior, mitad triángulo izquierdo, mitad triángulo recto ¿Cuál es la declaración principal que debe modificarse?
Genere el triángulo superior: elimine el enunciado del
triángulo inferior. Genere el triángulo inferior: elimine el enunciado del triángulo superior.
Genere el medio triángulo izquierdo: modifique el enunciado
que controla cada línea . Genere el triángulo general derecho: modifique el enunciado que controla la suma de espacios de cada línea .
③Intente modificar el programa para lograr Genere un rombo de cualquier línea, el número de líneas está determinado por la entrada y verifique cuántas líneas de gráficos puede generar.

#include<stdio.h>
int main()
{
    
    
	int i,j,n;
	printf("请输入菱形行数n:");
	scanf("%d",&n);
	for(i=1;i<=(n+1)/2;i++)//上三角控制行
	{
    
    
		for(j=1;j<=(n+1)/2-i;j++)//上三角控制每行空格
			printf(" ");
	    for(j=1;j<=1+2*(i-1);j++)//上三角控制每行*
			printf("*");
		printf("\n");
	}
    for(i=(n-1)/2;i>=1;i--)//下三角控制行
	{
    
    
		for(j=1;j<=(n+1)/2-i;j++)//下三角控制每行空格
			printf(" ");
	    for(j=1;j<=1+2*(i-1);j++)//下三角控制每行*
			printf("*");
		printf("\n");
	}
	return 0;
}

Puede generar 167 líneas y solo líneas impares.

4. Resumen del experimento (incluidos problemas y soluciones, experiencia, opiniones y sugerencias, mensajes de error experimentales y soluciones, etc.)
(1) Principales problemas encontrados en el experimento y soluciones

problema principal:

  1. En exp2_6.c, cuando se describe a = b, fabs no se escribe antes de la declaración, lo que da como resultado solo el primer caso.
  2. Siempre olvide tomar la dirección de la variable en la declaración de entrada
  3. En Exp3_6.c, al escribir un triángulo, la salida es un triángulo equilátero.
    Solución:
  4. Después de revisar los consejos del libro, se encontró y resolvió el problema.
  5. Como estoy familiarizado con este tipo de error, encuentro y soluciono el problema rápidamente.
  6. Después de revisar los consejos del libro y pensar profundamente, se corrigió el problema.

(2) Experiencia experimental

Para escribir código, aún tiene que agregar más ejercicios de máquina para encontrar y corregir problemas a tiempo, evitar pequeños problemas, preguntar más, buscar más y pensar más. ¡No seas impetuoso!

(3) Comentarios y sugerencias (no se puede omitir nada)

En quinto lugar, respalde el punto de índice de requisitos de graduación
1.2-H, conozca los conocimientos básicos de ingeniería relacionados con el software y el hardware de computadora y sea capaz de utilizarlo para analizar problemas de ingeniería relacionados en los campos de la computadora y las aplicaciones.
3.1-M Dominar el conocimiento profesional y las herramientas de desarrollo necesarias para diseñar / desarrollar soluciones de problemas de ingeniería complejos.

Supongo que te gusta

Origin blog.csdn.net/qq_46392282/article/details/109347347
Recomendado
Clasificación