C 语言中的数据类型主要有哪些?

C 语言为什么要规定对所有用到的变量“先定义后使用”?这样做有什么好处?

1. 编译系统会根据定义为变量分配内存空间,分配空间的大小与数据类型有关

2. 系统可以根据变量的类型检查对该变量的运算是否合法,这样就给程序员调试程序带来方便。

字符常量和字符串常量有什么区别?

下述字符串常量的长度各是多少?

在内存中存储时各自占用的内存单元数又是多少?

1、字符常量和字符串常量的表示方法不同:字符型常量是用单引号括起来的一个字符;
字符串常量是用一对双引号括起来的零个或多个字符组成的序列。

2、最主要的区别是存储的不同:

字符型数据在存储时,并不是把该字符本身放到内存单元中,而是把该字符的相应 ASCII码值存放到该存储单元中;

而字符串常量是将字符存储,并自动在其末尾加上'\0'作为字符串结束标志,所以字符串常量在内存中所占用的字节数为字符串长度+1。

3、"Hello!"长度是 6 个字节,占用内存单元数是 7。

"ABC\n\\TH\064\?"长度 9,占用内存单元数 10。需要注意的是,在该字符串中有转义字符,\n 为换行,\\为反斜杠字符,\064 为八进制转义字符,对应 ASCII 码为 52 的字符'4'。

写出以下程序运行的结果

#include <stdio.h>

void main() {
int x;
x = - + * - ;
printf("x=%d\n", x);
x = - * % -;
printf("x=%d\n", x);
}

输出:

x=-26
x=-6

解析:* 和 % 优先级相同,结合性从左向右

下列对变量进行定义的语句哪些正确?哪些不正确?为什么?请将不正确的改正过来。

(1)char cl,int a2; (2)INT a,b;FLOATx,y; (3)a,b:char; (4)char if;
(5)int a,b (6)Int a:b:c; (7)int a,x;float x,y;
答:

(1) char cl,int a2;错误,因为 c1 和 a2 是不同类型的变量,两次定义应该用分号分开。

(2)INT a,b; FLOATx,y;错误,因为:①C 语言需要区分大小写,所以关键字 FLOAT和 INT 必须小写为 int 和 float;②关键字和参数间应该空格,float 和 x 应该加空格。

(3)a,b:char;错误,应该写为“char a,b;”。
(4)char if;错误,if 是 C 语言的关键字,重新命名变量。
(5)int a,b 错误,变量定义语句应该以分号表示结束,在语句后加“;”。
(6)int a:b:c;错误,应该使用逗号分隔变量名表中的多个变量。
(7)int a,x; float x,y;错误,变量 x 重复定义。

写出下面程序的输出结果。

#include "stdio.h"
void main()
{
printf("%d\n",NULL);
printf("%d,%c\n",,);
printf("%d,%c,%o\n",+,+,+);
}

答:

结果是:

0

50,2
78,N,116
结果分析:第 1 次输出的是 NULL 对应的 ASCII 码;第 2 次输出的是十进制整数 50 和ASCII 码 50 对应的控制字符 2;第 3 次输出的是十进制整数 78、ASCII 码 78 对应的控制字符 N 和十进制整数 78 转换为八进制的整数 116。

分析下面程序的运行结果,并上机予以验证。

#include ″stdio.h″
void main()
{
char i=′a′;
char j=′b′;
char k=′c′;
char m='\101';
char n=′\′;
printf("a%cb%c\tc%c\tabc\n",i,j,k);
printf(″\tb%c%c″m,n);
}

程序中 char i=′a′;char j=′b′;char k=′c′;char m=′\101′;char n=′\116′;
这几个语句能否改成如下语句:
int i=′a′;int j=′b′; int k=99;int m=′\101′;int n=′\116′;
为什么?
:该程序的结果如下:

结果分析:第 1 次按字符输出,读者应该不难理解。第 2 次输出需要注意的是'\101'和'\116'
是八进制转义字符,输出的是 ASCII 码为 65 和 78 对应的控制字符'A'和'N'。
当把变量类型全部替换为 int 后,结果依然正确。因为在这样的情况下,赋给变量的值
为这些字符对应的 ASCII 码。

求下列表达式的值。

(1)假设 x=5.6,a=8,y=12.3
x+a%5*(int)(x+y)%3/5
(2)设 a=21,b=30,x=4.2,y=8.4
(float)(a+b)/6+(int)x%(int)y

答:(1)5.600000。(2)12.500000

结果分析:变量类型的强制转换

x+【a%5*【(int)(x+y)%3/5】:从左到右计算】、【(float)【(a+b)/6】】+(int)x%(int)y

若 x=13,y=20,z=4,下列各表达式的结果是什么?

(1)(z>=y>=x)?1:0  :结合性:从左到右
(2)z>=y&&y>=x
(3)!(x<y)&&!x||z  优先级:! > && > || 即:【【!(x<y)】&&【!x】】||z
(4)【x<y】?x++:++y   
(5)z+=x>y?x++:++y

答:(1)0; (2)0; (3)1; (4)13; (5)25。
本题需要注意的是:(4)中,注意自加操作的前缀和后缀;(5)中"?"优先级大于赋值,
所以先进行条件运算再赋值    z+=【【x>y】?x++:++y】

C:习题2的更多相关文章

  1. Sharepoint学习笔记—习题系列--70-576习题解析 --索引目录

        Sharepoint学习笔记—习题系列--70-576习题解析  为便于查阅,这里整理并列出了70-576习题解析系列的所有问题,有些内容可能会在以后更新. 需要事先申明的是:     1. ...

  2. 《python核心编》程课后习题——第三章

    核心编程课后习题——第三章 3-1 由于Python是动态的,解释性的语言,对象的类型和内存都是运行时确定的,所以无需再使用之前对变量名和变量类型进行申明 3-2原因同上,Python的类型检查是在运 ...

  3. 习题 5: 更多的变量和打印 | 笨办法学 Python

    一. 简述 “格式化字符串(format string)” -  每一次你使用 ' ’ 或 " " 把一些文本引用起来,你就建立了一个字符串. 字符串是程序将信息展示给人的方式. ...

  4. 【WebGoat习题解析】Parameter Tampering->Bypass HTML Field Restrictions

    The form below uses HTML form field restrictions. In order to pass this lesson, submit the form with ...

  5. python核心编程(第二版)习题

    重新再看一遍python核心编程,把后面的习题都做一下.

  6. SQL简单语句总结习题

    创建一个表记员工个人信息: --创建一个表 create table plspl_company_info( empno ) not null, ename ) not null, job ), ma ...

  7. 《Python核心编程》部分代码习题实践(持续更新)

    第三章 3-10 交换异常处理方式 代码: #makeTextFile.py #!/usr/bin/env python 'makeTextFile.py' import os ls = os.lin ...

  8. web实验指导书和课后习题参考答案

    实验指导书 :http://course.baidu.com/view/daf55bd026fff705cc170add.html 课后习题参考答案:http://wenku.baidu.com/li ...

  9. 《C++primer》v5 第1章 开始 读书笔记 习题答案

    从今天开始在博客里写C++primer的文字.主要以后面的习题作业为主,会有必要的知识点补充. 本人也是菜鸟,可能有不对之处,还望指出. 前期内容可能会比较水. 1.1略 1.2略 1.3 cin和c ...

  10. Oracle数据库习题

    以下习题都已Oracle数据库中默认表为主体 1.列出至少有一个员工的所有部门. SELECT DISTINCT D.DNAME FROM EMP E,DEPT D WHERE E.DEPTNO=D. ...

随机推荐

  1. 利用requests, beautifulsoup包爬取股票信息网站

    这是第一次用requests, beautifulsoup实现爬虫,此次爬取的是一个股票信息网站:http://www.gupiaozhishi.net.cn. 实现非常简单,只是为了demo使用的数 ...

  2. C++如何求程序运行时间

    C++中常用clock()函数求运行时间,返回值类型为clock_t,返回值是程序运行到本次调用clock()函数经过的clock数,头文件为<time.h>. 用法: 1.求开始时间s= ...

  3. #Week4 Logistic Regression

    一.Classification 主要讨论二元分类. 线性回归处理分类问题显然不靠谱,所以采用逻辑回归. 二.Hypothesis Representation 假设函数变为\(h_\theta(x) ...

  4. VScode像Codeblocks一样,不启动调试和Debug直接运行

    要是配置C++ 编译环境,这边走 用了VScode童鞋,都知道,写C++是不保留窗口的,除非打上断点或者: system("pause"); 这里给大家分享一种不需要,F5或者Ct ...

  5. P6474 [NOI Online #2 入门组] 荆轲刺秦王

    P6474 [NOI Online #2 入门组] 荆轲刺秦王 bfs+差分+卡常 本来我其实是场内选手,但是因为记错提交时间,晚了半小时才交,交不上了,就自动降级为了场外选手 题面复杂,不简述了 首 ...

  6. P4370 [Code+#4]组合数问题2

    题目要求当\(0\leq a\leq b\leq n\)时,\(k\)个\(\tbinom{b}{a}\)的和的最大值 观察杨辉三角形,可以发现,最大的\(\tbinom{b}{a}\),为\(\tb ...

  7. Python安装第三方模块出错 No module named setuptools

    在安装 zabbix-alerta 第三方模块时候报错 python setup.py install 此时需要安装 setuptools 模块, 这里用自动化脚本安装 wget https://bo ...

  8. 网络流 A - PIGS POJ - 1149 最大流

    A - PIGS POJ - 1149 这个题目我开始感觉很难,然后去看了一份题解,写的很好 https://wenku.baidu.com/view/0ad00abec77da26925c5b01c ...

  9. LTE基站开局流程

    1.全局参数配置 MOD  ENODEB :修改基站 ADD  CNOPERATOR: 添加运营商 ADD  CNOPERATORTA:添加跟踪区(TA) 2.设备参数配置(机柜.机框.RRU.光纤链 ...

  10. 你知道Spring是怎么解析配置类的吗?

    彻底读懂Spring(二)你知道Spring是怎么解析配置类的吗? 推荐阅读: Spring官网阅读系列 彻底读懂Spring(一)读源码,我们可以从第一行读起 Spring执行流程图如下: 如果图片 ...