C语言集训-谢世轩-第二次作业

255 阅读7分钟

课堂笔记部分

预备的计算机专业知识

  • 主板、cpu、硬盘、内存条、显卡、显示器 1.主板提供内存条、硬盘、显卡、显示器配件插口

2.cpu是插在主板上的 电脑的核心组建

3.硬盘是插在主板上的 电脑里面存储文件的硬件

4.内存条是运行程序时 存储正在运行的程序所用到的空间

5.显卡是处理图形的硬件

6.显示器用于接受并翻译显卡输出的信号使之成为图像

  • Hello world是如何运行的:通过编译将其转化为一个.exe可执行文件,再通过cpu运行

  • 什么是数据类型和常见数据类型的存储方式

基本数据类型

整数

1.整型 int --4

2.短整型 short int --2

3.长整型 long int --8

--后为通常所占字节数下同

浮点数

1.单精度浮点数 float --4

2.双精度浮点数 double --8

字符

1.char --1

复合数据类型

结构体

枚举

共用体(已淘汰)

常见数据类型的存储方式

1.整数:以补码的形式转化为二进制代码存储在计算机中

2.浮点数:以IEEE754标准转化为二进制代码存储在计算机中

2.字符型:把字符的相对应的ASCII放到存储单元中,而这些ASCII代码值在计算机中以二进制的形式存放

什么是变量
  • 变量的本质是内存中的一段存储空间

  • 变量为什么一定要初始化

    一个软件所分配到的空间中可能存在着以前其他软件使用过后的残留数据,不对变量初始化的话变量会获得这些残留数据。所以通常情况下要对这个变量初始化

  • 怎样定义变量

    数据类型+变量名称 = 要赋的值

什么叫进制【重点】
  • 逢n进1就是进制,例如十进制是逢十进一。

  • 常见进制及其转换

    1.常见进制:二进制、八进制、十六进制等

    2.进制间的转化:如要将十进制数转化为十六进制,用这个十进制数除以16,一直除下去直到商为零,记录每步的余数。例如十进制30转化为十六进制为1E。

  • 常量在c中是怎么表示的

  • 常量是以怎样的二进制的代码存储在计算机中的

代码规范化【重点】
  • 为了使程序不容易出错和让别人看懂所以代码需要规范化

  • 代码要成对的敲

  • 是否缩进要看“地位”是否相同,例如

#include<staio.h>
int main()
{

 if(a>0)
 {  
  printf("...");
    while(a<0)
    {
     a++;
    }
 }
 return 0;
} 

while在if内所以需要缩进

  • 是否换行要看这些语句的功能若功能相同例如以下多个定义变量之间不换行
#include<stdio.h>
int main()
{

int a=0;
int b=0;
int c=0;

 return 0;
}
什么是字节
  • 存储数据的单位硬件所能访问的最小单位

  • 一个字节8位

  • 1k=1024字节 1M=1024k 1G=1024M

不同类型变量之间的赋值问题【暂不考虑】
什么是ASCII
  • ASCII是美国信息交换标准代码,是一套编码系统
  • ASCII码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号。所以ASCII是种规定,不是一个值
  • ASCII规定了不同的字符使用一整数来保存而整数又是以二进制存储的

参考于[ASCII_百度百科 (baidu.com)]

常量在c语言中是如何表示的

整数

十进制:int x=1;

八进制:int x=01;

十六进制:int x=0x1;

浮点数(实数)

1.float x=1.0;

2.科学计数法float x=1.0e3;//x=1000

字符

1.单个字符'a'【单引号】

2.字符串"ab"【双引号】

输入输出函数

printf()的四种用法
  1. printf("字符串");

  2. printf("输出控制符",输出参数);

    【为什么需要输出控制符: 01组成的代码可以表示数据和指令,当01代码表示的是数据时那么同一个01代码组合不同的输出格式输出就会有不同的结果】

  3. printf("输出控制符1 输出控制符2 ...",输出参数1 输出参数2 ...);

    【输出控制符和输出参数必须一一对应】

  4. printf("输出控制符 非输出控制符",输出参数);

  • 输出控制符是怎样的%d、%ld、%f、%lf、%c、%x等其中%x可写为%x、%X、%#X、%#x其中%#X的效果最好
scanf()的用法【将数据输入进变量中】

1.scanf("输入控制符",输入参数);

【基本用法】

2.scanf("非输入控制符 输入控制符",输入参数);

【含有非输入控制符,非输入入控制符必须原样输入】

3.scanf("");

【一次给多个变量赋值】

如何正确使用scanf写出高质量代码

1.使用scanf之前告诉用户应该输入怎样的参数

2.scanf中尽量不要加入非输入控制符尤其是\n

课堂代码实践和pastebin的使用

“代码规范化"告诉我们规范化的重要性

#include<stdio.h>
int main()
{
 if(as(d(asda)sda(sda)sd)asd)
 {   while(asda(sdas)dasd)
     {
        for(as(dasd)asd)
        {
        ....
        }
     
     }
 
 
 }
return 0;
}

“char的使用”

#include<stdio.h>
int main()
{
char ch='a';//ok
//char ch="ab";//错误char不能把字符串付给单个字符
//char ch="a";//错误
//char ch='ab';//错误
//char ch='b';//错误因为ch已经被定义了
ch=c;//正确
 return 0;
}

“ASCII的解释”

#include<stdio.h>
int main()
{  
 char x='b';
 printf("%d",x);
 return 0;
}

这是在Pastebin上的分享地址[Ubuntu Pastebin] ASCII.CPP - Visual Studio Code 2021_11_21 20_29_13.png 这告诉我们字符本质上与整数的存储方式一样

“%x的测试”和“应该怎么保存代码”

/*
2021年11月20日
目的:测试%x、%X、%#x、%#X
*/

#include<stdio.h>

int main()
{
 int i=47;

 printf("%x\n",i);//输出为2f
 printf("%X\n",i);//输出为2F
 printf("%#x\n",i);//输出为0x2f
 printf("%#X\n",i);//输出为0x2F

    return 0;
}
/*
输出结果为
---------------
2f
2F
0x2f
ox2F
---------------
*/

这是在Pastebin上的分享地址[Ubuntu Pastebin] hexadecimal.cpp - Visual Studio Code 2021_11_21 16_36_30.png

“printf的用法”

#include<stdio.h>
int main()
{
    printf("haha\n");//\n表示换行, printf("字符串");
    
    int i=10;
    
    printf("%d",i);//%d是十进制, printf("输出控制符",输出参数); 
    
    int j=3int x=5;
    
    printf("%d %d\n",j,x);// printf("输出控制符1 输出控制符2 ...",输出参数1 输出参数2 ...);
    
    printf("输出%d",j);//printf("输出控制符 非输出控制符",输出参数);
 return 0;
}

"scanf的用法"

#include<stdio.h>
int main()
{
    int i=0;
    scanf("%d",&i);//scanf("输入控制符",输入参数);
    printf("%d",i);
    
    scanf("m%d",&i);//scanf("非输入控制符 输入控制符",输入参数);
    
    int b=0;
    
    scanf("%d %d",&i,&b);//一次给多个变量赋值

return 0;
}

"如何使用scanf写出高质量代码"

#include<stdio.h>
int main()
{
    int i=0;
    char ch;
    
    scanf("%d",&i);
    
    printf("%d\n",&i);
    
    //......
    while(ch=getcher())!='\n'
        continue;
        
    int j=0
    
    scanf("%d",&j);
    
    printf("%d\n",&j);

return 0;
}

C Primer PLus

  • 3.10
题干类型含义
'\b'字符类型退格
1066整型十进制数1066
99.44浮点类型实数99.44
0XAA整型十进制数170
2.0e30浮点类型2 * 10的30次方
常量类型转换说明
12整型%d
0X3整型%d
'c'字符类型%c
2.34e07浮点类型%e
'\040'字符类型%c
7.0浮点类型%f
  • 3.11 第一题
#include<stdio.h>
int main()
{
    float x=9e96;
    printf("%e\n",x);//输出为1.#INF00e+000

    float j=0.123412341234e-10/10;
    printf("%e\n",j);//输出为1.234123e-012
   
    
 
    int i=12345678901234567890123456789;//输出为1849262357
    printf("%d\n",i);
    
    return 0;
}



溢.cpp - Visual Studio Code 2021_11_21 22_30_12.png 如图可知:当浮点数上溢时计算机输出了一个表示无穷的值。当浮点数下溢时结果失去了原来后面的数字。整数上溢时计算机替换成了一个更小的数

第二题

#include<stdio.h>
int main()
{  
 char x=66;
 printf("%c",x);
 return 0;
}

ASCII.CPP - Visual Studio Code 2021_11_21 22_34_47.png

  • 4.8 第一题
#include<stdio.h>
int main()
{   char firstname[10];

    printf("请输入名\n");
    scanf("%s",&firstname);

    char lastname[10];

    printf("请输入姓\n");
    scanf("%s",&lastname);

    printf("%s %s",firstname,lastname);
    return 0;
}

名字.cpp - Visual Studio Code 2021_11_21 22_48_40.png 第四题

#include<stdio.h>
int main()
{   float x=0;

    printf("请输入升高(英寸):");
    scanf("%f",&x);

    printf("daisy,you are %f feet tall.",x);
    return 0;
}

名字.cpp - Visual Studio Code 2021_11_21 22_57_12.png 第七题【不会做】

#include <stdio.h> #include <float.h>

int main(void) { double db_one_third = 1.0 / 3.0; float ft_one_third = 1.0 / 3.0;

printf("Float                Double              \n");
printf("-------------------- --------------------\n");
printf("%-20.4f %-20.4f\n", ft_one_third, db_one_third); // show 4 digits
printf("%-20.12f %-20.12f\n", ft_one_third, db_one_third); // show 12 digits
printf("%-20.16f %-20.16f\n", ft_one_third, db_one_third);
printf("\n");
printf("FLT_DIG: %d\n", FLT_DIG);
printf("DBL_DIG: %d\n", DBL_DIG);



return 0;

}