C语言 2 分支与循环语句 下

简介: C语言 2 分支与循环语句 下

F1~F12    有了新的功能

Fn+F1     旧的功能

Fn+F2

Fn 辅助功能键

time_t=time(NULL   )

goto语句:尽量不使用goto语句,goto语句不能跨函数跳转 可以在代码中出现逻辑的跳转

死循环的打印“呵呵”;

int main()
{
end:
  printf("呵呵\n");
  goto end;
  printf("heihei\n");
  return 0;
}
void test()
{
flag:
  printf("haha\n");
}
int main()
{
  printf("hehe\n");
  goto flag;//goto语句只能在同一个函数内部跳转,不能跨函数跳转
  return 0;
}

最常见的用法是终止程序在某些深度嵌套的结构的处理过程 例如:深度嵌套情况下,一次性跳出多层循环。

go to例子

关机程序:

程序运行后一分钟内关机

如果输入“我是猪”,则取消关机

int main()
{
  char input[20] = { 0 };
  system("shutdown -s -t 60");//开始倒计时关机
again:
  printf("你的电脑在一分钟内会关机,输入“我是猪”,则取消关机\n");
  scanf("%s", input);      //字符串不用&索引
  if (strcmp(input, "我是猪") == 0)//字符串判断用 strcmp函数
  {
    system("shutdown -a");//取消关机
    printf("取消关机\n");
  }
  else
  {
    goto again;
  }
  return 0;
}              //可以用循环语句进行替代 可以替换goto语句

小乐乐坐电梯

int main()
{
  int n;
  printf("前面有多少人:");
  scanf("%d", &n);
  int t = (n / 12) * 4 + 2;
  printf("%d分钟\n", t);
  return 0;
}

逆序输出

int main()
{
  int arr[10] = { 0 };//0-9
  int i = 0;
  while (i < 10)
  {
    scanf("%d", &arr[i]);
    i++;
  }
  i = 9;
  while (i >= 0)
  {
    printf("%d ", arr[i]);
    i--;
  }
  return 0;
}

ASCII码

int main()
{
  int arr[] = { 73,32,99,97,110,32,100,111,32,105,116,33,'\0'};
  int sz = sizeof(arr) / sizeof(arr[0]);//求元素个数
  int i = 0;
  while (i < sz)
  {
    printf("%c", arr[i]);
    i++;
  }
  return 0;
}

打印ASCII码值 只需要将%c和%d相互转换,这样可以将字符和对应的整形进行转换

int main()
{
  int a = 99;
  printf("%c", a);
  return 0;
}

小乐乐求和 小乐乐最近接触到了求和符号 但是小乐乐很笨 请你帮他解答一下

int main()
{
  int a = 0;
  printf("请输入一个数:\n");
  long long sum = 0;
  scanf("%d", &a);
  for (a,sum; a != 0; a--)
  {
    sum += a;
  }
  printf("%lld", sum);//sum数值过长,类型定义为long long
  return 0;
} 

小乐乐求和 方法二

等差数列前n项和 值足够大时,用long long

用等差数列求前n项和公式求和

int main()
{
  long long n;              //不仅要ret声明为long long,n也设置成long long类型
  scanf("%lld", &n);
  long long ret = (1 + n) * n / 2;//等差数列前n项和公式
  printf("%lld\n", ret);
  return 0;
}

计算带余除法

int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  int m = a / b;
  int n = a % b;
  printf("%d %d", m, n);
  return 0;

计算体重指数

int main()
{
  int kg = 0;
  int high = 0;
  double c = 0;
  printf("请输入体重:");
  scanf("%d", &kg);
  printf("请输入身高");
  scanf("%d", &high); 
    c = kg / ((high / 100.0) * (high / 100.0));
  printf("%.2lf", c);
  return 0;
}

static可以改变变量范围 static会保留上一次的局部变量的值,不会销毁

口头语中的指针都是指针变量,用来存放地址。

指针变量的大小是4/8个字节

指针是个变量 用来存放地址

char*指针类型 计算指针变量的大小

小乐乐获得4个最大数,请帮他编程找到最大的数。

小乐乐找最大数 方法1 数组存放

int main()
{
  int arr[4] = {0};
  int i = 0;
  for (i = 0; i < 4; i++)
  {
    scanf("%d", &arr[i]);
  }
  int max = arr[0];
  for (i = 1; i < 4; i++)
  {
    if (arr[i] > max) {
      max = arr[i];
    }
  }
  printf("%d", max);
    return 0;
}

小乐乐找最大数  方法2 用INT_MIN表示整数中的最小值 INT_MIN表示整形中的最小值

#include <limits.h>
int main()
{
  int max = INT_MIN;//需要头文件 <limits.h>
  int i = 0;
  int n = 0;
  for (i = 0; i < 4; i++)
  {
    scanf("%d", &n);
    if (n > max) 
      max = n;
  }
  printf("%d\n", max);
  return 0;
}

小乐乐找最大数  方法3 四个数分别进行比较 取最大值

int main()
{
  int a, b, c, d;
  scanf("%d %d %d %d", &a, &b, &c, &d);
  int x = a > b ? a : b;
  int y = c > d ? c : d;
  int max = x > y ? x : y;
  printf("%d", max);
  return 0;
}

字母大小写转换 方法1:

大写字母ASCII值65-90 小写字母ASCII值97-122

int main()
{
  char ch = 0; 
  while (scanf("%c", &ch)==1)
  {
    if (ch >= 97 && ch <= 122)
    {
      ch = ch - 32;
      printf("%c\n", ch);
    }
    else if (ch >= 65 && ch <= 90)
    {
      ch = ch + 32;
      printf("%c\n", ch);
    }
  }
  return 0;
}

字母大小写转换 方法2

int main()
{
  char ch = 0;
  while (scanf("%c", &ch) == 1)//返回1证明读到了字符,有字符
  {
    if (ch >= 'a' && ch <= 'z')
    {
      ch = ch - 32;
      printf("%c\n", ch);
    }
    else if (ch >= 'A' && ch <= 'Z')
    {
      ch = ch + 32;
      printf("%c\n", ch);
    }
  }
  return 0;
}

方法三 库函数精准度最高

字母大小写转换 方法三: 库函数直接判断大小写字母

判断大写字母-isupper

判断小写字母-islower

大写转小写-tolower 方法后要传参

小写转大写-toupper

大小写转换的头文件#include <ctype.h>

int main()
{
  char ch = 0;
  while (scanf("%c", &ch) == 1)
  {
    if (islower(ch))//判断ch是否为小写字母
    {
      printf("%c\n", toupper(ch));//toupper小写转大写函数
    }
    else if (isupper(ch))//isupper大写转小写函数
    {
      printf("%c\n", tolower(ch)); 
    }
  }
  return 0;
} 
//库函数更标准,出错效率小一点。

判断是不是字母 方法1 scanf

int main()
{
  char ch = 0;
  scanf("%c", &ch);
  if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))//不能写成A到z
    printf("%c是字母", ch);
  else
    printf("%c不是字母", ch);
  getchar();  //清理\n
  return 0; 
}

判断是不是字母 方法2 getchar()

循环中 不用处理回车

int main()
{
  int ch = 0;
  while (ch = getchar() != EOF)
  {
    if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))//不能写成A到z
      printf("%c是字母", ch);
    else
      printf("%c不是字母", ch);
    getchar();  //清理\n
  }
  return 0; 
}

判断是不是字母 方法3 库函数  isalpha函数

int main()
{
  int ch = 0;
  while ((ch = getchar()) != EOF)
  {
    if (isalpha(ch))//不能写成A到z
    {
      printf("%c是字母\n", ch);
    }
    else
    {
      printf("%c不是字母\n", ch);
    }
    getchar();  //清理\n
  }
  return 0;
}

写一个代码,打印1 - 100之间所有三的倍数 方法1:

int main()
{
  int a = 0;
  for (a = 1; a <= 100; a++)
  {
    if (a % 3 == 0)
    {
      printf("%d ", a);
    }
  }
  return 0;
}

写一个代码,打印1 - 100之间所有三的倍数 方法2:

int main()
{
  int i = 0;
  for (i = 3; i <= 100; i = i + 3)
  {
    printf("%d ", i);
  }
  return 0;
}

写代码将三个整数从大到小输出 方法1:

int main()
{
  int a = 0;
  int b = 0;
  int c = 0;
  scanf("%d %d %d", &a, &b, &c);
  //比较判断三个数的大小:
  if (a < b)
  {
    int t = a;
    a = b;
    b = t;
  }
  if (a < c)
  {
    int t = a;
    a = c;
    c = t;
  }
  if (b < c)
  {
    int t = b;
    b = c;
    c = t;
  }//用第三个变量调整顺序,从而由大到小输出
  printf("%d %d %d", a, b, c);
}

写代码将三个整数从大到小输出 方法2:

int main()
{
  int a, b, c;
  printf("请您输入要比较的三位数字:\n");
  scanf("%d %d %d", &a, &b, &c);
  if (a > b) {
    if (a > b && a > c)
      printf("%d %d %d", a, b, c);
    else
      printf("%d %d %d", a, c, b);
  }
  else if (b > a) {
    if (b > a && a > c)
      printf("%d %d %d", b, a, c);
    else
      printf("%d %d %d", b, c, a);
  }
  else if (c > a) {
    if (c > a &&  c > b) {
      printf("%d %d %d", c, a, b);
    }
    else
      printf("%d %d %d", c, b, a);
  }
  return 0;
}

写一个代码,打印100-200之间的素数 方法1:

int main()
{
  int i = 0;
  int count = 0;
  for (i = 100; i <= 200; i++)//外层循环帮我们产生i 内存循环进行试除 判断是否为素数
  {
    //判断i是否是素数 素数(质数)只能被1和它本身整除
    //用2-i-1试除一下
    int j = 0;
    int flag = 1;
    for (j = 2; j < i; j++)//sqrt开平方 #include <math.h> 函数
    {
      if (i % j == 0)
      {
        flag = 0;
        break;
      }
    }
    if (flag == 1)
    {
      count++; 
      printf("%d  ", i);
      printf("count=%d\n", count);
    }
  }
  printf("\ncount=%d\n", count);
  return 0;
}

写一个代码,打印100-200之间的素数 方法2:

int main()
{
  int i = 0;
  int count = 0;
  for (i = 101; i <= 200; i+=2)//外层循环帮我们产生i 内存循环进行试除 判断是否为素数
  {
    //判断i是否是素数 素数(质数)只能被1和它本身整除
    //用2-i-1试除一下
    int j = 0;
    int flag = 1;
    for (j = 2; j <= sqrt(i); j++)//sqrt开平方 #include <math.h> 函数
    {
      if (i % j == 0)
      {
        flag = 0;
        break;
      }
    }
    if (flag == 1)
    {
      count++; 
      printf("%d  ", i);
      printf("count=%d\n", count);
    }
  }
  printf("\ncount=%d\n", count);
  return 0;
}

打印1000-2000间的闰年

int main()
{
  int a = 0;
  int count = 0;
  for (a = 1000; a <= 2000; a++)
  {
    //判断是否是闰年
    //判断规则:能被四整除不能被一百整除/能被四百整除
    if (a % 4 == 0 || a % 100 == 0)
    {
      printf("%d  ", a);
      count++;
    }
  }
  printf("%d", count);
  return 0;
}

寻找最大公约数 方法1:循环法:

int main()
{
  int m = 0;
  int n = 0;
  scanf("%d %d", &m, &n);
  int y = (m > n ? n : m);
  while (1)//恒为真 一直进行循环
  {
    if (m % y == 0 && n % y == 0) //从两个数中的较大的数开始取余,找到两个数的最大公约数
    {
      break; //找到后跳出循环
    }
    y--;//从大到小,找到唯一可以整除他俩的
  }
  printf("%d\n", y);
  return 0;
}

寻找最大公约数 方法2:辗转相除法——求最大公约数的一种方法

int main()
{
  int m = 0;
  int n = 0;
  int p = 0;
  printf("请输入两个整数: ");
  scanf("%d %d", &m, &n);
  while (p = m % n)
  {
    m = n;
    n = p;
  }
  printf("最大公约数为:%d\n", n);
  return 0;
}

最小公倍数

int main() 
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  int x = 0;
  x = a > b ? a : b;
  while ((x % a != 0) || (x % b != 0))
  {
    x++;
  }
  printf("%d", x);
  return 0;
}

99乘法口诀表的打印

  int main()
  {
    int i, j;
    for (int i = 1; i <= 9; i++)
    {
      for (j = 1; j <= 9; j++)
      {
        int sum = i * j;
        printf("%d * %d= %-2d  ", i, j, sum);
        if ( j == 9) {
          printf("\n");
        }
      }
    }
    return 0;
}

求十个整数中的最大值 键盘输入

int main()
{
  int arr[10] = { 0 };
  int n = 0;
  for (n = 1; n <= 10; n++)
  {
    printf("请输入一个整数:\n");
    scanf("%d", &arr[n]);
  }
  int m = arr[0];
  int i = 0;
  for (i = 1; i <= 10; i++)
  {
    if (arr[i] > m)
    {
      m = arr[i];
    }
  }
  printf("最大的值是:%d\n", m);
  return 0;
}

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

分数求和 方法1:

int main() 
{
  int i = 0;
  double sum = 0;
  int flag = 1;
  for(i=1;i<=100;i++)
  {
    sum += flag * 1.0 / i;
    flag = -flag;       //加减交替
  }
  printf("%lf", sum);
  return 0;
}

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

分数求和 方法2:

int main() 
{
  int i = 0;
  double sum = 0;
  int flag = 1;
  for(i=1;i<=100;i++)
  {
    if (i % 2 == 1)
    {
      sum += 1.0 / i;
    }
    else
    {
      sum -= 1.0 / i;
    }
  }
  printf("%lf\n", sum);
  return 0;
}

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

分数求和 方法3:

int main()
{
  double sum1 = 0;
  double sum2 = 0;
  for (int i = 2; i <= 100; i += 2)
  {
    sum1 = sum1 + 1.0 / i;
  }
  for (int j = 1; j <= 99; j += 2)
  {
    sum2 = sum2 + 1.0 / j;
  }
  double sum = 0;
  sum = sum2 - sum1;
  printf("%lf", sum);
  return 0;
}

编写程序数一下 1到 100 的所有整数中出现多少个数字9

int main()
{
  int a = 0;
  int sum = 0;
  for (a = 1; a < 101; a++)
  {
    if (a % 10 == 9 || a / 10 == 9)
    {
      sum++;
    }
    if (a == 99)
      sum = sum + 1;
  }
  printf("%d", sum);
  return 0;
}

猜数字游戏:

//猜数字:
void menu()
{
  printf("*************************\n");
  printf("******** 1. play ********\n");
  printf("******** 0. exit ********\n");
}
void game()
{
 //生成随机数
  int ret = rand()%100+1;         //0-99+1-->1-100 ,限制随机数产生的范围
  //printf("%d\n", ret);
  //RAND_MAX;
  //2.猜数字 
  int guess = 0;
  while (1)
  {
    printf("请猜数字;");
    scanf("%d", &guess);
    if (guess < ret)
      printf("猜小了\n");
    else if (guess > ret)
      printf("猜大了\n");
    else {
      printf("恭喜你,猜对了\n");
      break;
    }
  }
}
int main()
{
  int input = 0;
  srand((unsigned int)time(NULL));
  do
  {
    menu();
    printf("请选择:");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      game();
      break;
    case 0:
      printf("退出游戏\n");
      break;
    default:
      printf("选择错误,重新选择");
      break;
    }
  } while (input);
    return 0;
}

输出1-100之间的奇数 并判断它是不是3的倍数

int main()
{
  int a = 1;
  while (a <= 100) {
    a++;
    if (a % 3 == 0) {
      printf("%d ", a);
    }
  }
  return 0;
}

输出1—100之间的奇数

int main()
{
  //while循环
  int a = 0;
  int sum = 0;
  while(a < 101) {
    if (a % 2 == 1) 
      {
      printf("%d ", a);//输出之间加空格
    }
    sum = sum + a;
    a++;
  }
  printf("\n");
  printf("sum = %d", sum);
  return 0;
}


目录
相关文章
|
1月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
71 5
|
1月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
31 8
|
1月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
40 6
|
1月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
1月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
17 0
|
1月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
35 3
|
C语言 Windows
《C语言及程序设计》程序阅读——三种循环语句
 返回:贺老师课程教学链接  读程序,写出运行结果,并与计算机运行的结果进行对照(1) #include &lt;stdio.h&gt; int main( ) { char c1,c2; for(c1='0',c2='9'; c1&lt;c2; c1++,c2--) printf("%c%c", c1, c2); printf("\n");
1069 0
|
14天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
29 6