第三次实验

Posted bnuikl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次实验相关的知识,希望对你有一定的参考价值。

part1

/*
《C语言程序设计教程学习指导》p122 实验内容(1):判断三角形类型:一般三角形、等腰三角形、等边三角形 
 这是一个使用多分支if语句编程解决非数值类问题示例 
 运行程序,输入不同边长数据进行测试,观察输出结果是否正确,理解和巩固if语句功能和用法
*/ 
 #include <stdio.h>
 int main() {
 	double a,b,c;
 	scanf("%lf %lf %lf", &a, &b, &c);
 	
 	if(a+b>c && a+c>b && b+c>a) {
 		if(a==b && a==c)   
 			printf("构成等边三角形
");
 		else if(a==b || a==c || b==c)   
 			printf("构成等腰三角形
");    
 		else
 			printf("构成一般三角形
");
	 }
	 else
	 	printf("不能构成三角形
");
	 	
 	return 0;
 } 

 技术图片

技术图片

 

技术图片

/*
demo1_1.cpp: 《C语言程序设计教程学习指导》p122 实验内容(1) 
 这是一个使用多分支if语句编程解决非数值类问题示例
 运行程序,输入不同边长数据进行测试,观察输出结果是否正确,理解和巩固if语句功能和用法
 */ 
 #include <stdio.h>
 int main() {
 	double a,b,c;
 	scanf("%lf %lf %lf", &a, &b, &c);
 	
 	if(a+b>c && a+c>b && b+c>a) {
		 if(a==b || a==c || b==c) {
		 	if (a==b && a==c)
		 		printf("构成等边三角形
");
		 	else
		 		printf("构成等腰三角形
");
		 }
		 else
		 	printf("构成一般三角形
");
	 }
	 else
	 	printf("不能构成三角形
");
	 	
 	return 0;
 } 

 技术图片

技术图片

技术图片

 

 

/*
这是在demo1.cpp的基础上行,增加了一小部分代码,可以循环判断多组数据
要终止输入和判断:按组合键Ctrl+D(同时按下Ctrl和D键),然后按回车键结束 
*/ 
 #include <stdio.h>
 int main() {
 	double a,b,c;
 	printf("输入三角形三边:
");
 	
 	while(scanf("%lf%lf%lf",&a,&b,&c)) {
 		if(a+b>c && a+c>b && b+c>a) {
 			if(a==b && a==c)   
 				printf("构成等边三角形
");
 			else if(a==b || a==c || b==c)   
 				printf("构成等腰三角形
");    
 			else
 				printf("构成一般三角形
");
		 }
		 else
	 		printf("不能构成三角形
");
	 		
	 	printf("
输入三角形三边:
");
	}	
	
 	return 0;
 } 

 技术图片

/*
《C语言程序设计教程学习指导》p122 实验内容(2):输入百分制分数,测算并输出等级制分数
 这是一个综合使用while语句、多分支if语句和continue、break实现分数段判断的示例  
 运行程序,输入不同分数值进行测试,理解和巩固这些控制语句的用法 
 按下组合键Ctrl+D(同时按下Ctrl和D)结束判断 
*/ 
 
 #include <stdio.h>
 int main() {
     int score;     // 用于存放百分制分数 
     char grade;  // 用于存放等级制分数(取值‘A‘, ‘B‘,‘C‘,‘D‘, ‘E‘) 
    
    while(1) {
        printf("输入学生成绩: ");
        if(scanf("%d",&score) == 0)  // 如果检测到没有成绩输入,则结束整个循环 
            break; 
            
        if(score<0 || score > 100) {
            printf("输入成绩有误!

");
            continue;    // 结束本次循环,开始下一次循环 
        }
        else if(score>=90 && score<=100)
            grade = A;
        else if(score>=80 && score<=89)
            grade = B;
        else if(score>=70 && score<=79)
            grade = C;
        else if(score>=60 && score <=69)
            grade = D;
        else
            grade = E;
            
        printf("等级为: %c

", grade);
    }
    
     return 0;
 } 

技术图片

/*
相较于demo3.cpp,这个代码实现中,分数从百分制转换为等级制的部分,使用switch语句实现 
 按下组合键Ctrl+D(同时按下Ctrl和D),然后按回车键,结束判断 
*/ 
 
 #include <stdio.h>
 int main() {
 	int score; 	// 用于存放百分制分数 
 	char grade;  // 用于存放等级制分数(取值‘A‘, ‘B‘,‘C‘,‘D‘, ‘E‘) 
	
	while(1) {
		printf("输入学生成绩: ");
		if(scanf("%d",&score) == 0)  // 如果检测到没有成绩输入,则结束整个循环 
			break; 
			
		if(score<0 || score > 100) {
			printf("输入成绩有误!

");
			continue;    // 结束本次循环,开始下一次循环 
		}
	
		switch(score/10) {   // 使用switch进行分数等级判断 
			case 10:
			case 9:		grade=‘A‘; break;
			case 8:		grade=‘B‘; break;
			case 7:		grade=‘C‘; break;
			case 6:		grade=‘D‘; break;
			default:	grade=‘E‘;
		}
		
		printf("等级为: %c

", grade);
	}
	return 0;			
}
	

 技术图片

// 对比demo5_1.cpp和demo5_2.cpp,理解控制语句continue和break的功能 
#include <stdio.h>
int main() {
	int i;
	
	// 在循环语句中使用continue 
	for(i=1; i<=5; i++) {
		if (i%3 == 0)  // 如果i是3的倍数,则结束本次循环,开始下一次循环 
			continue;
		
		printf("i=%d
",i);
	}
	
	return 0;
} 

 技术图片

// 对比demo5_1.cpp和demo5_2.cpp,理解控制语句continue和break的功能 
#include <stdio.h>
int main() {
	int i;
	
	// 在循环语句中使用break
	for(i=1; i<=5; i++) {
		if (i%3 == 0)  // 如果i是3的倍数,则结束整个循环 
			break;
		
		printf("i=%d
",i);
	}
	
	return 0;
} 

 技术图片

// 对比demo6_1.cpp和demo6_2.cpp,理解在嵌套的循环中,控制语句continue和break的功能

#include <stdio.h>
const int LINE=3;		// 定义符号常量LINE 
const int COLUME=5;		// 定义符号常量COLUME

int main() {
	int line;	// 定义变量line, 用来控制行数 
	int col; 	// 定义变量col, 用来控制列数
	
	// 输出LINE行信息 
	for(line=1; line<=LINE; line++) {
		// 每一行中,利用循环,输出各列信息 
		for(col=1; col<=COLUME; col++) {
			if(col%3 == 0)  // 如果col是3的倍数,则结束本次循环,开始下一次循环 
				continue;
			
			printf("%5d", col);	
		}
		
		printf("
"); // 每输出完一行,换行 
	}
	 
	return 0;
} 

 技术图片

// 对比demo6_1.cpp和demo6_2.cpp,理解在嵌套的循环中,控制语句continue和break的功能

#include <stdio.h>
const int LINE=3;		// 定义符号常量LINE 
const int COLUME=5;		// 定义符号常量COLUME

int main() {
	int line;	// 定义变量line, 用来控制行数 
	int col; 	// 定义变量col, 用来控制列数
	
	// 输出LINE行信息 
	for(line=1; line<=LINE; line++) {
		// 每一行中,利用循环,输出各列信息 
		for(col=1; col<=COLUME; col++) {
			if(col%3 == 0)  // 如果col是3的倍数,则结束内层循环体 
				break;
			
			printf("%5d", col);
		}
		
		printf("
"); // 每输出完一行,换行 
	}
	 
	return 0;
} 

 技术图片

part2

/* 
编程找出5个整数的最大数和最小数 
《C语言程序设计教程学习指导》p122实验内容(3) 
*/ 

#include <stdio.h>
int main() {
    int number, max, min, n;
    
    n=1;
    printf("输入第%d个数: ", n);
    scanf("%d", &number);
    
    max = number;
    min = number;
    
    while(n>=1 && n<5) {
        n++;
        printf("输入第%d个数: ", n);
        scanf("%d", &number);
        
        if(number>max)
            max = number;
        else if(number<min)
            min = number;
    }
    
    printf("最大数为: %d
", max);
    printf("最小数为: %d
", min);
    
    return 0;
} 
 

技术图片

do while 形式

/* 
编程找出5个整数的最大数和最小数  
*/ 

#include <stdio.h>
int main() {
    int number, max, min, n;
    
    n=1;
    printf("输入第%d个数: ", n);
    scanf("%d", &number);
    
    max = number;
    min = number;
    
    do {
        n++;
        printf("输入第%d个数: ", n);
        scanf("%d", &number);
        
        if(number>max)
            max = number;
        else if(number<min)
            min = number;
    }while(n>1 && n<5); 
    
    printf("最大数为: %d
", max);
    printf("最小数为: %d
", min);
    
    return 0;
} 
 

技术图片

for语句出了点问题,希望有人帮忙解决一下

/* 
编程找出5个整数的最大数和最小数  
*/ 

#include <stdio.h>
int main() {
	int number, max, min, n;
	
	n=1;
	printf("输入第%d个数: ", n);
	scanf("%d", &number);
	
	max = number;
	min = number;
	for (;n++;n<5)
	 {
		printf("输入第%d个数: ", n);
		scanf("%d", &number);
		
		if(number>max)
		{
		
			max = number;
		}
		else if(number<min)
			min = number;
		
	}
	
	printf("最大数为: %d
", max);
	printf("最小数为: %d
", min);
	
	return 0;
} 
 

 技术图片

上面的问题我已经解决了

/* 
编程找出5个整数的最大数和最小数  
*/ 

#include <stdio.h>
int main() {
	int number, max, min, n;
	
	n=1;
	printf("输入第%d个数: ", n);
	scanf("%d", &number);
	
	max = number;
	min = number;
	for (n=2;n>=1 && n<=5;n++)
	 {
		printf("输入第%d个数: ", n);
		scanf("%d", &number);
		if(number>max)
			max = number;
		else if(number<min)
			min = number;
	}
	printf("最大数为: %d
", max);
	printf("最小数为: %d
", min);
	return 0;
} 
 

 技术图片

part3

/*编程输出101~200之间所有素数,并输出这一区间内素数个数。*/
#include <stdio.h>
int main() {
    int m,n;
    int count=0;
    for(m=101; m<=200; m++)
    {
        for(n=2; n<m; n++)
        {
            if(m%n==0)
            break;
        }
        if(n>=m)
        {
            count++;
            printf("%d ",m);
            if(count%5==0)
            printf("
"); 
        }
    }
    printf("101~200之间共有%d个素数",count); 
    return 0;
} 

 技术图片

#include<stdio.h>
int main()
{ 
	int a,b,n;
	for(n=1;n<5;n++){
		for(a=1;a<=6-n;a++)
		printf(" ");
	    for(b=1;b<=2*n-1;b++)
		printf("*");
		printf("
");	
	}
	return 0;
}

 技术图片

实验结论

1结合程序demo5_1.cpp和demo5_2.cpp运行结果对比,总结在循环中使用控制语句continue和break,
其功能区别是什么?

continue表示结束本次循环,进行下一次循环。

break表示结束这个循环体。
2结合程序demo6_1.cpp和demo6_2.cpp运行结果对比,回答:
在两层嵌套循环中,内层循环中如果出现continue,是否影响外层循环?

不影响。
在两层嵌套循环中,内层循环中如果出现break,是否影响外层循环?

影响。

 

实验总结与体会

此次试验,收获比较大的是学会了for语句,但是有时还会弄错循环次数。

我觉得我还要在算法方面加强训练,变量之间的联系有时稀里糊涂的,。语句还是掌握的不熟。

 

 

互评

https://www.cnblogs.com/rosalyn/p/10686929.html

 https://www.cnblogs.com/zys-0119/p/10686828.html

 https://www.cnblogs.com/radius1/p/10693079.html

以上是关于第三次实验的主要内容,如果未能解决你的问题,请参考以下文章

第三次实验总结

第三次实验报告

数据结构荣誉课--第三次实验解题报告

数据结构荣誉课--第三次实验解题报告

数据结构荣誉课--第三次实验解题报告

数据结构荣誉课--第三次实验解题报告