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语言之循环语句
C语言之循环语句
26 0
|
1天前
|
C语言
C语言之分支结构
C语言之分支结构
23 0
|
1天前
|
JavaScript C语言
C语言/JS循环语句执行速度控制 | C语言爱心
C语言/JS循环语句执行速度控制 | C语言爱心
18 0
|
1天前
|
Go C语言
爱上C语言:分支与循环(循环篇)
爱上C语言:分支与循环(循环篇)
|
1天前
|
C语言
爱上C语言:分支与循环(分支篇)多个if与if — else if区别
爱上C语言:分支与循环(分支篇)多个if与if — else if区别
|
1天前
|
C语言
初识C语言~循环语句
初识C语言~循环语句
|
1天前
|
C语言
初识C语言~分支语句
初识C语言~分支语句
|
1天前
|
C语言
【精通C语言】:分支结构if语句的灵活运用
【精通C语言】:分支结构if语句的灵活运用
25 1
|
1天前
|
存储 缓存 算法
C语言循环语句的探讨与实践
C语言循环语句的探讨与实践
23 1
|
1天前
|
C语言
【C生万物】C语言分支和循环语句
【C生万物】C语言分支和循环语句

热门文章

最新文章