C语言循环程序的一些初级编程题目

简介: C语言循环程序的一些初级编程题目

写循环时,小心避免死循环,循环能够处理有规律的数据,while循环、do while 循环、 for循环。

1.计算n的阶乘

#include<stdio.h>
void main() {
  int n, sum = 1,i;
  printf("please input n of value:");
  scanf("%d", &n);
  for (i = 1;i <= n;i++) {
    sum *= i;
  }
  printf("%d的阶乘为%d",n,sum);
}

2.求1到100之间的奇数之和、偶数之和

#include<stdio.h>
void main() {
  int even = 0, odd = 0;
  int i;
  for (i = 1;i <= 100;i++) {
    if (i % 2 == 0) {
      even +=  i;
    }
    else {
      odd += i;
    }
  }
  printf("奇数之和为%d,偶数之和为%d", odd, even);
}

3.输入一行字符,统计其中的英文字母、数字、空格和其他字符个数

#include<stdio.h>
void main() {
  int count = 1;
  printf("please input string:");
  char c;
  c = getchar();
  while ((c = getchar()) != '\n') {
    count++;
  }
  printf("输入的字符个数为:%d", count);
}

4.用循环语句编写求的程序

#include<math.h>
#include<stdio.h>
void main() {
  int i, sum = 0;
  for (i = 0;i <= 10;i++) {
    sum += pow(2, i);
  }
  printf("2^0+……+2^10 = %d", sum);
}

5.求

#include<stdio.h>
void main() {
  //sum = 1省略了1!
  int i, j, sum = 1, value = 1;
  for (i = 2;i < 10;i++) {
    for (j = 1;j <= i;j++) {
      value *= j;
    }
    sum += value;
    value = 1;
  }
  printf("值为:%d", sum);
}

#include<stdio.h>
void main() {
  int count = 1;
  float sum = 0;
  float i = 2, j = 1,tmp = 0;
  while (1) {
    if (count == 20) {
      break;
    }
    count++;
    sum += i / j;
    tmp = i;
    i += j;
    j = tmp;
  }
  printf("第20个数的分子为:%0.1f,分母为:%0.1f\n", i, j);
  printf("sum值为:%0.2f", sum);
}

7. 任意一个数,打印出它们中的最大数、最小数。测试数据:

①1.-12.20,30,-5,-23,33,125,200,-100

②0,10,3,1,5,6,-10,90,9,-4

③3 12,13,14,15,10,- 10,-11,-12,-9,9

#include<stdio.h>
void main() {//用冒泡排序解决问题
  int a[10], s;
  printf("请输入10个整数:\n");
  for (s = 0;s < 10;s++) {
    scanf("%d", &a[s]);
  }
  int i, j, arrIntLength = sizeof(a) / sizeof(a[0]);
  //lastExchangeIndex记录最后一次交换的位置
  int lastExchangeIndex = 0;
  //sortBorder无序数列的边界,每次比较只需要比到这里为止
  //作用:减少一趟中的次数
  int sortBorder =  arrIntLength - 1;
  for (i = 0;i < arrIntLength - 1;i++) {
    int isSorted = 1;//有序标记,每一轮的初始都是true也就是1
    for (j = 0;j < sortBorder;j++) {
      if (a[j + 1] < a[j]) {
        isSorted = 0;
        int t = a[j];
        a[j] = a[j + 1];
        a[j + 1] = t;
        lastExchangeIndex = j;
      }
    }
    sortBorder = lastExchangeIndex;
    //作用:减少总趟数
    if (isSorted) {
      break;
    }
  }
  printf("最小值为:%d,最大值为:%d", a[0], a[9]);
}

#include<stdio.h>
void main() {
  int x;
  printf("please input x of int:");
  scanf("%d", &x);
  int j;
  for (j = 2;j <= x / 2;j++) {
    if (x % j == 0) {
      printf("该%d不是素数!", x);
      break;
    }
  }
  if (x == 1) {
    printf("1不是素数!");
  }
  //例如x=13,x/2 == 6 ,j == 7
  //例如x=2,x/2 == 1,j == 2
  else if (x != 1 && j > x / 2){
    printf("该数%d为素数", x);
  }
}

#include<stdio.h>
void main() {
  int j, i, sum = 2;
  int isTrue = 1;
  printf("%d\n", sum);
  for (i = 3;i <= 100;i++) {
    isTrue = 1;
    for (j = 2;j < i;j++) {
      if (i % j == 0) {
        isTrue = 0;
        break;
      }
    }
    if (isTrue) {
      printf("%d\n", i);
    }
  }
}

#include<stdio.h>
void main() {
  int j, i, sum = 1;//1不是素数
  int isTrue = 0;
  for (i = 3;i <= 100;i++) {
    isTrue = 0;
    for (j = 2;j < i;j++) {
      if (i % j == 0) {
        isTrue = 1;
        break;
      }
    }
    if (isTrue) {
      sum += i;
    }
  }
  printf("1-100之间所有非素数的和:%d", sum);
}

11. 输入两个正整数 m和 n,求其最大公约数和最小公倍数。

提示:求 m,n的最大公约数:首先将m除以 n(m>n)得余数 R,再用余数R 去除原来的除数,得新的余数,重复此过程直到余数为0时停止,此时的除数就是m和n的最大公约数。求 m和 n的最小公倍数:m和n的积除以 m和 n的最大公约数。

测试数据:m=12,n=24   ; m=100,n=300

#include<stdio.h>
void main() {
  //greatest为最大公约数,Least为最小公倍数
  int m, n, r, greatest, least;
  printf("please input n and m:");
  scanf("%d,%d", &n, &m);
  r = m % n;
  while (1) {
    r %= n;
    if (r == 0) {
      greatest = n;
      break;
    }
  }
  least = m * n / greatest;
  printf("%d和%d的最大公约数是:%d\n", m, n, greatest);
  printf("%d和%d的最小公倍数是:%d", m, n, least);
}

12 .打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3(要求分别用一重循环和三重循环实现)

一重循环
#include<stdio.h>
#include<math.h>
//一重循环:那么就一个数转为位
void main() {
  //a,b,c分别代表了百位,十位和个位
  int a, b, c, i, count = 0;
  for (i = 100; i <= 999;i++) {
    a = i / 100;
    b = i / 10 % 10;
    c = i % 10;
    if ((pow(a, 3) + pow(b, 3) + pow(c, 3)) == i) {
      count++;
      printf("第%d朵水仙花为:%d\n", count, i);
    }
  }
}
三重循环
#include<stdio.h>
#include<math.h>
//三重循环:那么就从位往一个数去组合
void main() {
  int a, b, c, count = 0, value = 0;
  for (a = 1;a <= 9;a++) {
    for (b = 0;b <= 9;b++) {
      for (c = 0;c <= 9;c++) {
        value = a * 100 + b * 10 + c;
        if ((pow(a, 3) + pow(b, 3) + pow(c, 3)) == value) {
          count++;
          printf("第%d朵水仙花为:%d\n", count,value);
        }
      }
    }
  }
}
相关文章
|
9月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的循环语句
本文介绍了C语言中的三种循环语句:`while`、`do-while`和`for`,并详细解释了它们的语法格式、执行流程及应用场景。此外,还讲解了循环控制语句`break`和`continue`的使用方法。希望这些内容能帮助你在编程道路上不断进步,共同成长!
798 0
一文彻底搞清楚C语言的循环语句
|
10月前
|
C语言
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
156 19
|
10月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
278 18
|
10月前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
264 18
|
10月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
220 13
|
10月前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
261 6
|
10月前
|
C语言
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
555 5
|
11月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
526 8
|
12月前
|
C语言 开发者
C语言中的模块化编程思想,介绍了模块化编程的概念、实现方式及其优势,强调了合理划分模块、明确接口、保持独立性和内聚性的实践技巧
本文深入探讨了C语言中的模块化编程思想,介绍了模块化编程的概念、实现方式及其优势,强调了合理划分模块、明确接口、保持独立性和内聚性的实践技巧,并通过案例分析展示了其应用,展望了未来的发展趋势,旨在帮助读者提升程序质量和开发效率。
589 5
|
12月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
350 5