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);
        }
      }
    }
  }
}
相关文章
|
2月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
71 5
|
3月前
|
安全 C语言
C语言循环的使用注意点
在C语言中,合理使用循环对于编写高效、安全的代码至关重要。以下是几点建议:确保循环条件正确以避免无限循环;每次迭代时正确更新循环变量;恰当使用`break`和`continue`控制执行流程;注意嵌套循环中的变量作用域;简化循环体内逻辑;根据需求选择合适的循环类型;注意数据类型以避免溢出;保持良好的缩进和注释习惯;减少重复计算以提升性能;确保循环终止条件明确。遵循这些建议,可以提高代码质量和可维护性。
220 88
|
2月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
43 6
|
2月前
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
298 12
|
2月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
2月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
17 0