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);
        }
      }
    }
  }
}
相关文章
|
16天前
|
网络协议 程序员 编译器
C语言:编程世界的基础与魅力
C语言:编程世界的基础与魅力
|
4天前
|
C语言
第一章 C语言知识点(程序)
第一章 C语言知识点(程序)
14 0
|
2天前
|
存储 自然语言处理 编译器
“ Hello world ”中的秘密之【C语言程序编译和链接】
作为C语言最经典的代码,大家都可以轻易写出。但是代码的运行过程却很少有人清楚,接下来我将介绍代码运行的奥秘。
15 0
|
4天前
|
C语言
基础C语言编程题
基础C语言编程题
4 0
|
5天前
|
自然语言处理 编译器 C语言
C语言程序编译和链接
在ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。 第2种是执⾏环境,它⽤于实际执⾏代码。
|
7天前
|
网络协议 物联网 数据处理
【C 言专栏】C 语言实现网络通信程序
【5月更文挑战第4天】本文探讨了使用C语言实现网络通信程序的方法,包括理解网络通信基本概念如协议和套接字,以及TCP/UDP通信的实现步骤。通过创建套接字、绑定端口、监听连接、数据传输和错误处理等关键环节,阐述了C语言在网络通信中的优势。文中还提到了实际应用案例、程序优化策略及未来发展趋势,旨在帮助读者掌握C语言在网络通信领域的应用技巧。
【C 言专栏】C 语言实现网络通信程序
|
8天前
|
编解码 算法 数据可视化
【C 言专栏】运用 C 语言进行图形编程
【5月更文挑战第3天】本文探讨了C语言在图形编程中的应用,介绍了基础概念和常用图形库如OpenGL和SDL。通过初始化环境、绘制图形、处理用户输入及更新显示等步骤,阐述了图形编程过程。同时,文章提到了性能优化、兼容性处理和复杂图形绘制的挑战,以及通过实际游戏案例分析应用。随着技术发展,C语言图形编程在跨平台和移动设备上的前景广阔,鼓励读者深入学习和创新。
【C 言专栏】运用 C 语言进行图形编程
|
9天前
|
并行计算 算法 测试技术
【C 言专栏】优化 C 语言程序性能的策略
【5月更文挑战第2天】本文探讨了优化C语言程序性能的策略,包括算法优化(选择合适的时间和空间复杂度)、代码结构优化(减少函数调用,合理使用循环)、内存管理优化(合理分配和及时释放内存)、编译器优化(选择优化级别,内联函数,循环展开)、数据结构优化(根据需求选择数组、哈希表或堆)、并行计算优化(多线程、多进程和MPI编程)以及性能测试与分析(使用性能分析工具、基准测试和分析执行路径)。通过这些方法,可以提升C语言程序的效率和运行速度。
|
10天前
|
存储 Linux C语言
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)-2
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)
|
10天前
|
自然语言处理 Linux 编译器
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)-1
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)