c语言1 3章考试,江苏省计算机等级考试C语言第一至三章考点

本文介绍了C语言的基础知识,包括语法、常量、变量、运算符和表达式、控制结构如分支和循环,以及输入输出函数。重点讨论了多选题中的正确选项,例如C程序的构成、常量的表示、运算符的优先级和短路效应,以及循环控制语句的工作原理。同时,提到了格式输入和输出函数的使用,如scanf和printf。
摘要由CSDN通过智能技术生成

第一、二章节必会试题:

1.以下叙述中正确的是_________(多选)

A)在编译时可以发现注释中的拼写错误

B)C语言程序的每一行只能写一条语句

C)main(){}必须位于程序的开始D)C语言程序可以由一个或多个函数组成

E)main()函数至少必须有一条语句

F)C程序总是从main函数的第一条语句开始执行

G)C程序总是在执行完main函数的最后一条语句后结束

第三章必会试题:

考点1:常量与变量

在程序执行过程中,值保持不变的量称为常量。变量是指向内存中的一个单元符号。在C语言中,规定变量只能由字母、数字和下划线组成,且第一个字符必须是字母、数字或下划线,常量分为:整型常量、实型常量、字符型常量、字符串型常量、标识符常量

(1)整型常量分为:八进制(以0开头,由数字0—7组成,且第一个数字必须为0),十进制(由数字0—9组成,且第一个数字不能为0),十六进制(以0x开头,由数字0—9,a--f组成)

(2)整型变量:基本整型(int)、短整型(short int)、长整型(long int),长整型以L结尾,无符号整数以U结尾(3)实型常量:十进制小数形式与指数形式(用e表示,e之前必须要有数字,且在E或e之后的指数必须是整数),

(4)实型变量:float,double

(5)字符型常量:用一对单括号引起来的一个字符或以’\’开头的字符序列

(6)字符变量:char

(7)字符串型常量:用一对双括号引起来的若干个字符,在字符串的最后有结束标记”\0”,在C语言中没有专门的字符串变量,只能以字符数组存储

1.设有四个常数:①4e0.5、②’\87’、③0x5A、④” \” ”,其中符合C语法规则的常量是_____

2.以下常数表示中不正确的是____________

A.’\55’B.’55’C.’\x55’D.0x55

3.以下选项中,不能作为合法常量的是_________

A.0X2AB.015C.2.8e9D.123.6e0.4

4.设有声明语句:char a=’\72’;则变量a__________

A.包含一个字符B.包含2个字符C.包含三个字符D.声明不合法

5.以下哪个是合法的常量______________

A.35uB.1.25e3.4C.’\96\45’D.0387

6.以下选项中不能用做用户自定义标识符的是__________

A. length_B._lengthC.length.dD.For

考点2:运算符与表达式

(1)算术运算符:单目运算符:+,-双目运算符:+,-,*,/,%

(2)关系运算符:> , =, <=,==,!=,关系成立时,运算结果为整数1,否则为整数0

(3)逻辑运算符:&&(逻辑与),||(逻辑或),!(逻辑非),优先级从高到底:!, ||, &&

&&与||有短路效应,&&只要第一个为假,则后面不再管结果,||只要有一个为真,则后面不再管结果

(4)赋值运算符:=,+=,-=,*=,/=,%=,^=

(5)自增、自减运算符:++,--,只有变量才能自增,常量是不能自增的

(6)逗号运算符:其运算顺序为从左到右依次计算各个表达式的值,并把最后一个表达式的值作为整个表达式的值

(7)sizeof()运算符:用来计算某种类型或数据做占用的字节数

(8)条件运算符:条件表达式”?:”为三目运算符,要求有三个操作对象

(9)各类运算符号的顺序:首先执行:!,++,--,然后算术运算符,然后关系运算符,然后逻辑运算符,然后条件运算符,然后赋值运算符,然后逗号运算符

例题:

1.设有语句int a=6, b=3; float x=8,y; y=b/a*x/2;,则y的值是________________

2.有数学式3xy/5ab中,变量x和y的取值为整数,而变量a和b的取值为实数,在C程序中对应的正确表达式是______________________

A.3/5*x*y/a/bB.3*x*y/5/a/bC.3*x*y/5*a*bD.3/a/b/5*x*y

3..设有语句”float x=2.9;int a=5,b;b=a+x;”,则变量b的值是___________

4.若a1、a2、a3和a4均为整型变量,则以下选项中符合C语法规则的表达式是______

A.a1=25%3.3B.a2=a1+a3=3*5C.a3=078D.a4=0xa2

5.设有语句”int a,b,c;a=b=c=5;”,执行语句”b+=++a>b &&++c>b;”,则a,b,c的值分别为____

6.设x为整数,C中能正确的表达数学式0≤x<5的是_______

A.0<=x<5B.x=0||x=1||x=2||x=3||x=4C.x>=0||x<5D.!(x<0||x>=5)

7.设有变量说明:”short int a=0,b=0;”,则表达式sizeof(‘a’+’b’)的值是_____

A.1B. 2C.4D.8

8.设有语句:char s[ ]=”Rep\0Ch”; int m=sizeof(s);则m的值是_________

9.执行以下语句后,a的值为___________ int a=0,m=3,n=10;a=(m++,m+n);

10.设有说明语句int a=3,b=2,c; c=--a==b++;则a,b,c的值为_____________________

11.设有说明语句”int a,b;”,执行语句”b=(a=3*5,a*4),a+15;”后,b的值为________

第四章考点:

考点一:字符输入函数(getchar)

考点二:格式输入函数(scanf)

1。设有说明语句:double x,不能通过scanf语句正确的输入数据的语句是________

A.scanf(“%lf”,x);B.scanf(“%f”,&x);C.scanf(“%lf”,&x)D.scanf(“%le”,&x);

例题2.

考点三:字符输出函数(putchar)

考点四:格式输出函数(printf)

2:如有声明”float f=123.45678;”,则执行语句”printf(“%.3f”,f);”后,输出结果为()

A.1.23e+02B.123.457C.123.456780D.1.234e+02

第五、六章考点:

考点一:分支结构(单分支与多分支结构)

1.以下函数中输入5,3,输出结果是_______

#include

int main()

{

int a,b,max;

scanf(“%d,%d”,&a,&b);

if(a>b)

max=a;

else

max=b;

printf(“%d%d”,a,b);

return 0;

}

考点二:switch语句

1.执行以下程序段后,变量i的值是___________

int i=10;

switch(i)

{

case 9: i+=1

case 10: i+=1;

case 11: i+=1;

default: i+=1;

}

考点三:while语句

1.在while(!a)中,其中的!a与表达式_____________等价

A.a==0B.a==1C.a!=1D.a!=0

2.有以下程序段,while循环次数为__________

int k=0;

while(k=1)k++;

考点四:do…while语句

1.以下程序输出的第一行是____________,第二行是______________

#include

void main(void)

{

int x=6;

do

{

x-=2;

printf(“%d\n”,x);

}while(--x);

}

2.设整型变量x的当前值为3,执行以下循环语句后,输出结果为___________

do

{

x-=2;

printf(“%d\n”,x);

}while(!(--x));

3。下面关于while与do……while循环语句的叙述中正确的是______

A.do……while的循环体至少执行一次

B.while的循环体至少执行一次

C.do……while的循环体不能是复合语句

D.do……while允许从循环体外跳转到循环体内

考点五:for循环语句

1.循环语句for(;;)中,执行情况是___________

A.至少执行一次B至少执行两次C.可能执行,也可能不执行D.不执行

2.有如下程序:

void main()

{

int i,sum=0;

for(i=1;i<=3;i++)sum+=i;

printf(“%d\n”,sum);

}

该程序的执行结果是_______________

A.6B.3C.无穷循环D.0

3.设有语句”for(int i=5,sum=0;i<10,sum++;i++) sum+=i;”,则for()语句的执行情况是_____________________

A.循环0次B.循环4次C.循环5次D.循环6次

考点六:break,continue

1。执行以下程序后,输出___________

int s1=0,s2=0,s3=0,s4=0;

for(int t=1;t<=4;t++)

switch(t)

{

case 4: s1++;break;

case 3: s2++;break;

case 2: s3++;

default: s4++;

}

printf(“%d,%d,%d,%d\n”,s1,s2,s3,s4);;

2.continue语句只能用在______________语句中

3.下面程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空:

#include

#include

main()

{

int i;

int j;

for(i=0;_____________;i++)

{

j=i*10+6;

if(_____________) continue;

else printf(“%d\n”, j);

}

}

考点3:switch语句

例题:下列程序运行后的输出结果,第一行是__________(2008春)

#include

main()

{

int i,a=0,c=2;

switch(++a,a*c)

{case 1: printf(“1”);

case 2: printf(“2”);

case 3:printf(“3\n”);break;

default:printf(“other\n”);

}

}

第六章:循环控制

考点1:while与do while语句实现循环

例题:程序”int x=3; do{printf(“%d”,x--);}while(!x);”的执行结果是____________(2006秋)

A.321B.2C.3D.无穷循环

例题:以下程序运行时输出的结果是_____________(2007秋)

main()

{

int s=1,n=235;

do

{

s*=n%10;

n/=10;

}while(n);

printf(“%d\n”,s);

}

例题:以下程序运行后输出结果的第一行为____________,第二行为_______________(2007春)

#include“stdio.h”

void main()

{ int i=5;

do

{switch(i%2)

{ case 0:i--;break;

case 1:i--;break;

}

i--;printf(“%d\n”,i);

}while(i>0);

}

考点二:for循环

例题:若有声明”int i,k=1;unsigned j;”,则下列语句执行时会出现无限循环的语句是___________(2008春)

A.for(j=15;j>0;j-=2) k++;B.for(j=0;j<15;j+=2)k++;

C.for(i=0;i<15;i+=2) k++;D.for(i=15;i>0;i-=2)k++;

例题:以下程序运行时输出结果为____________________(2007秋)

#include

void main()

{ int i,sum=0;

for(i=0;i<5;i++)

{switch(i)

{case 0:

case 1:sum++;

case 3:sum++;

case 4: sum--;break;

}

}

printf(“%d\n”,sum);

}

例题:以下程序执行后,输出结果的第一行为____________,第二行为________________(2006秋)

#include

void main()

{int w=0,i;

for(i=0;i<3;i++)

switch(w++)

{case 0:

case 1:

case 2:

case 3: printf(“%d\n”,w++);

}

}

例题:下列关于语句的说法中正确的是___________________(2004秋)

A.do…while语句的循环体至少会被执行1次

B.while语句的循环至少会被执行1次

C.for语句的循环体至少会被执行1次

D.在c语言中只能用do,do…while或for语句实现循环

例题:定理:对于任意一个正整数都可以找到至少一串连续奇数,它们的和等于该正整数的立方。例如:33=27=7+9+11,43=64=1+3+5+7+9+11+13+15。以下程序用[2,20]之间的所有正整数验证该定理。(2004秋)

#include

main()

{

long n,i,k,j,p,sum;

for(n=2;n<=20;n++)

{k=n*n*n;

for(i=1;i

{for(j=i;sum=0;__________;j+=2)sum+=j;

if(sum==k)

{printf(“\n%ld*%ld*%ld=%ld=”,n,n,n,sum);

for(p=i;p<___________ printf>

break;

}

}

if(i>=k/2) printf(“\n error!”);

}

}

例题:以下程序采用递推法计算

考点三:break,continue语句

例题:以下程序运行后输出结果的第一行为_______________-,第二行为_______________(2007春)

#include

void main()

{int i=5;

do

{switch(i%2)

{ case 0:i--;break;

case 1:i--;break;

}

i--;printf(“%d\n”,i);

}while(i>0);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值