资源描述
习题1
一、选择题
1.所有C函数的结构都包括的三部分是( )。
A.语句、花括号和函数体
B.函数名、语句和函数体
C.函数名、形式参数和函数体
D.形式参数、语句和函数体
2.C程序由( )组成。
A.子程序 B.主程序和子程序 C.函数 D.过程
3.下面属于C语言标识符的是( )。
A.2ab B.@f C.?b D._a12
4.C语言中主函数的个数是( )。
A.2个 B.1个 C.任意个 D.10个
5.下列关于C语言注释的叙述中错误的是( )。
A.以“/*”开头并以“*/”结尾的字符串为C语言的注释内容
B.注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义
C.程序编译时,不对注释作任何处理
D.程序编译时,需要对注释进行处理
6.下列不是C语言的分隔符的是( )。
A.逗号 B.空格 C.制表符 D.双引号
7.下列关于C语言的关键字的叙述中错误的是( )。
A.关键字是C语言规定的具有特定意义的字符串,通常也称保留字
B.用户定义的标识符不应与关键字相同
C.ANSI C标准规定的关键字有64个
D.ANSI C标准规定的关键字有32个
8.在Visual C++ 6.0环境下,C源程序文件名的默认后缀是( )。
A..cpp B..exe C..obj D..dsp
9.若在当前目录下新建一个名为“LX”的工程,则在当前目录下生成的工作区文件名为( )。
A.LX.DSW B.LX.OPT C. LX.DSP D.LX.C
10.面可能不影响程序正常运行的是( )。
A.语法错误 B.逻辑错误 C.警告提示 D.算法错误
二、填空题
1.C程序是由 构成的,一个C程序中至少包含 。因此, 是C程序的基本单位。
2.C程序注释是由 和 所界定的文字信息组成的。
3.开发一个C程序要经过编辑、编译、 和运行4个步骤。
4.在C语言中,包含头文件的预处理命令以 开头。
5.在C语言中,主函数名是 。
6.在C语言中,行注释符是 。
7.在C语言中,头文件的扩展名是 。
8.在Visual C++ 6.0 IDE中,按下Ctrl键的同时按 键,可以运行可执行程序文件。
9.在Visual C 6.0环境中用RUN命令运行一个C程序时,这时所运行的程序的后缀是 。
10.C语言源程序文件的扩展名是 ;经过编译后,生成文件的后缀是
;经过连接后,生成文件的扩展名是 。
三、程序设计题
1.编写程序输出以下图案
*
* S *
*
2.试编写一个C程序,输出如下信息。
*****************
You are welcome!
--------------------------
3.编写程序,分别用scanf函数和getchar函数读入两个字符送给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符。上机运行此程序,比较用putchar函数和printf函数输出字符的特点。
习题2
1. 简述算法的概念。
2. 算法应具备哪些特性?
3. 分别说明什么是自然语言描述法,什么是框图语言描述法,什么是伪语言描述法,什么是N-S流程图语言描述法,它们的优缺点各是什么?
4. 在结构化程序设计方法中,有哪几种基本结构?
5. 请用程序流程图语言和N-S流程图语言分别写出打印乘法九九口诀表的算法。
6. 仿照例2-3的程序,依照流程图,编写例2-1的程序。
7. 仿照例2-3的程序,依照流程图,编写例2-2的程序。
8. 仿照例2-3的程序,依照流程图,编写例2-4的程序。
9. 仿照例2-3的程序,依照流程图,编写例2-5的程序。
习题3
一、 选择题
1.关于C语言数据类型的叙述,正确的是( )。
A. 枚举类型不是基本类型 B. 数组不是构造类型
C. 变量必须先定义后使用 D. 不允许使用空类型
2.对于C语言源程序,以下叙述错误的是( )。
A. 可以有空语句
B. 函数之间是平等的,在一个函数内部不能定义其他函数
C. 程序调试时如果没有提示错误,就能得到正确结果
D. 注释可以出现在语句的前面
3.下面关于C语言用户标识符的描述,正确的是( )。
A. 不区分大小写 B. 用户标识符不能描述常量
C. 类型名也是用户标识符 D. 用户标识符可以作为变量名
4. 以下( )是正确的变量名。
A. 5f B. if C. f.5 D. _f5
5.以下( )是正确的常量。
A. E-5 B. 1E5.1 C. 'a12' D. 32766L
6.以下( )是正确的变量名。
A. a.bee B. -p11 C. int D. p_11
7.以下( )是正确的字符常量。
A. "c" B. '\\'' C. 'W' D. "\32a"
8.以下( )是不正确的字符串常量。
A. 'abc' B. "12'12" C. "0" D. " "
9.以下( )是错误的整型常量。
A. -0xcdf B. 018 C. 0xe D. 011
10.以下( )是正确的浮点数。
A. e3 B. .62 C. 2e4.5 D. 123
11.若有说明语句:char c='\95'; 则变量c包含( )个字符。
A. 1 B. 2 C. 3 D. 语法错误
12.若有定义:int a=2; 则正确的赋值表达式是( )。
A. a-=(a*3) B. double(-a) C. a*3 D. a*4=3
13.语句x=(a=3,b=++a);运行后,x、a、b的值依次为( )。
A. 3,3,4 B. 4,4,3 C. 4,4,4 D. 3,4,3
14.语句a=(3/4)+3%2;运行后,a的值为( )。
A. 0 B. 1 C. 2 D. 3
15.char型变量存放的是( )。
A. ASCII代码值 B. 字符本身 C. 十进制代码值 D. 十六进制代码值
16.若有定义:int x,a;则语句x=(a=3,a+1);运行后,x、a的值依次为( )。
A. 3,3 B. 4,4 C. 4,3 D. 3,4
17.若有定义:int a; 则语句a=(3*4)+ 2%3;运行后,a的值为( )。
A. 12 B. 14 C. 11 D. 17
18.若有定义:int a,b; double x;则以下不符合C语言语法的表达式是( )。
A. x%(-3) B. a+=-2 C. a=b=2 D. x=a+b
19.若有定义:int x=2,y=3;float i;,则以下符合C语言语法的表达式是( )。
A. x=x*3=2 B. x=(y==1) C. i=float(x) D. i%(-3)
20.设double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是( )。
A. a/b/c*e*3 B. 3*a*e/b/c C. 3*a*e/b*c D. a*e/c/b*3
二、填空题
1.设a为short型变量,描述“a是奇数”的表达式是 。
2.若有定义:int a=5,b=2,c=1;则表达式a-b<c||b= =c的值是 。
3.已知char c=’A’;int i=1;j=0;执行语句j=!c&&i++后,i和j的值分别是 和 。
4.若有定义:float x=3.5;int z=8;则表达式 x+z%3/4 的值为 。
5.若有定义:int a=1,b=2,c=3,d=4,x=5,y=6;则表达式 (x=a>b)&&(y=c>d) 的值为 。
6.若有定义:int a=2,b=3; float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是 。
7. 若有定义:int b=7; float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是 。
三、程序设计题
1.已知圆的半径r=2.5,圆柱高h=1.8,求圆周长,圆柱体积。
2.要将“China”译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编写1程序,用赋初值的方法使c1、c2、c3、c4、c5 五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5分别变为‘G’、‘l’、‘m’、‘r’、‘e’并输出。
(1)输入事先已编好的程序,并运行该程序,分析是否符合要求。
(2)改变c1、c2、c3、c4、c5、的初值为:‘T’、‘o’、‘d’、‘a’、‘y’,对译码规律作如下补充:‘W’用‘A’ 代替,‘X’用‘B’代替,‘Y’用‘C’代替,‘Z’用‘D’代替。修改程序并运行。
(3)将译码规律修改为:将字母用它前面的第4个字母代替,例如:‘E’用‘A’ 代替,‘Z’用‘V’代替,‘D’用‘Z’代替,‘C’用‘Y’代替,‘B’用‘X’代替,‘A’用‘W’代替。修改程序并运行。
3.输入秒数,将它按小时、分钟、秒的形式来输出。例如输入24680 秒,则输出6小时51分20秒。
习题 4
一、选择题
1.有如下程序
main( )
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c++;
printf("%d\n",c);
}
该程序的输出结果是( )
A) 0 B) 1 C) 2 D) 3
2.对do...while语句错误的描述是:( )
A)可构成多重循环结构 B)循环次数不可能为0
C)循环次数可能为0 D)先执行后判断
3.任何复杂的程序,都是由( )构成的。
A)分支结构、顺序结构、过程结构 B)循环结构、分支结构、过程结构
C)顺序结构、循环结构、分支结构 D)循环结构、分支结构
4.设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句( )。
if (x=y) printf(" x is equal to y.");
A)语法错 B)不能判断x和y是否相等
C)编译出错 D)能判断x和y是否相等
5.C语言中规定,if语句的嵌套结构中,else总是( )配对。
A)与最近的if B)与第一个if
C)与按缩进位置相同的if D)与最近的且尚未配对的if
6.以下有关switch语句的说法正确的是( )。
A)break语句是语句中必需的一部分
B)在switch 语句中可以根据需要使用或不使用break语句
C)break语句在switch 语句中不可以使用
D)在switch 语句中的每一个case都要使用break语句
7.当执行以下程序时,( )。
#include<stdio.h>
void main()
{
int a;
while(a=5)
printf("%d ",a--);
}
A)循环体将执行5次 B)循环体将执行0次
C)循环体将执行无限次 D)系统会死机
8.以下if语句错误的是( )。
A)if (x<y) x++; y++; else x--; y--;
B)if (x) x+=y;
C)if (x<y);
D)if (x!=y) scanf (" %d",&x) ; else x++;
9.以下说法错误的是( )。
A)do...while语句与while语句的区别仅是关键词“while”出现的位置不同
B)while语句是先进行循环条件判断,后执行循环体
C)do...while是先执行循环体,后进行循环条件判断
D)while、do...while和for语句的循环体都可以是空语句
二、填空题
1.有程序段:
int i=0,a=1;
while(i<9)
{ i++;
++a;
}
其中,循环条件是___,循环控制变量是___,循环体是____,修改循环条件的语句是___,该循环条件将执行____次,结束循环时,i的值是___,a的值是___。
2.有程序段:
int i=0,a=1;
for(i=1;i<10;i++)
{
a++;
}
其中,循环条件是___,循环控制变量是___,循环体是____,修改循环条件的语句是___,该循环条件将执行____次,结束循环时,i的值是___,a的值是___。
3.以下程序的输出结果是_______.
#include <stdio.h>
main()
{ int n=12345,d;
while(n!=0){ d=n%10; printf("%d",d); n/=10;}
}
4.以下程序判断输入的整数能否被3或7整除,请填空。
main()
{ int x,f=0;
scanf( “%d”,&x );
if ( 1 )
( 2)
if(f==1) printf(“YES\n”);
else printf(“NO\n”);
}
三、程序阅读题
1.阅读以下程序,若输入60,写出程序运行结果。
#include<stdio.h>
void main()
{ int x;
scanf("%d ",&x);
if (x>=60)
printf("pass");
else
printf("fail");
}
2.阅读以下程序,若输入5,写出程序运行结果。
#include <stdio.h>
int main( )
{ int i, n;
double fact;
scanf("%d", &n);
fact=1;
for(i=1;i<=n;i++)
fact*=i;
printf("%.0f\n", fact);
}
四、程序设计题
1. 输入一个整数,输出它的绝对值 。
2. 编写程序,统计从键盘输入的一行字符的个数。
3. 编写程序,用穷举法输出100以内的素数。
4.求1!-2!+3!-4! +……+49!-50!的和。
5. 输入10个字符,分别统计出其中空格或回车键、数字和其他字符的个数。
习题5
一、选择题
1.执行下面的程序段后,变量k中的值为( )。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A. 不定值 B. 33 C. 30 D. 10
2.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是( )。
void main()
{ char s[100];
int c, i;
scanf("%c",&C);
scanf("%d",&i);
scanf("%s",s);
printf("%c,%d,%s \n",c,i,s);
}
A. 123,456,789 B. 1,456,789 C. 1,23,456,789 D. 1,23,456
3.有如下程序:
void main()
{
int n[5]={0,0,0},i,k=2;
for(i=0;i<k;i++)
n[i]=n[i]+1;
printf("%d\n",n[k]);
}
该程序的输出结果是( )。
A. 不确定的值 B. 2 C. 1 D. 0
4.有如下程序
void main()
{
int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<i;j++) s+=a[i][j];
printf("%d\n",s);
}
该程序的输出结果是( )。
A. 14 B. 15 C. 16 D. 17
5.以下程序的输出结果是( )。
void main()
{
int i, x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d,",x[i][2-i]);
}
A. 1,5,9 B. 1,4,7 C. 3,5,7 D. 3,6,9
6.以下程序的输出结果是( )。
main()
{ char w[][10]={ "ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s\n",w[k]);
}
A. ABCD B. ABCD C. EFG D. EFGH
FGH EFG JK IJKL
KL IJ O
M
7.下面语句中不正确的是( )。
A. static int a[5] = {1 , 2 , 3 , 4 , 5 }; B. static int a[5] = {1 , 2 , 3 };
C. static int a[ ] = {0 , 0 , 0 , 0 , 0 }; D. static int a[5] = {0*5};
8.若有说明:int a[ ][4] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } , 则数组第一维的大小为( )。
A.2 B.3 C.4 D.不确定的值
9.若定义static int a[2][2] = {1,2,3,4};则a数组的各数组元素分别为( )。
A. a[0][0] = 1 , a[0][1] = 2 , a[1][0] = 3 , a[1][1] = 4
B. a[0][0] = 1 , a[0][1] = 3 , a[1][0] = 2 , a[1][1] = 4
C. a[0][0] = 4 , a[0][1] = 3 , a[1][0] = 2 , a[1][1] = 1
D. a[0][0] = 4 , a[0][1] = 2 , a[1][0] = 3 , a[1][1] = 1
10.下列语句中,不正确的是( )。
A. static int a[2][3] = {1 , 2 , 3 , 4 , 5 , 6};
B. static int a[2][3] = {{1}, { 4 , 5}};
C. static int a[ ][3] = {{1}, {4}};
D. static int a[ ][ ] = {{1 , 2 , 3 }, {4 , 5 , 6}};
二、填空题
1. 设有数组定义为: char array [ ]="China"; 则数组 array所占的空间为 。
2. main()
{ char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
程序执行后的输出结果是 。
3. main()
{ int i,k,a[10],p[3]:
k=5;
for (i=0;i<10;i++) a[i]=i;
for (i=0;i<3;i++) p[i]=a[i*(i+1)];
for (i=0;i<3;i++) k=k+p[i]*2;
printf("%d\n",k);
}
程序执行后的输出结果是 。
4.main()
{ char ch[7]={ "65ab21"};
int i,s=0
for(i=0;ch[i]>='0' && ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
程序运行的结果是 。
三、程序设计题
1.从键盘上输入10个整数,并放入一个一维数组中,然后将其前5个元素与后5个元素对换,即:第1个元素和第10个元素互换,第二个元素和第9个元素互换……分别输出数组原来的值和对换后各元素的值。
2.设有如下两组数组:
A:2,8,7,6,4,28,70,25
B:79,27,32,41,57,66,78,80
编写一个程序,把上面两组数据分别读入两个数组中,然后把两个数组中对应下标的元素相加,即2+79,8+27……并把相应的结果放入第三个数组中,最后输出第三个数组的值。
3.编写程序,把下面的数据输入到一个二维数组中:
25 36 78 13
12 26 88 93
75 18 22 32
56 44 36 58
然后执行以下操作:
a.输出矩阵两条对角线上的数;
b.交换第一行和第三行的位置,然后输出。
习题6
一、 选择题
1.以下正确的函数定义形式是( )。
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);
2.在C语言中,以下说法不正确的是( )。
A.实参可以是常量、变量或表达式
B.形参可以是常量、变量或表达式
C.实参可以为任意类型
D.形参应与其对应的实参类型一致
3.以下说法正确的是( )。
A.定义函数时,形参的类型说明可以放在函数体内
B.return后边的值不能为表达式
C.如果函数值的类型与返回值类型不一致,以函数值类型为准
D.如果形参与实参的类型不一致,以实参类型为准
4.C语言允许函数值类型缺省定义,此时该函数值默认的类型是( )。
A.float型
B.int型
C.long型
D.double型
5.C语言规定,函数返回值的类型是由( )。
A.return语句中的表达式类型所决定
B.调用该函数时的主调函数类型所决定
C.调用该函数时系统临时决定
D.在定义该函数时所指定的函数类型所决定
6.以下错误的描述是( )。
函数调用可以:
A.出现在执行语句中
B.出现在一个表达式中
C.作为一个函数的实参
D.作为一个函数的形参
7.以下正确的描述是( )。
在C语言程序中:
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和调用均可以嵌套
8.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。
A.extern B.register C.auto D.static
9.若有以下宏定义:
#define N 2
#define Y(n) ((N+1)*n)
则执行语句Z=2*(N+Y(5));后结果是( )。
A.语句有误 B.Z=34 C.Z=70 D.Z无定值
10.在宏定义#define PI 3.14159中,用宏名PI代替一个( )。
A.常量 B.单精度数 C.双精度数 D.字符串
二 填空题
1.以下程序的运行结果是_____________。
#include "stdio.h"
void main()
{
int I=2,x=5,j=7;
fun(j,6);
printf("I=%d;j=%d;x=%d\n",I,j,x);
}
fun(int I,int j)
{
int x=7;
printf("I=%d;j=%d;x=%d\n",I,j,x);
}
2.以下程序的运行结果是____________。
#include "stdio.h"
void main()
{
void increment();
increment();
increment();
increment();
}
void increment()
{
int x=0;
x+=1;
printf("%d ",x);
}
3.以下程序的运行结果是_____________。
#include "stdio.h"
void main()
{
int max(int x,int y);
int a=1,b=2,c;
c=max(a,b);
printf("max is %d\n",c);
}
int max(int x,int y)
{
int z;
z=(x>y)?x:y;
return(z);
}
4.以下程序的运行结果是_____________。
#include "stdio.h"
void main()
{
void add(int x,int y, int z);
int x=2,y=3,z=0;
printf("(1)x=%d y=%d z=%d\n",x,y,z);
add(x,y,z);
printf("(3)x=%d y=%d z=%d\n",x,y,z);
}
void add(int x,int y, int z)
{ z=x+y;
x=x*x;
y=y*y;
printf("(2)x=%d y=%d z=%d\n",x,y,z);
}
三、程序设计题
1.编写一个函数,判断一个数是不是素数。在主函数中输入一个整数,输出是否是素数的信息。要求:
(1) 编写一个函数prime(n),返回给定整数n是否为素数。
(2) 编写一个主函数,输入一个整数,调用(1)中的函数,判断此整数是否为素数,并输出结果。
2.函数fun的功能是:统计各年龄段的人数并存到b数组中,n个人员的年龄放在a数组中。年龄为1到9的人数存到b[0]中,年龄为10到19的人数存到b[1],年龄为20到29的人数存到b[2], 年龄为30到39的人数存到b[3],年龄为40到49的人数存到b[4], 年龄为50岁以上的人数存到b[5]中。
例如,当a数组中的数据为:
9、18、27、38、59、33、14、75、38。
调用该函数后,b数组中存放的数据应是:
1、2、1、3、0、2。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include "stdio.h"
void fun(int a[], int b[], int n)
{
}
void main()
{
int i,a[100]={9,18,27,38,59,33,14,75,38},b[6]={0};
fun(a,b,9);
printf("The result is: ");
for (i=0; i<6;i++)
printf("%d ",b[i]);
printf("\n");
}
习题7
一、 单项选择题
1.设有定义:int n1=0,n2,*p=&n2,*q=&n1; 以下赋值语句中与n2=n1;语句等价的是( ) 。
A.*p=*q; B.p=q; C.*p=&n1; D.p=*q;
2.若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是( )。
A.随机值 B.0 C.x的地址 D.p的地址
3. 以下定义语句中正确的是( )。
A. char a='A'b='B'; B. float a=b=10.0;
C. int a=10,*b=&a; D. float *a,b=&a;
4. 有以下程序
main()
{ int a=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p; p=q; q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是( )。
A. 8,7,8,7 B. 7,8,7,8 C. 8,7,7,8 D. 7,8,8,7
5. 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是( )。
A. scanf(“%d”, pA) ; B. scanf(“%d”, A) ;
C. scanf(“%d”,& pA) ; D. scanf(“%d”,* pA) ;
6. 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( )。
A.p=1; B.*q=2; C.q=p; D.*p=5;
7. 有以下程序
void fun(char *a, char *b)
{ a=b; (*A)++; }
main ()
{ char c1=’A’, c2=’a’, *p1, *p2;
p1=&c1; p2=&c2; fun(p1,p2);
printf(“%c%c\n”,c1,c2);
}
程序运行后的输出结果是( )。
A. Ab B. aa C. Aa D. Bb
8. 若程序中已包含头文件stdio.h, 以下选项中,正确运用指针变量的程序段是( )。
A. float *i=NULL; B. float a,*f=&a;
scanf("&d",f); *f=10.5;
C. char t=’m’, *c=&t; D. long *L;
*c=&t; L=\0;
9. 有以下程序
#inc1ude <stdio.h>
main()
{ printf("%d\n", NULL); }
程序运行后的输出结果是( )。
A. 0 B. 1 C. -1 D. NULL没定义,出错
10. 已定义以下函数:
fun (int *p)
{ return *p; }
该函数的返回值是( )。
A. 不确定的值 B. 形参p中存放的值
C. 形参p所指存储单元中的值 D. 形参p的地址值
11. 下列函数定义中,会出现编译错误的是( )。
A.void max(int x, int y,int *z) B. int max(int x,y)
{ *z=x>y ? x:y; } { int z ;
z=x>y ? x:y;
return z ;
}
C. max (int x,int y) D. int max(int x,int y)
{ int z; { return(x>y?x:y) ; }
z=x>y?x:y; return(z);
}
展开阅读全文