C习题集1-6

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: C习题集1-6

1.实践出真知


题目描述:


       于老师经常告诉我们"学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机'交流',实践才能出真知。"


输入描述:


输出描述:

Practice makes perfect!


解析:


       本题是一个没有输入要求的题目,只考察输出,所以只要求准确无误的输出结果就可以了。


代码:

//包含/引入头文件
#include<stdio.h>
//写主函数
//main函数是程序的入口 - 代码是从main函数的第一行开始执行的
//一个工程中,仅有一个main函数
int main()
{
  //printf - 库函数 - 输出操作 - 需要引头文件 - stdio.h
  //此处printf里面的字符串内容需要和题目输出描述保持一致哟
  //此处的"!"不要掉啦
  printf("Practice makes perfect!");
  return 0;
}
//运行结束


2.我是大V


题目描述:


       每个人都想成为大V(VIP:Very Important Person),但要一点一点积累才行,先从小v做起。要求输入由小写字母v组成的大V。


输入描述:


输出描述:

v   v
 v v 
  v


解析:


       这个题目也是没有输入要求的题目,所以也相对比较简单。题目中只要能够找到输出的规律和掌握 \n 的使用就没有问题。


代码:

#include<stdio.h>
int main()
{
  //解法一
  //\n - 换行 - 是一个转义字符
  printf("v   v\n");
  printf(" v v \n");
  printf("  v  \n");
  //解法二
  printf("v   v\n v v \n  v   ");
  return 0;
}


3.有容乃大


题目描述:


       确定不同整型数据类型在内存中占多大字节(字节),输出不同整型数据类型在内存中占多大字节。


输入描述:


输出描述:

不同整型数据类型在内存中占多大字节,具体格式详见输出样例。
输出样例中的?为不同整型数据类型在内存中占的字节数。
输出样例如下:
The size of short is ? bytes,
The size of int is ? bytes,
The size of long is ? bytes,
The size of long long is ? bytes.


解析:


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


代码:

#include<stdio.h>
int main()
{
  /*
    计算机的单位:
      bit位 1/0 - 二级制
      1 byte(字节) = 8 bit
    C标准规定:
      sizeof(long long)>=sizeof(long)>=sizeof(int)
  */
  //sizeof - 是C语言中的一个操作符 -\
   是用来计算变量或者类型所占空间的大小的 -\
   计算结果的单位是字节
  printf("The size of short     is %d bytes.\n", sizeof(short));//2byte
  printf("The size of int       is %d bytes.\n", sizeof(int));//4byte
  printf("The size of long      is %d bytes.\n", sizeof(long));//4byte(32位平台) or 8byte(64平台)
  printf("The size of long long is %d bytes.\n", sizeof(long long));//8byte
  return 0;
}


4.缩短二进制


题目描述:


 我们处理的整数通常用十进制表示,在计算机内存中是以二进制补码形式存储,但通常二进制制表示的整数比较长,为了便于在程序设计过程中理解和处理数据,通常采用八进制和十六进制,缩短了二级制补码表示的整数,但保持了二级制的表达特点。请输入十进制整数1234对应的八进制和十六进制。


输入描述:


输出描述:

十进制整数1234对应的八进制和十六进制(字母大写),用空格分开。
并且要求:在八进制前显示前导0,在十六进制数前显示前导0X。
备注:printf可以使用格式控制串"%o","%X"分别输出八进制整数和十六进制整数,
     并使用修饰符"#"控制前导显示


解析:


本题需要掌握对各个数据的格式控制        

%o 八进制整数
%X 十六进制整数
%c 字符
%hd 短整型
%d 整型
%s 字符串
%f 单精度浮点数
%lf 双精度浮点数
%p 地址格式


代码:

#include<stdio.h>
int main()
{
  /*
    八进制   - 012  = 2 * 8^0  + 1 * 8^1  = 十进制 - 10
    十六进制 - 0X12 = 2 * 16^0 + 1 * 16^1 = 十进制 - 18
  */
  /*1234
    八进制:02322
    十六进制:0X4D2
  */
  //写法一:
  printf("0%o 0X%X\n", 1234, 1234);
  //写法二:
  printf("%#o %#X\n", 1234, 1234);
  return 0;
}


5.反向输出四位数


题目描述:


       将一个四位数,反向输出。


输入描述:

一行,输入一个整数n(1000<=n<=9999).
示例输入:1234


输出描述:

针对每组输入,反向输出对应的四位数。
示例输出:4321


解析:


       这里需要掌握操作符%和/的基本使用和特点。其次是循环的使用。


代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int n = 0;
  //输入
  scanf("%d", &n);//1234
  //输出
  /*
        每次都要进行模10除10的动作
    1234 % 10 = 4;
    1234 / 10 = 123;
    123 % 10 = 3;
    123 / 10 = 12;
    12 % 10 = 2;
    12 / 10 = 1;
    1 % 10 = 1;
    1 / 10 = 0;
  */
  while (n)
  {
    printf("%d", n % 10);
    n = n / 10;
  }
  return 0;
}


6.大小写的转换


题目描述:


       实现字母的大小写转换,多组输入输出


输入描述:

多组输入,每一行输入大写字母
备注:多组输入过程中要注意"回车"也是字母,所以要"吸取"(getchar())掉该字母.
示例输入:
        A
        B


输出描述:

针对每组输入输出对应的小写字母。
示例输出:
        a
        b


解析:


第一次代码输出结果:


这里是由于我们在输入A后还按入了回车,此时在输入缓冲区就有A和\n两个字符,而在ASCII码中A对应的小写字母为a,\n对应的为*。从而就会出现上面的结果,这里画一个图解释一下:


第二次代码输出结构:


第三次代码输出结果:


1.注意多组数据输入的问题。

2.getchar清理缓冲区的问题,这里需要理解输入缓冲区的问题。


代码:

#include<stdio.h>
int main()
{
  //getchar() - read a character from a stream or stdin
  //int* getchar(void)
  //函数 - getchar() - 获取一个字符,输入一个字符
  //putchar() - writes a character to a stream or stdout
  //int putchar(int c);
  //函数 - putchar() - 输出一个字符,打印一个字符
  //错误写法
  /*
  int ch = 0;
  while (ch = getchar())
  {
    putchar(ch + 32);
    printf("\n");
  }
  */
  //修改 - 算法复杂度过大 - 程序不会停止
  //int ch = 0;
  //while (ch = getchar())
  //{
  //  putchar(ch + 32);
  //  printf("\n");
  //  getchar();//读取\n
  //}
  //修改
  int ch = 0;
  //EOF -- end of file -- 文件结束标志 -- 通常是为文件的末尾的 --\
      ctrl+z 该程序就会停止
  while (ch = getchar() != EOF)
  {
    putchar(ch + 32);
    printf("\n");
        getchar();//读取\n
        //还可以写成以下方式
    //printf("%c\n", ch + 32);
    //getchar();//读取\n
  }
  return 0;
}
相关文章
|
6月前
|
存储 数据库 C语言
C习题集7-17
C习题集7-17
|
6月前
C习题集85-94
C习题集85-94
|
6月前
|
存储 双11 C语言
C习题集26-35
C习题集26-35
|
6月前
|
C语言
C习题集18-25
C习题集18-25
|
6月前
|
存储 数据安全/隐私保护
C习题集64-73
C习题集64-73
|
6月前
C习题集36-43
C习题集36-43
|
6月前
C习题集44-52
C习题集44-52
|
6月前
|
数据安全/隐私保护
C习题集74-84
C习题集74-84
|
6月前
C习题集53-63
C习题集53-63
|
6月前
C习题集95-105
C习题集95-105