C语言易错知识点整理
来源:互联网 发布:端口是什么 怎么查看 编辑:程序博客网 时间:2024/05/24 05:30
C语言易错知识点整理
1.基本概念问题
例题1:一个C语言程序是由( C )组成的。
A) 一个主程序和若干子程序 B) 若干子程序 C) 函数 D) 若干过程
知识点: C语言中的函数可以单独进行编译
例题2:下列关于定点数与浮点数的叙述中错误的是(C)。
A.在实数的浮点表示中,阶码是一个整数
B.整数是实数的特例,也可以用浮点数表示
C.实数的补码是其对应的反码在最后一位加1
D.相同长度的浮点数和定点数,前者可表示数的范围要大于后者
例题3:若有下列定义(设int类型变量占2个字节):int i=8,j=9;则下列语句:printf(”i=%%d,j=%%d\n”,i,j);输出的结果是(B )。
A.i=8,j=9
B.i=%d,j=%d
C.i=%8,j=%9
D.8,9
例题3:C语言文件按数据的存放形式可分为文本文件和二进制文件
2.用户标识符问题
例题:以下不能定义为用户标识符是( D )
A) main; B) _0; C) _int; D) sizeof;
知识点:标识符包括系统关键字、预定义标识符和用户自定义标识符。用户标识符实际上就是系统预定义标识符,也就是系统事先定义好的,可以直接使用的,或者说本身已经具有某种含义,用户可以直接使用,但特殊情况下,还可以重新定义另作他用,比如绝对值函数,abs(),你既可以使用求绝对值,但也可以定义成别的用途,若这样,那么遇到求绝对值,就不能使用abs()啦。但诸如if,else,int等系统有专门的用途,如define是宏定义的关键字,而if的判断语句的关键字
不允许作为他用,这一类称为关键字。编程中,用户需要大量的变量。常量、函数,所以系统允许用户根据需要自己来按要求定义标识符,这一类称为用户自定义标识符。
例题2:以下选项中合法的用户标识符是(B)。
A) long B) _2Test C) 3Dmax D) A.dat
例题3:以下叙述正确的是( D )
A) 可以把define和if定义为用户标识符
B) 可以把define定义为用户标识符,但不能把if定义为用户标识符
C) 可以把if定义为用户标识符,但不能把define定义为用户标识符
D) define和if都不能定义为用户标识符例题4:下列关于C语言用户标识符的叙述中正确的是( C )
A) 用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
B) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头
C) 用户标识符中不可以出现中划线,但可以出现下划线
D) 用户标识符中可以出现下划线和中划线(减号)例题5:C语言编程整个操作的过程是( A )
A)编辑、编译、链接、执行
B)编译、编辑、链接、执行
C)链接、编译、编辑、执行
D)编辑、链接、编译、执行例题6:下列说法不正确的是( A )
A)链接操作将生成扩展名为.lnk的文件
B)编辑过程将生成扩展名为.cpp或.c的文件
C)编译过程将生成扩展名为.obj的文件
C)C编程最终要生成扩展名为.exe的文件
例题7:下列说法中错误的是( DEFJ )
A. 主函数可以分为两个部分:主函数说明部分和主函数体
B. 主函数可以调用任何非主函数的其它函数
C. 任何非主函数可以调用其它任何非主函数
D. 程序可以从任何非主函数开始执行
E.C语言程序中,要调用的函数必须在main()函数中定义
F)C语言不包含依赖硬件的输入/输出语句,其输入/输出功能语句需要手工来编写
G)C语言允许对位、字节、地址这些计算机功能中的基本成分进行操作
H)源文件经过编译链接后生成的可执行程序和源程序是独立的
I.由于C源程序是字符组成,因此可以作为文本文件在任何文本编辑的软件中输入
J)错误调试一般在执行过程进行
3.实参形参数据传递问题
例题:在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B)
A) 地址传递 B) 单向值传递
C) 由实参传给形参,再由形参传回实参 D) 传递方式由用户指定
知识点:4.ASCII码问题及字符串问题
例题1:从键盘上输入"446755"时,下面程序的输出是(C )
#include <stdio.h>
int main()
{ int c;
while((c=getchar())!='\n')
switch(c -'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
default: putchar(c+2);break;
}
printf("\n");
}
A) 888988 B) 668966 C)88898787 D) 66898787知识点:
例题2:表达式“ˊ\0ˊ<ˊAˊ<ˊ0ˊ”的值是 (B)
A.0 B. 1 C.2 D. 语法错误
知识点:从左至右运算
例题3:设有定义语句:char s[10]="ABCD\0\0",则字符型数组s中存放的字符串长度是 4
例题4:已知'a'=97, 'A'=65, 则'\101' 表示 (C)
A. 字符e B. 字符a C. 字符’A’ D. 字符F
例题5:“strlen("\\141\141abc\t")”的返回值是(D)
A. 14 B. 12 C. 13 D. 9
5.++与--问题
例题1:有以下程序
int main( )
{ intx=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是( B )
A)3,2,0 B)3,2,-1 C)4,3,-1 D)5,-2,-5
例题2:设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( C)
A) 3 B) 0 C) -12 D) 9
例题3:下程序的输出结果是
main()
{ int a, b;
for(a=1,b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3==1)
{ b+=3; continue; }
}
printf("%d\n",a);
}
执行后输出结果是:4
例题4:下面程序的运行结果
main()
{char *p="abcdefghi";
while (*p++!='e');
printf("%c\n",*p);
}
执行后输出结果是:f
例题5:下面程序的运行结果
f(int a)
{static int tc=3;
int tb=0;
a=tc++,tb++;
printf("%d,%d\n", tb, tc);
return a;
}
int main()
{ int a=15,i,k;
for(i=0;i<2;i++)
k=f(++a);
printf("%d\n",k);
}
执行后输出结果是:
1,4
1,5
4
例题6:执行下列循环语句后,整型变量x的值是(B)
for (x=1;++x<5;x++) ++x;
A. 4 B. 5 C. 6 D. 7
例题7:设整型变量x、y的值均为6,则表达式x++%(++y+1)的值是:6
例题8:设整型变量k的值为0,则循环语句“while (k++<9) k++;”的循环体一共执行5次。
技巧:加一除二
例题9:下面这个程序的输出结果是__-1__。
#include <stdio.h>
main( )
{ int y=10;
while(y--);
printf("y=%d\n",y);
}
6.函数调用
例题1:有以下程序
char fun(char x , char y)
{ if(x<y) return x;
return y;
}
main( )
{ int a='9',b='8',c='7';
printf("%c\n",fun(fun(a,b),fun(b,c)));
}
程序的执行结果是( D )
A)函数调用出错 B)8 C)9 D)7
例题2:有函数调用fun1(x+y,(y,z),10,fun((x,y―1)));函数fun1有_4_个参数。
例题3:写出下列程序的输出结果
void change(int x,int m)
{ char ch[]={'0','l','2','3','4','5','6','7','8','9'},b[80];
int i=0,r;
while(x)
{ r=x%m; x/=m; b[i++]= ch[r]; }
for(--i; i>=0; i--)
printf("%c",b[i]);
}
#include<stdio.h>
int main()
{ int a,b;
change(10,2);
printf("\n");
change(10,8);
}
答案:1010 12
7.字符数组赋值问题
例题:以下选项中,不能正确赋值的是( A )
A) charstr1[10]; str1="Ctest";
B) char str2[]={'C', 't','e','s','t'};
C) charstr3[20]= "Ctest";
D) char*str4="Ctest";
8.宏定义的暴力替换问题
例题:有以下程序
#define f(x) x*x
main( )
{ int i;
i=f(4+4)/4;
printf("%d\n",i);
}
执行后输出结果是(B)
A)24 B)21 C)16 D)6
知识点:
9.指针结构体
例题:写出下面程序的运行结果
#include <stdio.h>
struct stu
{int age;
char sex;
int*b;
};
struct stu *p;
intc[ ]={80,85,90,95,75};
struct stu member[ ]={18,’m’,&c[0],19,’f’,&c[1],20,’f’,&c[2],21,’m’,&c[3],22,’m’,&c[4]};
int main()
{p=member; p+=1;
printf("%d ",(p++)->age);
printf("%d ",(++p)->age);
printf("%d ",*(++p)->b);
}
执行后输出结果是:19 21 75
10.数据类型问题
例题1:设有实型变量x,则表达式“x=3,x+=3/2”的值是(C)
A. 3 B. 3.0 C. 4.0 D. 4.5
例题2:int k=7;float x=2.5,y=4.7; 则表达式 k%3*(int)(x+y)%2/4 运算后的值是( C )
A. -2.5 B. -0.5 C. 0 D. 2.25
例题3:若有定义“int a=5,b=7;”,则表达式a%=(b%2)运算后,a的值为(A )。
A.0 B.1 C.11 D.3
11.数据存储类型问题
例题1:写出下列程序的输出结果
try( )
{ static int x=3;
x++;
return(x);
}
#include<stdio.h>
int main( )
{ int i, x;
for(i=0; i<=2; i++ )
x=try( );
printf("%d\n", x);
}
答案:6
12.选择结构if的一些问题
例题1:设整型变量x1、x2、x3、y值均为5,执行下列程序段后y值是(A)
if (x1>5) if (x2==5) if (x3<5) y=2;
else y=3;
A. 5 B. 4 C. 3 D. 2
知识点:else总是和最近的if配对!!!
例题2:输入4个整数,要求从大到小的顺序输出。
程序:
13.循环结构的一些问题
例题:输入4个整数,要求从大到小的顺序输出。
程序:编程序实现输出下列图形(不能直接用字符串输出)。
*
***
*****
*******
*****
***
*
程序1:模仿教材例题,利用二维数组
程序2:
14.指针
例题1:若有定义:char s[20]="programming",*ps=s;则不能代表字符'o'的表达式是(A)
A)ps+2 B)s[2] C)ps[2] D)ps+=2,*ps
15.未分类问题
例题1:下面程序段执行后,a的值是(B),输出结果为(C)
int a;
printf("%d \n", (a=4*5, a*4, a+5) );
A. 60 B. 20 C. 25 D. 10
- C语言易错知识点整理
- C语言知识点整理
- C语言基础知识点整理
- c语言知识点问答整理
- 易错知识点整理
- 黑马程序员--C语言基础-字符串相关知识点整理
- C语言基础——知识点笔记整理1
- C语音知识点整理
- 【学习ios之路:C语言】总结整理:学好Object-C---C语言必备知识点
- C++易错知识点整理
- java易错知识点整理
- JavaScript易错知识点整理
- JavaScript易错知识点整理
- PHP 易错知识点整理
- JavaScript易错知识点整理
- JavaScript易错知识点整理
- JavaScript 易错知识点整理
- JavaScript易错知识点整理
- Win7环境下tensorflow环境搭建
- python软件安装
- Average of Levels in Binary Tree(leetcode)
- JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate
- PowerDesigner设置表字符编码 utf-8
- C语言易错知识点整理
- nginx 相对 apache 比较,总结一下
- 机器学习 (一)
- golang有用的库及工具 之 fasthttp客户端 最通用最有效最简单使用方式
- 【实战】模仿设置中心
- Toast之悬浮窗(不需要权限)
- 数据数据
- vue项目构建
- 诡异的Linux磁盘空间被占用问题,根目录满了,df和du占用不一样【转】