各位CSDN的uu们你们好呀,今天,小雅兰要巩固一下之前学过的知识,那么,最好的复习方式就是刷题啦,现在,我们就进入C语言的世界吧
从最简单的开始噢 完完全全零基础都能看懂 题目来源于牛客网
BC1-实践出真知
BC2-我是大V
BC3-有容乃大
BC6-小飞机
BC7-缩短二进制
BC8-十六进制转十进制
BC9-printf的返回值
BC10-成绩输入输出
BC11-学生基本信息输入输出
BC12-字符圣诞树
BC13-ASCII码
BC14-出生日期输入输出
BC15-按照格式输入并交换输出
BC16-字符转ASCII码
BC17-计算表达式的值
BC18-计算带余除法
BC19-反向输出一个四位数
BC28-大小写转换
BC29-2的n次方计算
BC35-判断字母

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main() 
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      printf(
      "Practice makes perfect!\n");
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
本题是一个没有输入要求的题目,只考察输入,所以只需要准确无误的输出结果就行了。
在C语言中,以.c为后缀的文件名就是我们的源文件,以.h为后缀的文件名就是头文件
printf是一个库函数,是为输出操作,必须得引入头文件stdio.h
写主函数,main函数是程序的入口,代码是从main函数的第一行开始执行的!
一个工程中,有且仅有一个main函数
运行:[Fn]+Ctrl+F5 VS
如果执行的结果一闪而过了,那么就要设置项目属性,让执行结果停留在屏幕上

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      printf(
      "v   v\n");
     
    
- 
    
     
    
    
     
          
      printf(
      " v v\n");
     
    
- 
    
     
    
    
     
          
      printf(
      " v\n");
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
这道题目还有另外一种写法
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      //一行输出的效果
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
          
      printf(
      "v   v\n v v\n v\n");
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
这个题也是没有输入要求的题目,所以相对比较简单。
题目中只要能够找到输出的规律和掌握 \n的使用就没问题。
这里简单提及:转义字符,可以做一个拓展。

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      printf(
      "The size of short is %d bytes.\n", 
      sizeof(
      short));
     
    
- 
    
     
    
    
     
          
      printf(
      "The size of int is %d bytes.\n", 
      sizeof(
      int));
     
    
- 
    
     
    
    
     
          
      printf(
      "The size of long is %d bytes.\n", 
      sizeof(
      long));
     
    
- 
    
     
    
    
     
          
      printf(
      "The size of long long is %d bytes.\n", 
      sizeof(
      long));
     
    
- 
    
     
    
    
     
          
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
计算机中的单位:

这类入门的题目基本都是没有输入操作的。
本题的关键是要掌握C语言的 sizeof 这个操作符。
sizeof 是C语言的一个单目操作符,用来计算不同类型数据所占内存空间的大小,单位是字节。

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main() 
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      printf(
      " ** \n");
     
    
- 
    
     
    
    
         
      printf(
      " ** \n");
     
    
- 
    
     
    
    
         
      printf(
      "************\n");
     
    
- 
    
     
    
    
         
      printf(
      "************\n");
     
    
- 
    
     
    
    
         
      printf(
      " * * \n");
     
    
- 
    
     
    
    
         
      printf(
      " * * \n");
     
    
- 
    
     
    
    
         
      return 
      0;   
     
    
- 
    
     
    
    
     
      }
     
    
严格按照合适的图案去打印就行了

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      printf(
      "0%o 0X%X", 
      1234, 
      1234);
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
根据这道题目的备注可知,这个题目还有一种表现形式
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main() 
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      int a=
      1234;
     
    
- 
    
     
    
    
         
      printf(
      "%#o %#X",a,a);
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
这里需要我们掌握对个各种数据的格式控制

注意:还是严格按照题目要求的格式输出,才能保证正确性。





本题考查的就是%d的格式控制域宽指定。
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main() 
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      int a=
      0xABCDEF;
     
    
- 
    
     
    
    
         
      printf(
      "%15d",a);
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    


printf函数返回的是:打印在屏幕上的字符的个数
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main() 
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      int a=
      printf(
      "Hello world!");
     
    
- 
    
     
    
    
         
      printf(
      "\n");
     
    
- 
    
     
    
    
         
      printf(
      "%d\n",a);
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      }
     
    
在这里,不能随便在Hello world!后面加\n,因为:\n也算一个字符,最后结果就不准确
这个题目还有更简洁的写法
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      printf(
      "\n%d\n", 
      printf(
      "Hello world!"));
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
更详细地请看我的博客
 函数递归+青蛙跳台阶——“C”_认真学习的小雅兰.的博客-CSDN博客
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      int score1=
      60;
     
    
- 
    
     
    
    
         
      int score2=
      80;
     
    
- 
    
     
    
    
         
      int score3=
      90;
     
    
- 
    
     
    
    
         
      scanf(
      "%d %d %d",&score1,&score2,&score3);
     
    
- 
    
     
    
    
         
      printf(
      "score1=%d,score2=%d,score3=%d",score1,score2,score3);
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main() 
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      int id=
      0;
     
    
- 
    
     
    
    
         
      float C=
      0.0;
     
    
- 
    
     
    
    
         
      float math=
      0.0;
     
    
- 
    
     
    
    
         
      float English=
      0.0;
     
    
- 
    
     
    
    
         
      scanf(
      "%d;%f,%f,%f",&id,&C,&math,&English);
     
    
- 
    
     
    
    
         
      printf(
      "The each subject score of No. %d is %.2f, %.2f, %.2f.\n",id,C,math,English);
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
这个题的最大坑,也是格式的指定,还有空格的控制,必须和题目要求的输出结果一致,比如:of的后边有2个空格。
浮点数打印要指定小数点后边的位数为2位。
小数在内存中有可能不能精确保存!

小雅兰就吃了这个题目的亏


  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main() 
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      char ch=
      '0';
     
    
- 
    
     
    
    
         
      scanf(
      "%c",&ch);
     
    
- 
    
     
    
    
         
      int i=
      1;
     
    
- 
    
     
    
    
         
      int j=
      0;
     
    
- 
    
     
    
    
         
      int m=
      0;
     
    
- 
    
     
    
    
         
      for(i=
      1;i<=
      5;i++)
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
             
      for(j=
      5-i;j>
      0;j--)
     
    
- 
    
     
    
    
     
              {
     
    
- 
    
     
    
    
                 
      printf(
      " ");
     
    
- 
    
     
    
    
     
              }
     
    
- 
    
     
    
    
             
      for(m=
      0;m<i;m++)
     
    
- 
    
     
    
    
     
              {
     
    
- 
    
     
    
    
                 
      printf(
      "%c ",ch);
     
    
- 
    
     
    
    
     
              }
     
    
- 
    
     
    
    
             
      printf(
      "\n");
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
 每一行的输出是前边空格,后边 1
本题的难点就是精确的控制空格的个数和 1的个数。
 
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      int arr[]={
      73,
      32,
      99,
      97,
      110,
      32,
      100,
      111,
      32,
      105,
      116,
      33};
     
    
- 
    
     
    
    
         
      //arr是数组,数组是用下标来访问的!
     
    
- 
    
     
    
    
         
      //计算数组元素的个数
     
    
- 
    
     
    
    
         
      int sz=
      sizeof(arr)/
      sizeof(arr[
      0]);
     
    
- 
    
     
    
    
         
      int i=
      0;
     
    
- 
    
     
    
    
         
      for(i=
      0;i<sz;i++)
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
             
      printf(
      "%c",arr[i]);
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
 这里得了解清楚ASCII编码,如果采用ASCII编码,每个字符都有一个对应的数字,这个数字被称为这个字符的ASCII码,如果把这个数字按照%c打印,打印的就是字符。

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main() 
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      int year=
      0;
     
    
- 
    
     
    
    
         
      int month=
      0;
     
    
- 
    
     
    
    
         
      int date=
      0;
     
    
- 
    
     
    
    
         
      scanf(
      "%4d%2d%2d",&year,&month,&date);
     
    
- 
    
     
    
    
         
      //%4d就是读取4位整数
     
    
- 
    
     
    
    
         
      //输出不够2位时,左边拿0填充
     
    
- 
    
     
    
    
         
      printf(
      "year=%d\nmonth=%02d\ndate=%02d\n",year,month,date);
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      }
     
    
本题的难点在于如何按照指定域宽读取数据,如何按照指定格式打印数据。  
  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      int a = 
      0;
     
    
- 
    
     
    
    
     
          
      int b = 
      0;
     
    
- 
    
     
    
    
     
          
      scanf(
      "a=%d,b=%d", &a, &b);
     
    
- 
    
     
    
    
     
          
      int c = a;
     
    
- 
    
     
    
    
     
          a = b;
     
    
- 
    
     
    
    
     
          b = c;
     
    
- 
    
     
    
    
     
          
      printf(
      "a=%d,b=%d\n",a, b);
     
    
- 
    
     
    
    
     
      }
     
    
输入和输出格式的控制,如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      char ch = 
      0;
     
    
- 
    
     
    
    
     
          
      scanf(
      "%c", &ch);
     
    
- 
    
     
    
    
     
          
      printf(
      "%d\n",ch);
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
直接按照%d打印,就是字符对应的ASCII码值

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      int a = 
      40;
     
    
- 
    
     
    
    
     
          
      int c = 
      212;
     
    
- 
    
     
    
    
     
          
      int ret = (
      -8+
      22)*a
      -10+c/
      2;
     
    
- 
    
     
    
    
     
          
      printf(
      "%d\n", ret);
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
按照操作符的优先级直接设计表达式,计算输出就行。

  
   - 
    
     
    
    
     
      #include<stdio.h>
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      int a = 
      0;
     
    
- 
    
     
    
    
     
          
      int b = 
      0;
     
    
- 
    
     
    
    
     
          
      scanf(
      "%d %d", &a, &b);
     
    
- 
    
     
    
    
     
          
      int m = a/b;
     
    
- 
    
     
    
    
     
          
      int n = a%b;
     
    
- 
    
     
    
    
     
          
      printf(
      "%d %d\n", m, n);
     
    
- 
    
     
    
    
     
          
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
掌握 % 和 / 两个操作符的使用,按照格式输出就行。


  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      int n = 
      0;
     
    
- 
    
     
    
    
     
          
      //输入数据
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
          
      scanf(
      "%d", &n);
     
    
- 
    
     
    
    
     
          
      //获取每一位
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
          
      while(n)
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
     
              
      printf(
      "%d", n%
      10);
     
    
- 
    
     
    
    
     
              n /=
      10;
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
 这里得掌握操作符 % 和 / 的基本使用和特点。其次是循环的使用。

在这道题目中,我们要知道两个函数——getchar、putchar

 
getchar——获取一个字符、输入一个字符
putchar——打印一个字符、输出一个字符
多组输入——一般使用while循环,本题就是while((ch=getchar())!=EOF)
EOF——end of file——文件结束标志——通常是为文件的末尾
然后,这道题目与ASCII码值也有密切的关系,大写字母的ASCII码值加上32就是小写字母的ASCII码值

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      int ch=
      0;
     
    
- 
    
     
    
    
         
      while((ch=
      getchar())!=EOF)
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
             
      putchar(ch+
      32);
     
    
- 
    
     
    
    
             
      printf(
      "\n");
     
    
- 
    
     
    
    
             
      getchar();
      //读取\n
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
getchar 清理缓冲区的问题,这里得理解输入缓冲区的问题。getchar拓展_认真学习的小雅兰.的博客-CSDN博客

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      int n = 
      0;
     
    
- 
    
     
    
    
     
          
      while(
      scanf(
      "%d", &n) != EOF)
     
    
- 
    
     
    
    
     
         {
     
    
- 
    
     
    
    
     
              
      printf(
      "%d\n", 
      1<<n);
     
    
- 
    
     
    
    
     
         }
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
<< 左移操作符 移动的是二进制位 向左移动多少位 就表示2的几次方
int a=1;
a<<1;
//00000000000000000000000000000001
//00000000000000000000000000000010——左移一位 2^1
a<<2;
//00000000000000000000000000000001
//00000000000000000000000000000100——左移两位 2^2

  
   - 
    
     
    
    
     
      #include <stdio.h>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
         
      char ch=
      0;
     
    
- 
    
     
    
    
         
      while((ch=
      getchar())!=EOF)
     
    
- 
    
     
    
    
     
          {
     
    
- 
    
     
    
    
             
      if((ch>=
      'a'&&ch<=
      'z')||(ch>=
      'A'&&ch<=
      'Z'))
     
    
- 
    
     
    
    
     
              {
     
    
- 
    
     
    
    
                 
      printf(
      "YES\n");
     
    
- 
    
     
    
    
     
              }
     
    
- 
    
     
    
    
             
      else 
     
    
- 
    
     
    
    
     
              {
     
    
- 
    
     
    
    
                 
      printf(
      "NO\n");
     
    
- 
    
     
    
    
     
              }
     
    
- 
    
     
    
    
             
      getchar();
      //处理\n
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
         
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
 这个题目还有另外一种写法,使用我们的库函数
isalpha——是专门用来判断一个字符是不是字母的
是字目就返回非0的值,不是字母就返回0

  
   - 
    
     
    
    
     
      #include<stdio.h>
     
    
- 
    
     
    
    
     
      #include<ctype.h>
     
    
- 
    
     
    
    
     
      int main()
     
    
- 
    
     
    
    
     
      {
     
    
- 
    
     
    
    
     
          
      int ch = 
      0;
     
    
- 
    
     
    
    
     
          
      while((ch=
      getchar()) != EOF)
     
    
- 
    
     
    
    
     
         {
     
    
- 
    
     
    
    
     
              
      //使用库函数
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
              
      if(
      isalpha(ch))
     
    
- 
    
     
    
    
     
                  
      printf(
      "YES\n");
     
    
- 
    
     
    
    
     
              
      else
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
                  
      printf(
      "NO\n");
     
    
- 
    
     
    
    
     
              
      getchar();
     
    
- 
    
     
    
    
     
         }     
     
    
- 
    
     
    
    
     
          
      return 
      0;
     
    
- 
    
     
    
    
     
      }
     
    
 1. 本地是多组输入,一定要注意循环输入的问题
2. 字符的判断可以自己写,也可以借助于库函数,要熟悉库函数都有哪些。
好啦,小雅兰今天的复习就到这里啦,后续还会继续复习噢

转载:https://blog.csdn.net/weixin_74957752/article/details/129019134
 
					