C语言补考复习题(毕业、重修和二级学位)
关于补考的题型分布:
一、选择题 20道,2分/道
二、填空题 10道,2分/道
三、程序填空题 1道,10分/道
四、程序改错题 1道,10分/道
五、程序设计题 1道,20分/道
以下是各题型的复习题,我将在之后陆续发布视频讲解,请大家认真复习,祝考试顺利!
一、选择题
第1题
设有定义int a;float b;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入
876<空格> 854.0<回车>,a和b的值分别是().
A:876和543.000000
B:87和6.000000
C:87和543.000000
D:76和543.000000
第2题
若有如下语句,则程序段().
int x=6;
do{printf("%d\n",x-=2);}
while(--x);
A:输出的是1
B:输出的是4和1
C:输出的是3和0
D:是死循环
3题
以下叙述中正确的是 ().
A:C语言比其他语言高级
B:C语言可以不用编译就能被计算机识别执行
C:C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D:C语言出现的最晚,具有其他语言的一切优点
第4题
以下选项中,能用作数据常量的是().
A:115L
B:118
C:1.5e1.5
D:o115
第5题
数字字符0的ASCII值为48,若有以下程序:
main(){char a='1',b='2';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是().
A:3,2
B:50,2
C:2,2
D:2,50
第6题
现有定义int a;double b;float c;char k;,则表达式a/b+c-k值的类型为().
A:int
B:double
C:float
D:char
第7题
C语言中,char类型数据占().
A:1个字节
B:2个字节
C:4个字节
D:8个字节
第8题
若有代数式如"图片1.jpg"
(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的
C语言表达式是().
A:sqrt(fabs(pow(n,x)+exp(x)))
B:sqrt(fabs(pow(n,x)+pow(x,e)))
C:sqrt(abs(n^x+e^x))
D:sqrt(fabs(pow(x,n)+exp(x)))
第9题
有以下程序段:
#include <stdio.h>
int j; float y; char name[50];
scanf("%2d%f%s", &j, &y, name);
当执行上述程序段,从键盘上输入55566 7777abc 后,y的值为().
A:566
B:55566
C:7777
D:566777
第10题
以下叙述中正确的是().
A:调用printf函数时,必须要有输出项
B:使用putchar函数时,必须在之前包含头文件stdio.h
C:在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D:调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码
第11题
有以下程序:
#include <stdio.h>
main()
{ 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:输出无定值
第12题
执行下面程序片段的结果是().
int x=23;
do{ printf("%d",x--); }while(!x);
A:打印出321
B:打印出23
C:不打印任何内容
D:陷入死循环
第13题
若x是int型变量,且有下面的程序片段:
for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%d\n"),x);
上面程序片段的输出结果是().
A:**3
##4
**5
B:##3
**4
##5
C:##3
**4##5
D:**3##4
**5
第14题
以下叙述正确的是().
A:在C程序中,main函数必须位于程序的最前面
B:C程序的每行中只能写一条语句
C:C语言本身没有输入输出语句
D:在对一个C程序进行编译的过程中,可发现注释中的拼写错误
第15题
下列是用户自定义标识符的是().
A:w1
B:3xy
C:int
D:LINE-3
第16题
以下叙述中正确的是().
A:C语言程序将从源程序中第一个函数开始执行
B:可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C:C语言规定必须用main作为主函数名,程序从此开始执行,在此结束
D:main作为用户标识符,用以命名任意一个函数作为主函数
第17题
下列叙述中错误的是().
A:C程序可以由多个程序文件组成
B:一个C语言程序只能实现一种算法
C:C程序可以由一个或多个函数组成
D:一个C函数可以单独作为一个C程序文件存在
第18题
以下叙述不正确的是().
A:一个C源程序可由一个或多个函数组成
B:一个C源程序必须包含一个main函数
C:C程序的基本组成单位是函数
D:在C程序中,注释说明只能位于一条语句的后面
第19题
下列数据中,为字符串常量的是().
A:A
B:"house"
C:How do you do.
D:$abc
第20题
以下数据中,不正确的数值或字符常量是().
A:0
B:5L
C:o13
D:9861
第21题
下面四个选项中,均是不合法的用户标识符的选项是().
A:c-b goto int
B:A P0 do
C:float la0A
D:123 temp goto
第22题
设有如下程序段:
int x=2004,y=2008;
printf("%d\n",(x,y));
则以下叙述中正确的是
A:输出值为2004
B:输出值为2008
C:运行时产生出错信息
D:输出语句中格式说明符的个数少于输出项的个数,不能正确输出
第23题
下面程序的运行结果是()
main()
{
int y=5, x=14; y=((x=3*y,x+6),x-1);
printf("x=%d,y=%d",x,y);
}
A:x=27,y=27
B:x=12,y=13
C:x=15,y=14
D:x=y=27
第24题
有以下程序,其中%u表示按无符号整数输出
main(){ unsigned int x=0xFFFF; /* x的初值为十六进制数 */
printf("%u\n ",x);
}
程序运行后的输出结果是().
A:-1
B:65535
C:32767
D:0xFFFF
第25题
从循环体内某一层跳出,继续执行循环外的语句是().
A:break语句
B:return语句
C:continue语句
D:空语句
第26题
C语言的if语句中,用作判断的表达式为().
A:任意表达式
B:逻辑表达式
C:关系表达式
D:算术表达式
第27题
以下4个选项中,不能看作一条语句的是().
A:;
B:a=5,b=2.5,c=3.6;
C:if(b!=5)x=2;y=6;
D:return j;
第28题
C语言源程序的基本单位是().
A:过程
B:函数
C:子程序
D:标识符
第29题
求平方根函数的函数名为().
A:cos
B:abs
C:pow
D:sqrt
第30题
一个C语言程序是由().
A:一个主程序和若干子程序组成
B:函数组成
C:若干过程组成
D:若干子程序组成
第31题
下面程序中的错误的行是().
(1)main()
(2){
(3)int a[3]={1};
(4)int i;
(5)scanf("%d",&a);
(6)for(i=1;i<3;i++) a[0]=a[0]+a[i];
(7)printf("%f\n",a[0]);
(8)}
A:3
B:6
C:7
D:5
第32题
若有说明:int a[ ][4]={0,0};,则下面不正确的叙述是().
A:数组a的每个元素都可得到初值0
B:二维数组a的第一维大小为1
C:因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1
D:只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
第33题
设有数组定义:char array[ ]="China";,则数组array所占的空间为().
A:4个字节
B:5个字节
C:6个字节
D:7个字节
第34题
对两个数组a和b进行如下初始化:
char a[ ]="ABCDEF";
char b[ ]={'A','B','C','D','E','F'};
则以下叙述正确的是().
A:数组a与数组b完全相同
B:数组a与数组b长度相同
C:数组a与数组b中都存放字符串
D:数组a比数组b长度长
第35题
如下程序段的输出结果是().
#include<stdio.h>
void main()
{ int n=9;
while(n>6)
{n--;printf("%d",n);} }
A:987
B:876
C:8765
D:9876
第36题
在下列选项中,没有构成死循环的是().
A:int i=100;
while(1)
{i=i%100+1;
if(i>100)break;
}
B:for(;;);
C:int k=10000;
do{k++;}while(k>10000);
D:int s=36;
while(s)--s;
第37题
在while(x)语句中的x与下面条件表达式等价的是().
A:x= =0
B:x= =1
C:x!=1
D:x!=0
第38题
有以下程序(注:字符a的ASCII码值为97) :
#include <stdio.h>
main()
{ char *s ={ "abc" };
do
{printf ("%d", *s%10); ++s; }
while ( *s );
}
程序运行后的输出结果是().
A:789
B:abc
C:7890
D:979899
第39题
变量的指针,其含义是指该变量的().
A:值
B:地址
C:名
D:一个标志
第40题
字符串指针变量中存入的是().
A:字符串
B:字符串的首地址
C:第一个字符
D:字符串变量
二、填空
第1题
C语句句尾用___________结束.
第2题
C语言中一个函数由函数首部和_____________两部分组成.
第3题
C语言的三种基本结构是______________结构、选择结构、循环结构.
第4题
c语言程序的三种基本结构是:顺序结构,选择结构,______________结构.
第5题
预处理命令行都必须以______________号开始.
第6题
从函数的形式上看,函数分为无参函数和______________两种类型.
第7题
若在程序中用到strlen()函数时,应在程序开头写上包含命令# include "______________".
第8题
C语言中,数组元素的下标下限为______________.
第9题
将数组a的首地址赋给指针变量p的语句是______________.
第10题
变量的指针,其含义是指该变量的______________.
第11题
一个C程序总是从______________开始执行.
第12题
一个C源程序中至少应包括一个______________函数.
第13题
执行下列语句后,*(p+1)的值是______________.
char s[3]="ab",*p;
p=s;
第14题
按内存排列顺序, 数组char a[2]中的所有元素是a[1]和______________.
第15题
若有定义:double w[10];
则w数组元素下标的上限为___________,下限为___________.
三、程序填空
第1题
请补充main函数,该函数的功能是:从键盘输入一个字符串并保
存在字符str1中,把字符串str1中下标为偶数的字符保存在字符
串str2中并输出。
例如,当str1="cdefghij",则str2="cegi"。
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#define LEN 80
void main()
{
char str1[LEN],str2[LEN];
char *p1=str1,*p2=str2;
int i=0,j=0;
printf("Enter the string:\n");
scanf(________________);
printf("***the origial string***\n");
while(*(p1+j))
{
printf("_____________",*(p1+j));
j++;
}
for(i=0;i<j;i+=2)
*p2++=*(str1+i);
*p2='\0';
printf("\nThe new string is:%s\n",_________________);
}
第2题
功能:从键盘输入一个大写字母赋给c1,要求改用小写字母输出。
#include <stdio.h>
void main()
{
char c1,c2;
c1= _____________________;
c2= _____________________;
printf("%c,%c",c1,c2);
}
第3题
题目:下列程序从键盘输入所需数据,求出z的值并输出,要求输出结果保留2位小数。
#include <stdio.h>
__________________
main()
{ int x;
double y,z;
scanf("__________________",&x,&y);
z=2*x*sqrt(y);
printf("z=_______________",z);
}
四、程序改错
题目:下列程序的功能为:按下列公式计算并输出x的值。其中a和b的值由键盘输入。请纠正程序中存在的错误,使程序实现其功能。
(一共三个错误,都在每个FOUND下面那一行)公式: x=2ab/(a+b)^2(平方)
-------------------------------------------------------*/
#include <stdio.h>
main()
{
int a,b;
double x;
/***********FOUND1***********/
scanf("%d,%d",a,b);
/***********FOUND2***********/
x=2ab/(a+b)(a+b);
/***********FOUND3***********/
printf("x=%d\n",x);
}
FOUND1改为:______________________________________
FOUND2改为:______________________________________
FOUND3改为:______________________________________
五、程序设计
第1题
题目:已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。
#include <stdio.h>
void main( )
{
int math, eng, comp, average;
/**********Program**********/
/********** End **********/
printf("math = %d, eng = %d, comp = %d, average = %d\n", math, eng, comp, average);
}
第2题
题目:从键盘给n赋值,分别求出 n 的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。
#include <stdio.h>
void main( )
{
int n, digit1, digit2, digit3;
/**********Program**********/
/********** End **********/
printf("整数%d的个位数字是%d, 十位数字是%d, 百位数字是%d\n", n, digit1, digit2, digit3);
}
第3题
题目:计算表达式 1 + 2 + 3 + ...... + 100的值。
#include <stdio.h>
void main( )
{
int i, sum;
/**********Program**********/
/********** End **********/
printf("sum = %d\n", sum);
}