C程序设计各知识点题集
更新时间:2024-03-08 10:15:01 阅读量: 综合文库 文档下载
C语言知识点及题型集
一、 单项选择题
1. 基础知识
1、以下说法中正确的是( )
A、C语言程序总是从第一个的函数开始执行
B、在C语言程序中,要调用的函数必须在main()函数中定义 C、C语言程序总是从main()函数开始执行
D、C语言程序中的main()函数必须放在程序的开始部分 答案:C
2、下列字符序列中,可用作C标识符的一组字符序列是( )。
A) S.b,sum,average,_above B) class,day,lotus_1,2day C) #md,&12x,month,student_n! D) D56,r_1_2,name,_st_1 答案:D
3、以下标识符中,不能作为合法的C用户定义标识符的是()。 A) a3_b3 B) void C) _123 D) IF 答案:B
4、设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D) A、 6.500000 B、 6 C、 5.500000 D、 6.000000 5、以下的选择中,正确的赋值语句是()。
A) a=1,b=2 B) j++ C) a=b=5; D) y=int(x) 答案:C
6、在C语言中,能代表逻辑值“真”的是()。
A) True B) 大于0的数 C) 非0整数 D) 非0的数 答案:D
7、下列程序的输出结果是()。 main()
{char c1=97,c2=98; printf(\}
A) 97 98 B) 97 b C) a 98 D) a b 答案:B
8、执行下列语句后变量x和y的值是()。 y=10;x=y++;
A) x=10,y=10 B) x=11,y=11 C) x=10,y=11 D) x=11,y=10 答案:C
9、设a=12,且a定义为整型变量。执行语句a+=a-=a*=a;后a的值为()。 A) 12 B) 144 C) 0 D) 132 答案:C
10、已知year为整型变量,不能使表达式(year%4==0&&year0!=0)||year@0==0的值为“真”的数据是()。
A) 1990 B) 1992 C) 1996 D) 2000 答案:A
11、下列程序的输出结果是()。 main()
{int a=7,b=5;
printf(\}
A) 0 B) 5 C) 1 D) 不确定值 答案:A
12.以下关于运算符优先顺序的描述中正确的是( )。 A) 关系运算符<算术运算符<赋值运算符<逻辑运算符 B) 逻辑运算符<关系运算符<算术运算符<赋值运算符 C) 赋值运算符<逻辑运算符<关系运算符<算术运算符 D) 算术运算符<关系运算符<赋值运算符<逻辑运算符 答案:C
13、已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是( ) A、scanf(\
B、scanf(\、scanf(\ D、scanf(\答案:C
14 有以下程序 #include
{ char c1,c2;
c1=?A?+?8?-?4?; c2=?A?+?8?-?5?;
printf(“%c,%d\\n”,c1,c2); }
已知字母A的ASCII码为65,程序运行后的输出结果是( ) (A) E,68 (B) D,69 (C) E,D (D)输出无定值 答案:A
15、若有以下类型说明语句:char w; int x; float y; double z;则表达式 w*x+z-y 的结果类型是( )
A、float B、char C、int D、double 答案:D
16、关于局部变量,下列说法正确的是 ( )。 A、 定义该变量的程序文件中的函数都可以访问。
B、 定义该变量的函数中的定义处以下的任何语句都可以访问。 C、 定义该变量的复合语句的定义处以下的任何语句都可以访问。 D、 局部变量可用于函数之间传递数据。 答案:D
17.若变量已正确说明为float类型,要通过语句scanf(\%f %f \给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:( )
A) 10<回车> B) 10.0,22.0,33.0<回车> 22<回车> 33<回车>
C) 10.0<回车> D) 10 22<回车> 22.0 33.0<回车> 33<回车> 答案:B 2.三大结构
(1) 下列程序的运行结果是( ) #include
char c1 = '6', c2 = '0';
printf(\}
A.因程序格式不合法,提示出错信息 B.6,0,6 C.6,0,7 D.6,0,5
(2) 下列程序的运行结果是( ) #include
double x = 2.0, y; if(x<0.0) y = 0.0;
else if(x<10.0) y = 1.0/x; else y = 1.0; printf(\ }
A.0.000000 B.0.250000 C.0.500000 D.1.000000
(3) 下列程序的运行结果是( ) #include
int a = 2, b = -1, c = 2; if( b < 0) c = 0; else c = c + 1; printf(\}
A.0 B.1 C.2 D.有语法错误
(4) 下列程序的运行结果是( ) #include
{
int a = 100;
if( a > 0) printf(\ else printf(\ }
A.0 B.1 C.100 D.-1
(5) 下列程序的运行结果是( ) #include
int x = 1, a = 0, b = 0;
switch(x) { case 0: b = b + 1; case 1: a = a + 1; case 2: a = a + 1; b = b + 1; }
printf(\ }
A.a=2,b=1B.a=1,b=1 C.a=1,b=0 3.函数
A. double fun(int x,int y) B. double fun(int x; int y) C. double fun(int x, int y); D. double fun(int x,y) 答案:A
D.a=2,b=2
1.以下正确的函数定义形式是( )。
2. C语言中,简单变量作为实参时,它和对应形参之间的数据传递方式是( )。 A. 地址传递 答案:B
3. 在C语言程序中以下正确的描述是( )。 A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义和函数的调用均不可以嵌套 D. 函数的定义和函数的调用均可以嵌套
B. 单向值传递
C. 由实参传递给形参,再由形参传递给实参 D. 由用户指定传递方式
答案:B
4. 若数组名作为函数调用的参数,则传递给形参的是( )。 A. 数组的首地址 答案:A
5. 若调用一个函数,且此函数中没有return语句,则正确的说法是( )。 A. 没有返回值 答案:D
6. 在C语言中,以下说法正确的是( )。 A. 实参和与其对应的形参各占用独立的存储单元 B. 实参和与其对应的形参共占用一个存储单元 C. 只有当实参与其对应的形参同名时才共占用存储单元 D. 形参是虚拟的,不占用存储单元 答案:A
7. 以下正确的说法是( )。
A.用户若需要调用标准库函数,调用前必须重新定义
B.用户可以重新定义标准库函数,如若此,该函数将失去原有定义 C. 系统不允许用户重新定义标准库函数
D. 用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。
答案:B
8. 以下不正确的说法是( )。 A. 实参可以是常量,变量或表达式 B. 形参可以是常量,变量或表达式 C. 实参可以为任意类型
D. 如果形参和实参的类型不一致,以形参类型为准 答案:B
9.C语言规定,函数返回值的类型是由( )决定的。 A. return语句中的表达式类型 B. 调用该函数时的主调函数类型 C. 调用该函数时由系统临时 D. 在定义函数时所指定的函数类型 答案:D
10. 以下正确的函数定义是( )。 A. double fun(int x, int y) { z=x+y; return z; }
B.double fun(int x,y)
{ int z; return z }
B.返回若干个系统默认值
C. 能返回一个用户所希望的函数值
D. 返回一个不确定的值
B. 数组第一个元素的值
D. 数组元素的个数
C. 数组中全部元素的值
C. fun (x,y) D. double fun (int x, int y)
{ int x, y; double z; z=x+y return z } 答案:D 4.数组
{ double z; z=x+y; return z }
1. 在C语言中,引用数组元素时,其数组下标的数据类型允许是(C) A 整型常量 B 整型表达式
C 整型常量或整型表达式 D 任何类型的表达式 2.对以下说明语句的正确理解是(B) int a[10]={6,7,8,9,10};
A 将5个初值依次赋给a[1]至a[5] B 将5个初值依次赋给a[0]至a[4] C 将5个初值依次赋给a[6]至a[10]
D 因为数组长度与数组个数不相同,所以此语句不正确 3.若有说明:int a[3][4];则对a数组元素的非法引用是(D) A a[0][2*1] B a[1][3] C a[4-2][0] D a[0][4] 4.若:int a[3][4]={0};则下面正确的叙述是(D) A 只有元素a[0][0]可得到初值0 B 此说明语句不正确
C 数组a中各元素都可得到初值,但其值不一定为0 D 数组a中每个元素均可得到初值0
5.已有定义:char a[]=\以下叙述中正确的是( C )
A.数组a和b的长度相同 B.a数组长度小于b数组长度 C.a数组长度大于b数组长度
D.上述说法都不对
6.若有定义语句:char s[10]=\,则strlen(s)的值是(A)。 A.7 B. 8 C. 9 D. 10 7.如下代码: int k,a[3][3]={1,2,3,4,5,6,7,8,9}; for(k=0;k<3;k++)
printf(“%d ”,a[k][2-k]); 输出结果为(A)
A 3 5 7 B 3 6 9 C 1 5 9 D 1 4 7 8.判断字符串a和b是否相等,应当使用(D)
A if(a==b) B if(a=b) C if(strcpy(a,b)) D if(strcmp(a,b)==0) 9.有两个字符数组a、b,则以下正确的输入语句是(B) A gets(a,b) B scanf(“%s%s”,a,b); C scanf(“%s%s”,&a,&b); D gets(“a”),gets(“b”); 10.下述描述中错误的是(C) A 字符数组可以存放字符串
B 字符数组的字符串可以整体输入、输出
C 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D 不可以用关系运算符对字符数组中的字符串进行比较 5.结构体
1.在说明一个结构体变量时系统分配给它的存储空间是( D )
A) 该结构体中第一个成员所需存储空间 B) 该结构体中最后一个成员所需存储空间
C) 该结构体中占用最大存储空间的成员所需存储空间 D) 该结构体中所有成员所需存储空间的总和
2. 以下对结构体类型变量的定义中不正确的是( D ) A) #define STU struct student B) struct student STU { int num;
{ int num; float age; float age; }std1; }; std1; C) struct D) struct { int num; { int num;
float age; float age; } student; }std1; struct student std1; 3. 设有以下说明语句
struct stu
{ int a; float b; }stutype; 则下面的叙述不正确的是( C )。
A) struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型 C) stutype是用户定义的结构体类型名 D) a和b都是结构体成员名
4. 定义以下结构体数组 struct c { int x; int y;
}s[2]={1,3,2,7};
语句printf(\的输出结果为( C ) A) 14 B) 6 C) 2 D) 21 5. 根据下面的定义,能输出Mary的语句是( B ) struct person {
char name[9]; int age; };
struct person class[5]={\A) printf(\B) printf(\C) printf(\D) printf(\6. 定义以下结构体数组 struct {
int num;
char name[10];
}x[3]={1,\
语句printf(\的输出结果为(D) A)2,USA B)3,England C)1,china D)2,England
7.执行下面的程序后,输出的结果是( B ) struct abc {int a,b,c;}; void main()
{struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0].a+s[1].b; printf(\,t); }
A) 5 B) 6 C) 7 D) 8 C 6. 指针
1. 有以下程序
#include
{ int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r;
printf(“%d,%d,%d,%d\\n”,m,n,*p,*q); }
程序运行后的输出结果是(B)
A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2 2.以下选项中正确的语句组是(d)
A)char s[];s=”BOOK!”; B) char *s;s={”BOOK!”}; C)char s[10];s=”BOOK!”; D) char *s;s=”BOOK!”; 3. 以下选项中正确的语句组是 若有以下定义 int x[10],*pt=x;
则对x数组元素的正确应用是(C)
A)*&x[10] B)*(x+10) C)*(pt+3) D)pt+3
4.若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是(C) A)scanf(“%f%f”,x,y); B) scanf(“%f%f”,&x,&y); C) scanf(“%lf%le”,px,py); D) scanf(“%lf%lf”,x,y); 7. 文件
(1)下列关于C语言数据文件的叙述中正确的是(D)
A) 文件由ASCII码字符序列组成,C语言只能读写文本文件 B) 文件由二进制数据序列组成,C语言只能读写二进制文件
C) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 D) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 (2)有如下程序
#include
main()
{FILE *fp1;
fp1=fopen(\ fprintf(fp1,\ fclose(fp1); }
若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为(C) A) goodabc B) abcd C) abc D) abcgood (3)以下叙述中错误的是(D)
A) 二进制文件打开后可以先读文件的末尾,而顺序文件不可以 B) 在程序结束时,应当用fclose函数关闭已打开的文件
C) 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据
D) 不可以用FILE定义指向二进制文件的文件指针
(4)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是(B)
A) fopen(\ B) fopen(\ C) fopen(\ C) fopen(\(5)
二、 读程序写结果
1.函数
1.下列程序的执行结果为 ( )。 float f1(float x) {
int k=2; k=k*x; return k;
} void main() {
float b=4.3; printf(\
} 答案:8.6
2.下面程序的输出是 ( )。 #include
char ss[10]=\ strcat(ss,\
printf(\
}
答案:123456789
3. 程序执行时,若输入10,程序的输出结果是( )。 int fun(int n) { if(n==1) return 1; else
return(n+fun(n-1));
} main() { int x,y; scanf(\ y=fun(x);
printf(\ } 答案:55
4. 下面程序的输出是 ( #include } } void main() { int a[5]={1,2,3,4,5},k; fun(a,0,4); for(k=0;k<5;k++) )。 printf(\ \ } 答案:5 4 3 2 1 5. 运行程序时,若从键盘输入asd af aa z67(回车),分析以下程序的输出结果( )。 #include for(i=0;str[i]!=?\\0?;i++) if(str[i]!=? ?) str[j++]=str[i]; str[j]=?\\0?; } void main() { char str[81]; int n; printf(\ gets(str); fun(str); printf(\ } 答案:asdafaaz67 6 . 程序运行后的输出结果是( 64 #include static int x=1; x*=2; return x; } void main() { int i,s=1; for(i=1;i<=3;i++) s*=fun(); printf(\} 7. 以下程序的输出结果是(4) #include int fun(int x,int y) )。 { int m=2; return(x*y-m); } main() { int a=7,b=6; printf(\} 8.以下程序输出结果为(6) #include main() { int k=2,m=1,n; n=fun(k); n=fun(m); printf(\} 2.数组 1.下面程序的运行结果是_____________ void main() { int a[6][6],i,j; for(i=1;i<6;i++) for(j=1;j<6;j++) a[i][j]=(i/j)*(j/i); for(i=1;i<6;i++) { for(j=1;j<6;j++) printf(\ printf(\ } } 2. 下面程序的运行结果是_____________ void main() { int f[10]={1,1},i; for(i=2;i<10;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<10;i++) { if(i%4==0) printf(\ printf(\ } } 三、 程序填空 1. 基础知识 1. 表达式(int)((double)(5/2)+2.5)的值是【4】 2.函数 1.以下程序实现了求两个数的最大公约数,请将程序填写完整。 int divisor(int a,int b) { int r; r=a%b; while(【1】) { a=b;b=r;r=a%b;} return b; } void main() { int a,b,d,t; scanf(\if (a { t=a; a=b; b=t; } d=【2】; printf(\} 答案:【1】r!=0 【2】divisor(a,b) 2.以下函数fun的功能是:将输入的大写字母,先转换为与其对应的小写字母,然后再转换成该小写字母后的第3个字母,返回后输出。例如,若输入的字母为E,输出的字母则为h;若输入的字母为Y,输出的字母则为b。 #include #include if(c>='a' && c<'w') } void main() { char c; c=getchar(); c=【3】; putchar(c); } 答案:【1】c+32 【2】?a?+(c-?a?)& 【3】func(c) 3. 以下程序的功能是用递归方法计算5位同学的年龄,已知第一位学生年龄最小为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。 递归公式如下: #include void main() { int n=5; printf(\【2】); age(n)= age(n-1)+2 (n>1) 10 (n=1) c=c+3; 【2】; else if(c>='x' && c<='z') return c; } 答案:【1】age(n-1)+2 【2】age(n) 4. 编写函数,求数组的最大值,请将程序补充完整。 #include int i,d,a[10]; for(i=0; i<10; i++) scanf(\ d=zmax(【1】); printf(\} int zmax(int x[ ],int n) { int i,d; d=x[0]; for(i=1; i 答案:【1】a,10 【2】d=x[i] 5. 以下函数my_cmp( )的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s my_cmp(char *s,char *t) { while(*s == *t) { if (【1】) return 0; ++s; ++t; } return 【2】; } 答案:【1】*s>*t 【2】*s-*t 3.数组
正在阅读:
C程序设计各知识点题集03-08
基建管理存在的困难及对策03-16
百年中国的王者风水10-07
2018初中英语单词分类汇总及全部单词汇编(打印版)英语单词分类汇总大全02-03
00后能为世界做什么04-20
2014江苏高考英语C篇阅读翻译12-04
客家人的丧葬习俗11-09
浅析计算机在企业财务管理中的应用文献综述04-17
社区中秋节慰问活动策划方案03-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 点题
- 程序设计
- 知识
- 基于CAN总线数据采集设计分析
- 2019高考政治必考十大热点事件语文
- 2015年国考面试福建省国家税务局系统考试录用公务员面试公告
- 武汉市建筑企业招用务工农民劳动合同书
- 运用科技管理 创建精品工程 - 省政府交流doc
- 南京农业大学 美学概论 读书报告 本人亲自整理已过哈哈
- 二级综合医院临床科室基本诊疗技术标准11
- 室内设计中灯光的运用 - 居室灯光设计
- 中国近代史纲要结课论文
- 词语对仗
- 物业公司18年度工作计划
- 幼儿园老师怎么上好一堂公开课 - 图文
- 论通信施工企业品牌战略
- 四年级科学下册 昼夜交替 2教案 首师大版
- 2012广西壮族自治区会计职称考试题库
- 茂湛铁路茂名东至塘口电气化改造工程茂名站站房及相关工程
- 目前最准确的通达信缠论分笔公式
- 好好先生观后感
- 王安石三难苏学士
- 体验制备细胞膜的方法教学设计