一篇文章,把你的C语言拉满绩点

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 一篇文章,把你的C语言拉满绩点

易错选择题


1.关于C语言的说法

①关键字,函数名,标识符

解析:

A.C语言的关键字是非常重要的,既不能作为变量名,也不可以作为函数名

B.标识符的有有效长度最多包含63位

D.自定义的标识符见名知义,能随意定义,只是说见名之义就更好理解

故本题选C

②关于定义

解析:

A.字符变量可以再定义时赋初始值,如:char ch=A;

C.同一英文字母的大小写对应的ASCII码值不一样

D.转义字符以反斜杠 "\" 开头

故本题选B

2.合法常量

解析:

B 实型字面值常量有两种表示方式:小数形式和指数形式

小数形式:由最前面的确定正负号数字0-9和小数点组成,不允许有其他符号;

指数形式;包括指数和尾数两个不可缺少的部分,

用符号E(e)分割;E(e)左边是尾数,为十进制整数或小数形式的实数右边为指数,必须为十进制整数,表示乘以10的多少次方

so,选B

解析:

A中160是十进制数,-0xffff是十六进制数,011是八进制数,均合法

B中01a非法,因为a不是八进制数码

C中986,012非法,不能包含“,”,0668非法,因为8不是八进制数码

D中0x非法,因为后面没有有效的十六进制数码

故选A

3.转义字符

本题选C

如想了解B选项退格,点此链接在这篇文章有详解:

http://t.csdnimg.cn/fGZaU  错题->4.转义字符

看此段代码

int main()
{
  printf("123\b2\n");               //"\b"表示退回一个光标
  printf("\'\n");                   //"\'"表示 '
  printf("\\ \n");                  //"\\"表示 \
  printf("a\bre\' hi\' y\\\bou\n"); 
  return 0;
}

控制台输出:

4.scanf和printf类型

(1)scanf类型

先看代码

int main()
{
    int a,b,c;
    scanf("a=%d b=%d c=%d",&a,&b,&c);
 
    printf("%d %d %d",a,b,c);
 
    return 0;
}

若想给a输入123,给b输入456,给c输入666,该怎么在控制台输入呢?

你是不是这样子输入? 123 456 666?

答案是不行的

scanf函数,格式是怎样的,就要怎么输出

so,控制台输入:a=123 b=456 c=666.

(2)scanf和printf类型

解析:

A.printf输出的数据隐含对齐

B.scanf和printf是C语言提供的输入和输出函数

D.printf 输出数据所占的宽度由系统决定

so,本题选C

(3)printf输出

看此段代码:

int main()
{
  int a = 2, b = 5;
 
  printf("a=%%d b=%%d\n", a, b);
  return 0;
}

解析:

C 语言中用 "%%" 打印输出字符 "%", 输出为 %d%d 两个普通字符

而不是格式控制符 "%d" 的含义

5.sizeof类型

在内存中存储字符时,除了要存储有效字符外,还要在最后存储一个’\0’作为结束标志;

通常利用字符数组来存字符串,如果是直接给数组赋值字符串,系统会自动存’\0’;

如果是将数组元素依次存储的话,需要将’\0’也作为一个元素给数组赋值。

so,本题选C

如果感兴趣,可以去看看这篇文章,关于strlen和sizeof的计算

http://t.csdnimg.cn/fGZaU ->重点题型1.->strlen和sizeof的计算

6.++与--

①后置++和后置--

先看此代码

int main()
{
  int a = 5;
  if (a++ > 5)
    printf("%d\n", a);
  else
    printf("%d\n", a--);
  return 0;
}

输出的结果是什么呢?

前置++:先使用,后+1;

后置--:   先使用,后-1;

(a++ > 5)先使用 ,5 !=5,不满足if循环

后+1, a=6;

进入else,输出a--,先使用, a=6,输出6,再-1.

②前置++和后置++

先看代码:

int main()
{
  int a = 1, b = 2, c = 3;
  if (a++ == 1 && (++b == 3 || c++ == 3))
    printf("a=%d b=%d c=%d\n", a, b, c);
 
  return 0;
}

a,b,c分别输出什么?

后置++,先使用,后+1

前置++,先+1,后使用

a++,x先使用a=1

++b,2+1=3

||或表达式左边为真,右边不再执行

所以c=3

结果为:

7.逻辑表达式

(1)|| 运算

(2)&& 和 || 运算

下列说法是否正确?

对于逻辑表达式: a++ ||  b++,  设a的值为1,则求解表达式的值后,b的值会发生改变;

对于逻辑表达式: a++ && b++,设a的值为0,则求解表达式的值后,b的值会发生改变;

解析:

都不对.

对于逻辑表达式,其中b的值不会因为表达式的结果发生改变

(3)逻辑表达式运算

已知x=43,ch='A',y=0;则( x>=y && ch < 'B' && !y )

输出的结果是?

( (x >= y) && ( ch< ' B ' ) && ( !y ) )

43>0,为真       ' A '< 'B',为真   !为非的意思,非0为真

so,结果输出1

(4)!非

循环语句while( !E );中的表达式 !E等价于

E == 0;

(5)整体表达式

先看此代码

int main()
{
  int a = 3, b = 1, c = 0;
 
  int ret = (a <= b <= c);
 
  printf("%d\n", ret);
 
  return 0;
}

结果为 1,为什么呢?

(6)宏替换

先看此段代码

#define MOD(x,y) x%y
int main()
{
  int a = 13, b = 94;
  printf("%d\n", MOD(b, a + 4));
}

宏替换是直接替换的,所以这里替换后应该是b % a + 4,先算%后算+,也就是3+4得7 

8.switch语句

switch( 表达式 )

{

       case 1:

         break;

}

9.continue

先看代码

int main()
{
  int a = 0, s = 0;
  int i = 0;
  for (;;)
  {
    if (i == 3 || i == 5) continue;
    if (i == 6) break;
      i++;
      s += i;
  }
  printf("%d\n", s);
  return 0;
}

continue:终止最近的循环中的当前迭代并立即开始下一次迭代;

因此当i=3时,终止此次循环并进行下一次循环,而这个过程中i的值一直未发生变化,所以会陷入死循环

10.while循环

执行次数①

先看此代码

int main()
{
  int i = 0, x = 0;
  while (!x && i < 3)
  {
    x++;
    i++;
  }
  return 0;
}

这段代码执行循环多少次?

第一轮x=0,i=0则!x即为!0=1,while(1)可以循环,所以第一轮可以运行

第二轮i=1 ,x=1,这个时候!x为!1=0,0与1,对或错,所以第二轮不运行

程序只执行一次

执行次数②continue

先看此代码

int main()
{
  int i = 0;
  while (i < 10)
  {
    if (i < 1)
      continue;
    if (i == 5)
      break;
    i++;
  }
  return 0;
}

while循环的次数是?

在C语言中continue和break都可以放在循环体中,

continue代表跳过后续语句直接进入下一轮循环

而break代表跳出循环

so,本题答案为死循环

11.for循环

①关于for循环的说法

解析:

A,for循环常用于循环次数已知的循环中,但也可以用于循环次数未知的循环中(可以循环0次也可以死循环)

B,for循环先判断表达式,根据表达式的值来决定是否循环

C,break的作用就是跳出循环的

②for循环和continue

先看此代码

int main()
{
  int sum = 0, j = 0;
  for (j = 0; j < 6; j++)
  {
    if (j % 2)continue;
    sum++;
  }
  printf("%d\n", sum);
  return 0;
}

输出什么?

解析:

执行次数③

若循环体 S 中不改变 和 n(n > 0) 的值,也不包含 continue 和 break 语。

循环语“for(i=0; i=n; i++)S;”中循环体 S 被执行的次数为多少?

答案为:n+1;

由for(初始化;条件判断;调整)

可知循环次数为0-n的次数,S被执行次数为n+1次

12.函数

①说明

函数若无返回值,则它一定无形参。请问这个说法是正确的吗?

不对 x

一个函数可以有参数,没有返回值;

              可以没有参数,有返回值;

              可以没参数,没返回值;

             可以有参数,有返回值。

参数和返回值没有必然联系.

②函数传参

解析:

函数定义fun第一个参数为char类型,第二个为float数组类型。

选项A:“abc”属于字符串常量,与定义函数参数不匹配,所以A错误。

选项B:fun函数为void没有返回值,所以无法赋值给t,所以B错误。

选项C:第二个参数2.8通常编译器默认是double类型,后面加上f即为float类型,即2.8f。因此和定义函数参数类型不匹配,所以C错误。

选项D:字符型变量本质底层存储的还是数字(字符ASCII编码),所以数字传参也是没问题的。

故本题选D

13.数组

看此段代码

void main()
{
  char ch[80] = "123abcdEFG*&";
  int j;
  puts(ch);
  for (j = 0; ch[j] != '\0'; j++)
    if (ch[j] >= ' A' && ch[j] <= 'Z')
      ch[j] = ch[j] + 'e' - 'E';
    puts(ch);
}
目录
相关文章
一篇文章让你看懂C语言字符函数和内存函数(上)
一篇文章让你看懂C语言字符函数和内存函数(上)
|
1月前
|
存储 C语言
【C语言基础】一篇文章搞懂指针的基本使用
本文介绍了指针的概念及其在编程中的应用。指针本质上是内存地址,通过指针变量存储并间接访问内存中的值。定义指针变量的基本格式为 `基类型 *指针变量名`。取地址操作符`&`用于获取变量地址,取值操作符`*`用于获取地址对应的数据。指针的应用场景包括传递变量地址以实现在函数间修改值,以及通过对指针进行偏移来访问数组元素等。此外,还介绍了如何使用`malloc`动态申请堆内存,并需手动释放。
|
2月前
|
存储 程序员 C语言
揭秘C语言:这些核心知识你掌握了吗?一篇文章带你突破编程基础,开启高效编码之旅!
【8月更文挑战第22天】C语言作为编程基石,以简洁高效著称,历经数十年仍备受欢迎。本文通过梳理C语言的核心概念,帮助读者深入理解并提升技能。适合各水平读者。基础语法从`main`函数开始,如示例中的“Hello, World!”程序所示。C语言强调头文件包含与语句结尾的分号。变量和数据类型丰富多样,如`int`、`float`、`char`等,合理选择可优化内存使用和性能。指针用于间接访问内存,是C语言的关键特性。控制结构如循环和分支使程序逻辑更灵活。函数支持代码复用与模块化。深入学习还需掌握预处理指令、文件操作等高级特性。通过系统学习与实践,你将能更熟练地使用C语言,构建高效稳定的应用。
47 4
|
2月前
|
C语言
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
|
2月前
|
C语言
【C初阶——指针4】鹏哥C语言系列文章,基本语法知识全面讲解——指针(4)
【C初阶——指针4】鹏哥C语言系列文章,基本语法知识全面讲解——指针(4)
|
2月前
|
存储 编译器 C语言
【C初阶——指针3】鹏哥C语言系列文章,基本语法知识全面讲解——指针(3)
【C初阶——指针3】鹏哥C语言系列文章,基本语法知识全面讲解——指针(3)
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的C语言在线评测系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的C语言在线评测系统附带文章源码部署视频讲解等
43 0
|
4月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的C语言在线评测系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的C语言在线评测系统附带文章和源代码部署视频讲解等
23 0
|
5月前
|
C语言
以c语言为基础实现的简易扫雷游戏(游戏代码附在文章最后,如有需要请自取)
以c语言为基础实现的简易扫雷游戏(游戏代码附在文章最后,如有需要请自取)
241 1
|
5月前
|
存储 搜索推荐 编译器
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别