实验三

Posted kzt1121

tags:

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

Part1.验证性内容

a.在键盘上输入三个数,判断能够成何种三角形。

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

技术图片

技术图片

技术图片

技术图片

使用while语句

#include <stdio.h>
int main(){
double a,b ,c;
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;
}

技术图片

使用scanf()函数输入一个百分制成绩,要求输出成绩等级为A,B,C,D,E。

#include <stdio.h>
int main(){
    int score;
    char grade;
    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;
}

技术图片

用switch语句改写上述程序

#include <stdio.h>
int main(){
    int score;
    char grade;
    while(1){
        printf("输入学生成绩:");
        if(scanf("%d",&score)==0)
        break;
        if(score<0 || score>100){
            printf("输入成绩有误!

");
            continue;
        }
    switch(score/10){
        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;
}

技术图片

对比continue和break的功能

include <stdio.h>
int main(){
    int i ;
    for(i=1;i<=5;i++){
        if (i%3==0)
        continue;
        printf("i=%d
",i);
        
    }
    return 0;
}

技术图片

#include <stdio.h>
int main(){
    int i ;
    for(i=1;i<=5;i++){
        if (i%3==0)
        break;
        printf("i=%d
",i);
        
    }
    return 0;
}

技术图片

思考:在循环中使用控制语句和continue和break,其功能区别是什么?

使用continue会跳过本层循环,并开始下一轮循环;而break语句则直接跳出循环。

 

 

对比和理解在嵌套的循环中控制语句continue和break 的功能。

#include<stdio.h>
const int LINE=3;
const int COLUME=5;
int main(){
    int line;
    int col;
    for(line=1;line<=LINE;line++){
        for(col=1;col<=COLUME;col++){
            if(col%3 == 0)
            continue;
            printf("%5d",col);
        }
        printf("
");
    }
    return 0;
}

技术图片

#include<stdio.h>
const int LINE=3;
const int COLUME=5;
int main(){
    int line;
    int col;
    for(line=1;line<=LINE;line++){
        for(col=1;col<=COLUME;col++){
            if(col%3 == 0)
            break;
            printf("%5d",col);
        }
        printf("
");
    }
    return 0;
}

技术图片

思考

1.在两层嵌套循环中,内层循环中如果出现continue,是否影响外层循环?

不影响

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

不影响

Part 2.补足程序,使得程序运行

编程中找出五个整数中的最大数和最小数,并输出找出的最大数和最小数

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

技术图片

Part 3.

编程输出101~200之间的所有素数,并输出这一区间内的素数个数。

#include<stdio.h>
#include <math.h>
int isprime(int n)

{    //返回1表示判断为质数,0为非质数,在此没有进行输入异常检测

    float n_sqrt;

    if(n==2 || n==3) return 1;

    if(n%6!=1 && n%6!=5) return 0;

    n_sqrt=floor(sqrt((float)n));

    for(int i=5;i<=n_sqrt;i+=6)

    {

        if(n%(i)==0 | n%(i+2)==0) return 0;

    }

        return 1;

}

int main()
{
    int num=0;
    int t=0;
    int i; 
    for( i=101 ; i<=200 ; ++i )
    {
        if(isprime(i))
        {
            num++;
            printf("%2d  ",i);
            t++;
            if(t==4)
            {
                printf("
");
                t=0;
            }
        }
    }
    return 0;
 } 

技术图片

编程打印出如下图形

#include<stdio.h>          /*输入输出头文件*/
int main()          /*空类型:主函数*/
{
    int a,b;          /*定义变量的数据类型为整型*/
    for(a=0;a<=4;a++)         /*确定行数*/
    {
        for(b=4-a;b>=0;b--)         /*确定空格数量*/
            printf(" ");
        for(b=1;b<=a*2+1;b++)         /*确定每一行星号数量*/
            printf("*");
        printf("
");         /*换行*/
    }
    return 0;
    
}

技术图片

 

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

汇编实验五

实验四

验证码逆向专栏极验三代四代点选类验证码逆向分析

C++项目三代码参考(改进版)

实验五

JSP 设计教师与学生不同登陆界面(带验证码)