精华内容
下载资源
问答
  • C语言循环经典例题

    千次阅读 2020-07-26 17:14:53
    } C语言经典例题 前50个素数 for循环 #include int main() { int x; int cnt = 0; for ( x=2; cnt; x++) { int i; int isprime = 1; for ( i=2; i;i++) { if ( x % i ==0){ isprime = 0; break; } } if ( isprime =...

    判断一个数是否为素数

    #include <stdio.h>
    int main()
    {
        int x;
    
        scanf("%d", &x);
        int i;
        int isprime = 1; //x是素数
        for ( i=2; i<x; i++) {
            if ( x % i == 0) {
                isprime = 0;
                break;
            }
        }
        if ( isprime==1) {
            printf("是素数\n");
        } else {
        printf("不是素数\n");
        }
        return 0;
    }
    
    

    嵌套循环

    100以内的素数

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

    C语言经典例题 前50个素数

    for循环

    #include <stdio.h>
    int main()
    {
        int x;
        int cnt = 0;
    
        for ( x=2; cnt<50; x++) {
            int i;
            int isprime = 1;
            for ( i=2; i<x;i++) {
                if ( x % i ==0){
                    isprime = 0;
                    break;
                }
            }
            if ( isprime ==1) {
               cnt++;
               printf("%d\t", x);//制表对齐
               if ( cnt %5==0) {
                printf("\n");
               }
            }
    
        }
        return 0;
    }
    
    

    while循环

    #include <stdio.h>
    int main()
    {
      int x;
      int cnt =0;
      x = 1;
      while ( cnt < 50) {
          int i;
          int isprime = 1;
          for ( i =2; i<x; i++) {
              if ( x % i == 0) {
                  isprime = 0;
                  break;
              }
          }
          if ( isprime == 1) {
              cnt ++;
              printf(" %d\t", x);
              if ( cnt %5 == 0) {
                  printf("\n");
              }
          }
          x++;
      }
      return 0;
    }
    
    

    凑硬币

    全部方案

    #include <stdio.h>
    int main()
    {
        int x;//元
        int one, two, five;
        scanf("%d", &x);
        for ( one = 1; one < x*10; one++) {
            for ( two = 1; two < x*10/2 ;two++){
                for ( five =1; five < x*10/5 ;five++) {
                    if ( one + two*2 + five*5 == x*10) {
                        printf(" 可以用%d个1角加%d个2角加%d个5角得到%d元\n", one,two, five,x);
                        
                    }
                }
            }
        }
    
        return 0;
    }
    
    

    单个方案(接力break)

    #include <stdio.h>
    int main()
    {
        int x;
        int one, two, five;
        int exit =0;
        scanf("%d", &x);
        for ( one = 1; one < x*10 ; one++) {
            for ( two =1; two < x*10/2 ; two++) {
                for ( five = 1; five < x*10/5; five++) {
                    if ( one + two *2 + five*5==x*10) {
                        printf("可以用%d个一角加%d个2角加%d个五角得到%d元\n", one, two,five,x);
                        exit = 1;
                        break;
                    }
                }
                if ( exit ) break;
            }
            if ( exit ) break;
        }
        return 0;
    }
    

    beerak与continue都是只能跳出当前循环

    goto用法

    #include <stdio.h>
    int main()
    {
        int x;
        int one, two, five;
        scanf("%d", &x);
        for ( one = 1; one < x*10; one++) {
            for ( two = 1; two < x*10/2; two++) {
                for ( five = 1; five < x*10/5; five++) {
                    if ( one + two*2 + five*5 == x*10) {
                        printf("可以用%d个一角加%d个2角加%d个五角得到%d元\n", one, two, five, x);
                        goto out;
                    }
                }
            }
        }
        out:
        return 0;
    }
    
    

    前n项和

    题目:image-20200726171626595

    #include <stdio.h>
    int main()
    {
        int n;
        int i;
        double sum = 0.0;
    
        scanf("%d", &n);
        for ( i = 1; i<=n; i++) {
            sum += 1.0/i;
        }
        printf("f(%d)= %f\n", n,sum);
        return 0;
    }
    
    

    image-20200724112711495

    #include <stdio.h>
    int main()
    {
        int n;
        int i;
        double sum = 0.0;
        int sign = 1;
    
        scanf("%d", &n);
        for ( i = 1; i<=n; i++) {
            sum += 1.0/i;
            sign = -sign;
        }
        printf("f(%d)= %f\n", n,sum);
        return 0;
    }
    
    
    #include <stdio.h>
    int main()
    {
        int n;
        int i;
        double sum = 0.0;
        //int sign = 1;
        double sign =1.0;
        scanf("%d", &n);
        for ( i = 1; i<=n; i++) {
            sum += sign/i;
            sign = -sign;
        }
        printf("f(%d)= %f\n", n,sum);
        return 0;
    }
    
    

    整数的正序分解

    //无零整数
    #include <stdio.h>
    int main()
    {
        int x;
    
        scanf("%d", &x);
        int t= 0;
        do {
            int d = x%10;
            t = t*10+d;
            x /=10;
        } while (x>0);
        printf(" x=%d, t=%d\n", x, t);
        x = t;
        do {
            int d= x % 10;
            printf("%d", d);
            if ( x>10) {
                printf(" ");
            }
            x /=10;
        } while ( x>0);
        printf("\n");
        return 0;
    
    }
    
    

    全部整数思维过程

    x =13425

    13425 / 10000 = 1

    13425 % 10000 = 3425

    10000 / 10 = 1000

    3425 /1000 =3

    3425 % 1000 = 425

    1000 /10 = 100

    425 /100 = 25

    425 % 100 = 25

    100 /10 = 10

    25 / 10 = 5

    25 % 10 = 5

    10 /10 = 1

    5 / 1 =1

    5 % 1 = 5

    1 / 10 = 0

    70000/10000=7

    70000%10000=0

    #include <stdio.h>
    int main()
    {
      int x;
    
      scanf("%d", &x);
      int mask =1;
      int t = x;
      while ( t>9) {
          t /=10;
          mask *= 10;
      }
      //int mask = 10000;
      do {
          int d = x / mask;
          printf("%d", d);
          if ( mask>9 ) {
              printf(" ");
          }
          x %= mask; //x对mask取余
          mask /= 10;
          printf(" x=%d, mask=%d, d=%d\n", x, mask, d);
      } while ( mask > 0);
    
      printf("\n");
      return 0;
    
    }
    
    

    最大公约数

    枚举法

    # include <stdio.h>
    int main()
    {
        int a,b;
        int min;
    
        scanf("%d %d", &a,&b);
        if ( a>b) {
            min = a;
        } else {
            min = b;
        }
        int ret = 0;
        int i;
        for ( i=1; i<min;i++) {
            if ( a%i==0) {
                if ( b%i==0) {
                    ret = i;
                }
            }
        }
        printf("%d和%d的最大公约数是%d.\n", a,b,ret);
        return 0;
    }
    
    

    辗转相除法

    image-20200726164956482

    #include <stdio.h>
    int main()
    {
        int a,b,t;
        scanf("%d %d", &a,&b);
        while ( b != 0) {
            t = a%b;
            a=b;
            b=t;
            printf("a=%d,b=%d,t=%d\n", a, b, t);
        }
        printf("gcd=%d\n", a);
        return 0;
    }
    
    
    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼循环结构例题讲解以及各种图形(三角形及菱形等)输出案例:1、 输入一周七天的温度,然后求出该周平均温度并打印double sum = 0.0;double temperature = 0.0;for (int i =...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    循环结构例题讲解以及各种图形(三角形及菱形等)输出案例:

    1、 输入一周七天的温度,然后求出该周平均温度并打印

    double sum = 0.0;

    double temperature = 0.0;

    for (int i = 1; i <= 7; i ++) {

    printf("请输入第%d天温度:",i);

    scanf("%lf", & temperature);

    sum += temperature;

    }

    printf("平均温度为:%lf",sum/7);

    2、给定一个数学表达式,然后求出其结果。数学表达式如下所示:

    0 – 1 + 2 – 3 + 4 – 5 + 6 …… - 99 + 100

    解法1: 偶数和 - 奇数和

    这里省略

    解法2:偶数相加,奇数相减

    int result = 0;

    for (int i = 0; i <= 100; i ++) {

    if (i % 2 == 0) {//偶数

    result += i;

    } else {//奇数

    result -= i;

    }

    }

    printf("result = %d\n",result);

    解法3:按符号位进行加减

    int sign = 1;//保存符号位 1 或则 -1

    int sum = 0;//保存结果

    for (int i = 0; i <= 100; i ++) {

    sum += i * sign;

    sign = - sign;

    }

    printf("sum = %d",sum);

    3、打印出0--10之间偶数,以及这些偶数的平方及立方值

    for (int i = 0; i <= 10; i ++) {

    if (i % 2 == 0) {

    printf("%d %d\n", i * i, i * i * i);

    }

    }

    4、输出n个连续的偶数,n为输入的值,如 n = 3,输出 0 2 4

    int n = 0;

    printf("请输入n的值:");

    scanf("%d", &n);

    //判定n是否为正数

    if (n > 0) {

    解法1:按照分支判断,只输出偶数,奇数不输出

    for (int i = 0; i < 2 * n - 1; i ++) {

    if (i % 2 == 0) {//判断输出输出偶数

    printf("%d ",i);

    }

    }

    解法2:按照自然数乘以2均为偶数的方式

    for (int i = 0; i < n; i ++) {

    printf("%d ", 2 * i);

    }

    解法3:按照偶数+2均为偶数的方式

    for (int i = 0; i < 2 * n; i += 2) {

    printf("%d ", i);

    }

    } else {

    printf("error");

    }

    5、输入两个正整数,求得两个数之间所有整数的和,例如,n1 = 3, n2 = 10;结果sum = 3 + 4 + 5 + 6…+ 10 = 52;

    int start = 0, end = 0, sum = 0;

    printf("请输入开始和结尾数字,中间用空格隔开:");

    scanf("%d %d", &start, &end);

    for (int i = start; i <= end; i ++) {

    sum += i;

    }

    printf("sum = %d", sum);

    6、依次输入几个数据,直到0作为输入的结束,然后求出输入的这些数据的总和及平均值(结束循环,使用break)

    解法1:

    int number = 0;//接收输入的数

    double sum = 0.0;

    int count = 0;//记录个数

    while (1) {

    printf("请输入:");

    scanf("%d", &number);

    //判断

    if (number == 0) {

    break; //跳出

    }

    count ++;//次数累加

    sum += number;//和

    }

    //解法2:

    do {

    printf("请输入:");

    scanf("%d", &number);

    count ++;

    sum += number;

    } while (number != 0);

    count --;

    printf("sum = %lf,平均值:%lf,count = %d",sum, sum/count, count);

    7、使用do…while循环实现银行登录示例

    /*

    * 设定输入的固定密码;

    * 提示用户输入密码;

    * 如果用户输入错误,提示请重新输入,三次均错误,提示用户,“输入失败”;

    * 如果用户输入正确,提示“登录成功”

    */

    int password = 123456;

    int pw = 0;

    int count = 1;

    do {

    printf("请输入密码:");

    scanf("%d", &pw);

    if (pw == password) {

    printf("登陆成功\n");

    break;

    } else {

    printf("输入错误,请重新输入\n");

    }

    count ++;

    } while (count <= 3);

    if (count > 3) {

    printf("输入失败");

    }

    8、Chuckie Lucky赢了100W美元,他把它存入一个每年盈利8%的账户。在每年的最后一天,Chuckie取出10W美元。编写一个程序,计算需要多少年Chuckie就会清空他的账户。(不考虑一天的盈利情况)

    double sum = 100;

    int count = 0;

    while (1) {

    if (sum < 0) {

    break;

    }

    sum += sum * 0.08;

    sum -= 10;

    count ++;

    printf("count = %d ,剩余 %.2f\n",count, sum);

    }

    9、 任何一个自然数m的立方均可写成m个连续奇数之和。例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 编程实现:输入一自然数n,求组成n的3次方的n个连续奇数。

    int n = 2;

    for (int i = n * (n - 1) ; i <= n * (n + 1) ; i ++) {

    if (i % 2 != 0) {

    printf("%d ", i);

    }

    }

    10、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

    double height = 100;

    double sum = 100;

    for (int i = 2; i < 11; i ++) {

    height /= 2;

    sum += 2 * height;

    printf("第%d次反弹高度为:%lf,落地时经过距离为:%lf\n",i - 1, height, sum);

    }

    printf("第10次反弹高度为:%lf",height / 2);

    11、打印输出9*9乘法表

    for (int i = 1; i < 10; i ++) {

    for (int j = 1; j <= i; j ++) {

    printf("%d * %d = %2d ",i, j, i * j);

    }

    printf("\n");

    }

    12、编写程序,求e的值,e≈1+1/1!+1/2!+1/3!+1/4!+…

    (1)用for循环,计算前50項。

    (2)用while循环,要求直至最后一项的值小于10的-6次方。

    第(1)小问:

    double number = 1;

    double sum = 1;

    for (int i = 2; i < 50; i ++) {

    //分子 1

    //分母

    double denominator = 1;

    for (int j = 1; j < i ; j ++) {

    denominator *= j;

    }

    sum += number / denominator;

    }

    printf("%lf", sum);

    第(2)小问

    double denominator = 1;//分母

    double sum = 1;//和

    int n = 1;//记录当前阶乘数据

    while (1/denominator > 10e-6) {

    sum += 1/denominator;

    denominator *= n;

    n ++;

    }

    printf("sum = %lf", sum);

    13、水仙花数:水仙花数是指一个 n 位数 ( n 大于等于 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1的3次方 + 5的三次方 + 3三次方 = 153)。根据这个要求,打印所有三位数的水仙花数。

    解法1:

    for (int a = 1; a <= 9; a ++) {

    for (int b = 0; b <= 9; b ++) {

    for (int c = 0; c <= 9; c ++) {

    if (a * a * a + b * b * b + c * c * c == a * 100 + b * 10 + c) {

    printf("%d%d%d\n",a,b,c);

    }

    }

    }

    }

    解法2:

    for (int i = 100; i <= 999; i ++) {

    //分解

    int a = i / 100; //百位

    int b =( i / 10) % 10;//十位

    int c = i % 10;//个位

    if (a * a * a + b * b * b + c * c * c == a * 100 + b * 10 + c) {

    printf("%d%d%d\n",a,b,c);

    }

    }

    14、打印三角形,如下图

    *

    ***

    *****

    *******

    *****

    ***

    *

    7 - 2 * |i|

    解题方式:按照中间对称式,中间设为0,往上递增,往下递减,依次找出空格与*号的规律;

    for (int i = -3; i <= 3; i ++) {

    //空格

    int number = i > 0 ? i : (-1) * i;

    for (int j = number; j > 0; j --) {

    printf(" ");

    }

    //*号

    for (int k = 1; k <= 7 - 2 * number; k ++) {

    printf("*");

    }

    printf("\n");

    }

    15、编写出下面图形

    1

    2 3

    4 5 6

    7 8 9 0

    int n = 1;//标记数量

    for (int i = 0; i < 4; i ++) {

    //打印空格

    for (int j = 0; j < 3 - i; j ++) {

    printf(" ");

    }

    // * 号

    for (int k = 0; k < i + 1; k ++) {

    printf("%d ", n ++ % 10);

    }

    printf("\n");

    }

    16、打印出如下图形

    *****

    ****

    ***

    **

    *

    for (int i = 1; i <= 5; i ++) {

    //空格

    for (int j = 1; j < i ; j ++) {

    printf(" ");

    }

    //*号

    for (int k = 0; k <= 5 - i; k ++) {

    printf("*");

    }

    printf("\n");

    }

    17、

    1

    121

    12321

    1234321

    123454321

    for (int i = 1; i <= 5; i ++) {

    //空格

    for (int j = 0; j < 5 - i; j ++) {

    printf(" ");

    }

    //数字

    int n = -1;

    for (int k = 1; k < 2 * i; k ++) {

    if (k <= i) {

    printf("%d", k);

    n ++;

    } else {

    printf("%d", n);

    n --;

    }

    }

    printf("\n");

    }

    18、

    A

    ABA

    ABCBA

    ABCDCBA

    ABCDEDCBA

    for (int i = 1; i <= 5; i ++) {

    //空格

    for (int j = 0; j < 5 - i; j ++) {

    printf(" ");

    }

    //数字

    int n = -1;

    for (int k = 1; k < 2 * i; k ++) {

    if (k <= i) {

    printf("%c", k + 64);

    n ++;

    } else {

    printf("%c", n + 64);

    n --;

    }

    }

    printf("\n");

    }

    19、

    *******

    *****

    ***

    *

    ***

    *****

    *******

    for (int i = -3; i <= 3; i ++) {

    //空格

    int number = i > 0 ? i : (-1) * i;

    for (int j = 1; j <= 3 - number; j ++) {

    printf(" ");

    }

    //*号

    for (int k = 1; k <= 2 * number + 1; k ++) {

    printf("*");

    }

    printf("\n");

    }

    20、

    *

    * *

    * *

    * *

    * *

    * *

    *

    for (int i = -3; i <=3; i ++) {

    int n = i > 0 ? i : - i;

    for (int j = 0; j < n; j ++) {

    printf(" ");

    }

    for (int k = 0; k < 7 - n; k ++) {

    if (k == 0 || k == 6 - n - n) {

    printf("*");

    } else {

    printf(" ");

    }

    }

    printf("\n");

    }

    展开全文
  • C语言十大经典例题

    千次阅读 2019-04-25 17:09:42
    if(leap) /*内循环结束后,leap依然为1,则m是素数*/ {printf("%-4d",m);h++; if(h%10==0) printf(" "); } leap=1; } printf(" The total is %d",h); return 0; }     4、/...

    在大家阅读之前,可以加薇芯免费领取c++学习课程视频一份:chulan980

    1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/

    #include <stdio.h>

    int main()

    {    int i,j,result;

        for (i=1;i<10;i++)

    for(j=1;j<10;j++)

    {

    result=i*j;

    printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/

    }

    printf(" ");/*每一行后换行*/

    }

    return 0;

    }

     

    2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 

    兔子的规律为数列1,1,2,3,5,8,13,21....*/

    #include <stdio.h>

    int main()

    {

    long f1,f2;

    int i;

    f1=f2=1;

    for(i=1;i<=20;i++)

    { printf("%12ld %12ld",f1,f2);

    if(i%2==0) printf(" ");/*控制输出,每行四个*/

    f1=f1+f2; /*前两个月加起来赋值给第三个月*/

    f2=f1+f2; /*前两个月加起来赋值给第三个月*/

    }

    }

     

    3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 

    程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,

    则表明此数不是素数,反之是素数。*/

    #include <stdio.h>

    #include <math.h>

    int main()

    {

    int m,i,k,h=0,leap=1;

    printf(" ");

    for(m=101;m<=200;m++)

    { k=sqrt(m+1);

    for(i=2;i<=k;i++)

    if(m%i==0)

    {leap=0;break;}

    if(leap) /*内循环结束后,leap依然为1,则m是素数*/

    {printf("%-4d",m);h++;

    if(h%10==0)

    printf(" ");

    }

    leap=1;

    }

    printf(" The total is %d",h);

    return 0;

    }

     

     

    4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。

    例如6=1+2+3.编程找出1000以内的所有完数。*/

    #include <stdio.h>

    int main()

    {

    static int k[10];

    int i,j,n,s;

    for(j=2;j<1000;j++)

    {

    n=-1;

    s=j;

    for(i=1;i

    {if((j%i)==0)

    { n++;

    s=s-i;

    k[n]=i;

    }

    }

    if(s==0)

    {printf("%d is a wanshu: ",j);

    for(i=0;i

    printf("%d,",k[i]);

    printf("%d ",k[n]);

    }

    }

    return 0;

    }

     

    5、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出。

    请在空白处完善程序。*/

    #include <stdio.h>

    int main()

    { int a[4][4],b[4][4],i,j; /*a存放原始数组数据,b存放旋转后数组数据*/

    printf("input 16 numbers: ");

    /*输入一组数据存放到数组a中,然后旋转存放到b数组中*/

    for(i=0;i<4;i++)

    for(j=0;j<4;j++)

    { scanf("%d",&a[i][j]);

    b[3-j][i]=a[i][j];

    }

    printf("array b: ");

    for(i=0;i<4;i++)

    { for(j=0;j<4;j++)

    printf("%6d",b[i][j]);

    printf(" ");

    }

    return 0;

    }

     

    6、/*编程打印直角杨辉三角形*/

    #include <stdio.h>

    int main()

    {int i,j,a[6][6];

    for(i=0;i<=5;i++)

    {a[i][i]=1;a[i][0]=1;}

    for(i=2;i<=5;i++)

    for(j=1;j<=i-1;j++)

    a[i][j]=a[i-1][j]+a[i-1][j-1];

    for(i=0;i<=5;i++)

    {for(j=0;j<=i;j++)

    printf("%4d",a[i][j]);

    printf(" ");}

    return 0;

    }

     

     

     

    7、/*通过键盘输入3名学生4门课程的成绩,

    分别求每个学生的平均成绩和每门课程的平均成绩。

    要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车

    其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/

    #include <stdio.h>

    #include <math.h>

    int main()

    { float a[4][5],sum1,sum2;

    int i,j;

    for(i=0;i<3;i++)

    for(j=0;j<4;j++)

    scanf("%f",&a[i][j]);

    for(i=0;i<3;i++)

    { sum1=0;

    for(j=0;j<4;j++)

    sum1+=a[i][j];

    a[i][4]=sum1/4;

    }

    for(j=0;j<5;j++)

    { sum2=0;

    for(i=0;i<3;i++)

    sum2+=a[i][j];

    a[3][j]=sum2/3;

    }

    for(i=0;i<4;i++)

    { for(j=0;j<5;j++)

    printf("%6.2f",a[i][j]);

    printf(" ");

    }

    return 0;

    }

     

    8、/*完善程序,实现将输入的字符串反序输出,

    如输入windows 输出swodniw。*/

    #include <string.h>

    int main()

    { char c[200],c1;

    int i,j,k;

    printf("Enter a string: ");

    scanf("%s",c);

    k=strlen(c);

    for (i=0,j=k-1;i

    { c1=c[i];c[i]=c[j];c[j]=c1; }

    printf("%s ",c);

    return 0;

    }

     

    9、/*下面程序的功能是从字符数组s中删除存放在c中的字符。*/

    #include <stdio.h>

    int main()

    { char s[80],c;

    int j,k;

    printf(" Enter a string: ");

    gets(s);

    printf(" Enter a character: ");

    c=getchar( );

    for(j=k=0;s[j]!= '';j++)

    if(s[j]!=c)

    s[k++]=s[j];

    s[k]= '';

    printf(" %s",s);

    return 0;

    }

     

    10、/*编写一个void sort(int *x,int n)实现将x数组中的n个数据从大到小

    排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件p9_1.out中*/

    #include <stdio.h>

    void sort(int *x,int n)

    {

    int i,j,k,t;

    for(i=0;i

    {

    k=i;

    for(j=i+1;j

    if(x[j]>x[k]) k=j;

    if(k!=i)

    {

    t=x[i];

    x[i]=x[k];

    x[k]=t;

    }

    }

    }

    int main()

    {FILE *fp;

    int *p,i,a[10];

    fp=fopen("p9_1.out","w");

    p=a;

    printf("Input 10 numbers:");

    for(i=0;i<10;i++)

    scanf("%d",p++);

    p=a;

    sort(p,10);

    for(;p

    { printf("%d ",*p);

    fprintf(fp,"%d ",*p); }

    system("pause");

    fclose(fp);

    return 0;

    }

     

    *声明:内容与图片均来源于网络(部分内容有修改),版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

    展开全文
  • C语言实用经典例题100

    2010-11-28 20:40:11
    里面有一百多个程序编程题及参考程序,对循环.指针.数组.函数调用等都有很好的例子,可以举一反三...
  • [C语言]经典例题之一求最大值

    万次阅读 多人点赞 2018-09-26 23:18:05
      本文将介绍一个在c语言学习过程中非常简单且非常经典的问题,以及介绍大多数人在写这个代码时经常会跳进去的一个坑。 正文   求最大值基本每个人都会,所以简单叙述一下要点:创建一个数组以及创建一个变量max...

    简介

      本文将介绍一个在c语言学习过程中非常简单且非常经典的问题,以及介绍大多数人在写这个代码时经常会跳进去的一个坑。

    正文

      求最大值基本每个人都会,所以简单叙述一下要点:创建一个数组以及创建一个变量max,给变量max赋值然后跟数组中每个元素一 一进行判断,如果数组中的数比max大那么把这个数赋给max,以此类推;
      看起来非常简单,那么我们实现一下(代码如下):

    #include<stdio.h>
    int main()
    {
     int i = 0;
     int arr[10] = {0};
     int max = 0;//定义变量max用来作比较
     printf("请输入十个整数:\n");
     for(i=0; i<10; i++)
     {
      scanf("%d",&arr[i]);
     }
     for(i=0; i<10; i++)
     {
      if(max < arr[i])
       max = arr[i];
     }
     printf("最大值为%d\n",max);
     return 0;
    }
    

      这个代码看起来毫无问题,附上运行结果如下:
    在这里插入图片描述
    结果看起来没毛病,试一试负数:

    bug出来了,为什么会出现这种情况呢?
      代码看起来似乎无懈可击,但是运行结果却是错的,回过头看代码,为什么会给max赋值0呢?这样是不是就是默认比较变量最大值是0了,那么输入负数时就会出现毛病,所以应该给max赋一个数组中的值。修改后的代码如下:

    #include<stdio.h>
    int main()
    {
     int i = 0;
     int arr[10] = {0};
     int max = 0;
     printf("请输入十个整数:\n");
     for(i=0; i<10; i++)
     {
      scanf("%d",&arr[i]);
     }
     max = arr[0];
     for(i=1; i<10; i++)
     {
      if(max < arr[i])
       max = arr[i];
     }
     printf("最大值为%d\n",max);
     return 0;
    }
    

      这样就可以了,给max赋数组中第一个值,然后一 一与数组中的值进行比较(max可以赋予数组中任何一个值),这里还有一个优化,因为我们赋的值是第一个,那么循环就可以从数组中第二个元素开始,所以for循环i从1开始循环。结果如下:
    在这里插入图片描述
    这样就可以处理当输入的数据为负数的情况了。

    总结

      本文演示了求数组中最大值的问题,以及演示了很容易跳进的一个坑。


    ps: 有不当之处希望大家提出批评并指正。


    展开全文
  • C语言十大经典例题:附答案

    千次阅读 多人点赞 2018-11-20 23:59:49
    if(leap) /*内循环结束后,leap依然为1,则m是素数*/ {printf("%-4d",m);h++; if(h%10==0) printf(" "); } leap=1; } printf(" The total is %d",h); return 0; } 4、/*一个数如果恰好等于它的因子之和,这个数就...
  • c语言经典例题

    2013-03-20 17:34:25
    C语言经典例题,内有一些设计算法思想的,譬如:山上有m只猴子要选大王,选举办法如下:所有猴子从1到m进行编号并围坐一圈,从第一号开始按顺序1,2,...n继续报数,凡是报n号的猴子都退出到圈外,照此循环报数,直到圈内只...
  • 这是大学C程序必做的题C语言编程经典100例【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组1.1.程序分析:可填...
  • C语言经典例题和答案》由会员分享,可在线阅读,更多相关《C语言经典例题和答案(18页珍藏版)》请在人人文库网上搜索。1、作业一一、 求一个任意边长的矩形面积。#include void main()int w,h,sum;scanf(%d%d,&...
  • C语言经典例题100-小甲鱼C语言视频教程中推荐的C语言例题
  • C语言经典例题 利用for循环解题

    千次阅读 多人点赞 2020-03-18 21:11:34
    寻找最小值 问题:利用循环从键盘输入输入100个数,并找出其中的最小值。 代码如下: #include int main() { int max=0,min=0,t=0,x=100; while(x--) { scanf("%d",&max); if(max>=min) { t=min; } }...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,321
精华内容 528
关键字:

c语言循环经典例题

c语言 订阅