实验3 循环语句

浪尽此生 提交于 2020-03-08 18:26:01
实验结论
  • Part2: 补足程序,使程序符合题目要求并正确运行
  1. 编程找出5个整数中的最大数和最小数,并输出找出的最大数和最小数。
完整代码如下:
#include <stdio.h>
#include <stdlib.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(number>max)
            max = number;
        else if(number<min)
            min = number;
    }
    
    printf("最大数为: %d\n", max);
    printf("最小数为: %d\n", min);
    
    system("pause");
    
    return 0;
} 

运行结果如下:

  • Part3: 编程练习
  1. 编程输出101-200之间所有素数,并输出这一区间内素数个数。
完整代码如下:
//编程输出101-200之间所有素数,并输出这一区间内素数个数。
#include <stdio.h>
#include <math.h>
int isprime(int n);
int main(){
    int n,a=0,b; 
    for(n=101;n<200;n++){
        if (isprime(n)){
            printf ("%d ",n);
            a=a+1;
            b=b+1;
            if(b%5==0)          //一行5个 
            printf("\n");
        }
    }
    printf("\n101-200之间共有%d个素数",a);
    return 0;
}
int isprime (int n){
    int k;
    for(k=2;k<=sqrt(n);k++)
        if(n%k==0)
            return 0;
        return 1;
}

运行结果如下:

      2.将一个长整型数s的每一数位上的奇数依次取出来,构成一个新的数,起高位仍在高位,低位仍在低位,例如,s=20199102时,t中的值为1991。

完整代码如下:
#include<stdio.h> 
int main(){
    int a,b,c,t=0,p=1;
    printf("请输入一个整数:");
    scanf("%d",&a);
    for(b=10;a>0;a=a/10){       //取出各个数 
        c=a%b;
        if(c%2){               //判断是否奇数 
          t=t+c*p;             //正序 
          p=p*10;
        }     
    }
    printf("%d",t);
    return 0;
}

运行结果如下:

 

拓展(*选做*):参考「Part1: 验证性内容」中的一元二次方程求解练习,修改上述程序,使得它可以实现多组判断,直到用户按下Ctrl+D或Ctrl+E结束。
#include<stdio.h> 
#include <stdlib.h>
int main(){
    int a,b,c,t=0,p=1;
    
    printf("请输入一个整数:\n");
    while(scanf("%d",&a)){
        t=0;
        p=1;
      for(b=10;a>0;a=a/10){       //取出各个数 
        c=a%b;
        if(c%2){               //判断是否奇数 
          t=t+c*p;             //正序 
          p=p*10;
        }     
      }
      printf("%d\n",t);
     printf("请输入一个整数:\n");
    }
    system("pause");
    return 0;
}

运行结果如下:

 

         3.编写程序,实现从键盘上输入n和a,根据公式s=1/a+2/aa+3/aaa+…+n/(a..a)计算s的值,并输出。

完整代码如下
//编写程序,实现从键盘上输入n和a,根据公式s=1/a+2/aa+3/aaa+…+n/(a..a)计算s的值,并输出。
#include <stdio.h> 
int main (){
    double a,s,t,m=0;
    int b,n;
    printf("输入n和a:");
    scanf("%d%lf",&n,&a);
    for(b=1,s=0;b<=n;b=b+1){
        m=a+m*10;                 //分母 
        t=b/m;                    //每项值 
        s=s+t;                    //和 
    }
    printf("s的值为%lf\n",s); 
    return 0;
}

 运行结果如下:

 

拓展(*选做*):参考「Part1: 验证性内容」中的一元二次方程求解练习,修改上述程序,使得它可以实现多组判断,直到用户按下Ctrl+D或Ctrl+E结束。
完整代码如下:
//编写程序,实现从键盘上输入n和a,根据公式s=1/a+2/aa+3/aaa+…+n/(a..a)计算s的值,并输出。
#include <stdio.h> 
int main (){
    double a,s,t,m=0;
    int b,n;    
    printf("输入n和a:");
    while(scanf("%d%lf",&n,&a)!=EOF){
        m=0; 
        for(b=1,s=0;b<=n;b=b+1){
          m=a+m*10;                 //分母 
             t=b/m;                    //每项值 
          s=s+t;                    //和 
        }
        printf("s的值为%lf\n",s); 
        printf("输入n和a:");
    } 
    return 0;
}

运行结果如下:

 

实验总结与体会
1、感觉比上次好多了(或许是题不太复杂脑子还够用QAQ),求和那个以为分母是a*a..的那种形式(我也太蠢了叭啊啊啊啊)。
2、感觉用了函数会使代码干净不少(毕竟main里的东西少了啊),but!写函数还不是很熟练诶...
3、上次某位小可爱说的花括号的形式这次有在注意诶!(憨憨笑)
4、上周被高数榨干了,C语言实验课都没咋预习,代码也没有敲几个玩玩(反思ing..),咸鱼翻身计划又双叒叕被搁置(喂!醒醒!)
5、还是很想试试用已经学过的知识写一些有趣的代码的(老师课上给些推荐呗~~)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!