C语言试题及答案 (1)

文章《C语言试题及答案 (1)》是由【作文仓库】的会员【我这么冷你怕不怕】为大家整理并分享的,仅供大家参考,欢迎阅读!

第1章 C语言概述习题

1. 单项选择题

(1) C 语言是在 B 语言的基础上产生的。

A. 回车符

B. 冒号

C. 逗号

D. 分号

(2) 在 C 语言中,每个语句必须以 D 结束。

A. 回车符

B. 冒号

C. 逗号

D. 分号

(3) 标识符和关键字间,要用 C 隔开。

A. 回车符

B. 冒号

C. 空格

D. 分号

(4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。

A. 生成可执行目标文件

B. 生成目标文件

C. 输出运行结果

D.自动保存源文件

(5) 下列说法中正确的是( B )。

A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入

B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入

C. 由于C 程序是高级语言程序,因此输入后即可执行

D. 由于 C 程序是高级语言程序,因此它由命令组成

(6) 下列说法中正确的是( A )。

A. C 语言程序由主函数和 0 个或多个函数组成

B. C 语言程序由

主程序和子程序组成

C. C 语言程序由子程序组成

D. C 语言程序由过程组成

(7) 下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体

B. 主函数可以调用任何非主函数的其他函数

C. 任何非主函数可以调用其他任何非主函数

D. 程序可以从任何非主函数开始执行

2. 填空题

(1) C 语言只有 37 个关键字和 9 种控制语句。

(2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。

(3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。

(4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。

(5) C 语言的程序中有特殊含义的英语单词称为保留字。

(6) C 语言标识符的长度是前 8 位有效。

(7) C 语言中,标识符的定义规则是以字母或下划线为开头。

(8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

第2章数据类型运算符和表达式习题

1. 单项选择题

(1) 以下选项中,正确的 C 语言整型常量是 D 。

A. 32L

B. 510000

C. -1.00

D. 567

(2) 以下选项中, D 是不正确的 C 语言字符型常量。

A. 'a'

B. '\x41'

C. '\101'

D.

(3) 在 C 语言中,字符型数据在计算机内存中,以字符的 C 形式存储。

A. 原码

B. 反码

C. ASCII 码

D. BCD码

(4)字符串的结束标志是 C 。

A. 0

B. '0'

C. '\0'

D.

(5) 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为 B 。

A. 算术运算、赋值运算、关系运算

B. 算术运算、关系运算、赋值运算

C. 关系运算、赋值运算、算术运算

D. 关系运算、算术运算、赋值运算

(6)逻辑运算符中,运算优先级按从高到低依次为 D 。

A. &&,!,||

B. ||,&&,!

C. &&,||,!

D. !,&&, ||

(7) 表达式!x||a==b 等效于 D 。

A. !((x||a)==b)

B. !(x||y)==b

C. !(x||(a==b))

D.

(!x)||(a==b)

(8)设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值是 A 。

A. 0,0

B. 0,1

C. 1,0

D. 1,1

(9) int b=0,x=1;执行语句 if(x++) b=x+1; 后,x,b 的值依次为 A 。

A. 2,3

B. 2,0

C. 3,0

D. 3,2

(10) 设有语句 int a=3;,则执行了语句 a+=a-=a*=a; 后,变量 a 的值是 B 。

A. 3

B. 0

C. 9

D. -12

(11) 在以下一组运算符中,优先级最低的运算符是 D 。

A. *

B. !=

C. +

D. =

(12) 设整型变量 i 值为2,表达式(++i)+(++i)+(++i)的结果是

B 。

A. 6

B. 12

C. 15

D. 表达式出错

(13) 若已定义 x 和 y为double 类型,则表达式 x=1,y=x+3/2 的值是 C 。(都为整型)

A. 1

B. 2

C. 2.0

D. 2.5

(14) size of (double)的结果值是 A 。(表是长度)字节

A. 8

B. 4

C. 2

D. 出错

(15)设a=1,b=2,c=3,d=4,则表达式:a

结果为 D 。

A. 4

B. 3

C. 2

D. 1

(16) 设a 为整型变量,不能正确表达数学关系:1010 && a<15

D. !(a<=10) && !(a>=15)

(17)设 f是实型变量,下列表达式中不是逗号表达式的是 D 。

A. f= 3.2, 1.0

B. f>0, f<10

C. f=2.0, f>0

D.

f=(3.2, 1.0)

(18)设ch是 char型变量,其值为 'A',则下面表达式的值是 B 。

ch=(ch>='A'&& ch<='Z')? (ch+32):ch

A. A

B. a

C. Z

D. Z

(19)以下运算符中,结合性与其他运算符不同的是 A 。

A. ++

B. %

C. /

D. +

(20) 以下用户标识符中,合法的是 B 。

A. int

B. nit

C. 123

D. a+b

(21) C 语言中,要求运算对象只能为整数的运算符是 % 。

A. %

B. /

C. >

D. *

(22) PC 机中,'\n'在内存占用的字节数是 A 。

A. 1

B. 2

C. 3

D. 4

(23) 字符串

A. 3

B. 4

C. 6

D. 8

(24) 要为字符型变量a赋初值,下列语句中哪一个是正确的

B 。

A. char a=

B. char a=’3’;

C. char a=%;

D. char a=*;

(25)下列不正确的转义字符是 C 。

A. \\

B. \'

C. 074

D. \0

2. 填空题

(1) C 语言中的逻辑值“真”是用!0 表示的,逻辑值“假”是用 0 表示的。

(2) 符号常量的定义方法是 #define N 10 。

(3) 无符号基本整型的数据类型符为 unsigned int ,双精度实型数据类型符为 double ,字符型数据类型符为 char 。(4) 设c='w',a=1,b=2,d=-5, 则表达式'x'+1>c, 'y'!=c+2,

-a-5*b<=d+1, b==a=2的值分别为 1 、 0 、

1 、表达式错误。

(5)设float x=2.5,y=4.7; int a=7;,表达式x+a%3*(int)(x+y)%2/4的值为 2.5 。

(6) 判断变量a、b 的值均不为0 的逻辑表达式为(a!=0)&&(b!=0) 。

(7) 求解赋值表达式 a=(b=10)%(c=6),表达式值、a、b、c 的值依次为 4,4,10,6 。

(8) 求解逗号表达式 x=a=3,6*a 后,表达式值、x、a 的值依次为18,3,3 。

(9) 数学式a/(b*c)的 C语言表达式 a/(b*c) 。

第3章顺序结构程序设计习题

1. 选择题

(1)printf(

A. f=3.48%

B. f=3.5%

C. f=3.48% %

D. f=347.8%

(2) printf(

A. a,97

B. a 97

C. 97,a

D. 97 a

(3)scanf(

A. 'A'

B. A \

C.

D. 以上都不对

(4) 若一个int 类型的数据占 2 字节,则程序段:int x=-1;printf(

A. 65535, -1

B. -1,65535

C. 32767, 32768

D. 32768,32767

(5) 在 TC 中,getchar、putchar、printf、scanf 四个函数,均包含在头文件 B

中。

A. math.h

B. stdio.h

C. stbio.h

D.

stdlib.h

(6)复合语句是用 C 括起来的语句组。

A. ( )

B. [ ]

C. { }

D. < >

(7) 下列格式符中,哪一个可以用于以八进制形式输出整数

C 。

A. %d

B. %8d

C. %o

D. %ld

(8) 下列格式符中,哪一个可以用于以十六进制形式输出整数

B 。

A. %16d

B. %8x

C. %d16

D. %d

(9) a 是int类型变量,c是字符变量,下列输入语句中哪一个是错误的 B 。

A. scanf(

B. scanf(

C. scanf(

D. scanf(

(10) 要使double x; long a;的数据能正确的输出,输出语句应是

D 。

A. printf(

B. printf(

C. scanf(

D. printf(

2. 程序改错题(以下各个程序段均有 5 个错误,请先找出错误的位置,然后再改正)

(1) 以下程序的功能是,从键盘输入一个字符并鸣笛输出。

#include

mian() //main()

{ char c //char c;

getchar(c);//c = getchar();

putchar('\007') ; /*鸣笛*/

c=putchar(); //putchar(c);

//}

(2) 以下程序的功能是,输入长方形的两边长(边长可以取整数和实数),输出它的面积和周长。

main //main()

{

int a,b,s,l; //double a,b,s,l;

scanf(

s=a*b;

l=a+b; //l=(a+b)*2;

printf(

}

3. 写出程序运行结果

(1)

main()

{

int a,b;

scanf(

printf(

}

运行时输入:12345678 //输出:68

(2)

main()

{

int a=3,b=5,x,y;

x=a+1,b+6;

y=(a+1,b+6);

printf(

}

输出:x=4

y=11

第4章选择结构程序设计习题

1. 单项选择题

(1)选择结构程序设计的特点是___B____。

A. 自上向下逐个执行

B. 根据判断条件,选择其中一个分支执行

C. 反复执行某些程序代码

D. 以上都是

(2) 假定所有变量均已正确定义,下列程序段运行后x 的值是__B_。a=b=c=0,x=35;

if(!a) x--; else if(b); if(c) x=3; else x=4;

A. 34

B. 4

C. 35

D. 3

(3) 下面的程序片段所表示的数学函数关系是_ A____。

if(x<0) y= -1;

else if(x>0) y=1;

else y=0;

(4) 下列各语句序列中,能够且仅输出整型变量a、b 中最大值的是( C )。

A. if(a>b) printf(

B. printf(

C. if(a>b) printf(

D. if(a

(5) 以下程序段的输出结果是 A

int x=5;

if(x>0) y=1;

else if(x==0) y=0;

else y= 1;

printf(

A. 1

B. 5

C. 0

D. 2

(6) 程序段int x=5,y=8,max; max=(x>y)?x:y; printf(

A. 5

B. 8

C. 3

D. 13

(7) 程序段int x=3,a=1;switch(x) {case 4: a++;case 3: a++;case 2: a++;case 1: a++;} printf (

A. 1

B. 2

C. 3

D. 4

(8) 下列语句应将小写字母转换为大写字母,其中正确的是( B )。

A.if(ch>='a'&ch<='z') ch=ch-32;

B.if(ch>='a'&&ch<='z')ch=ch-32;

C.ch=(ch>='a'&&ch<='z')?ch-32:’’;

D.ch=(ch>'a'&&ch

2. 阅读程序,写出运行结果

(1)

void main ()

{

int a=10, b=4, c=3; if(a

printf(

}

输出:10,4, 3

(2)

void main ( )

{

int x=100, a=10, b=20, ok1=5, ok2=0;

if(a

printf(

输出:-1;

(3)

int k,a=1,b=2;

k=(a++==b) ? 2:3; printf(

(4)

void main()

{

int s=1,k=0;

switch (s)

{

case 1: k+=1;

case 2: k+=2;

default: k+=3;

}

printf(“%d”,k);

}输出:6

(5)

void main()

{

int s=1,k=0;

switch (s)

{

case 1: k+=1;break;

case 2: k+=2;break;

default: k+=3;

}

printf(“%d”,k);

}

输出:1

第5章循环结构程序设计习题

1. 单项选择题

(1)for(i=1;i<9;i+=1);该循环共执行了 B 次。

A. 7

B. 8

C. 9

D. 10

(2)int a=2;while(a=0) a--;该循环共执行了 A 次。

A. 0

B. 1

C. 2

D. 3

(3)执行完循环 for(i=1;i<100;i++);后,i 的值为 B 。

A. 99

B. 100

C. 101

D. 102

(4)以下 for语句中,书写错误的是 D 。

A. for(i=1;i<5;i++);

B. i=1;for(;i<5;i++);

C. for(i=1;i<5;) i++;

D. for(i=1,i<5,i++);

(5) C 语句,在循环条件初次判断为假,还会执行一次循环体。

A. for

B. while

C. do-while

D. 以上都不是

(6)循环结构的特点是 C 。

A. 从上至下,逐个执行

B. 根据判断条件,执行其中一个分支

C. 满足条件时反复执行循环体

D. 以上都对

(7) i、j已定义为 int 类型,则以下程序段中内循环体的执行次数是 A 。

for(i=5;i;i--)

for(j=0;j<4;j++){…}

A. 20

B. 24

C. 25

D. 30

(8) C 语言 while 语句中,用于条件的表达式是 D 。

A. 关系表达式

B. 逻辑表达式

C. 算术表达式

D. 任意表达式

(9) int a=1, x=1; 循环语句while(a<10) x++; a++; 的循环执行

D 。

A. 无限次

B. 不确定次

C. 10 次

D. 9 次

(10)下列程序段执行后 s 的值为 A 。

int i=1, s=0; while(i++) if(!(i%3)) break ; else s+=i ;

A. 2

B. 3

C. 6

D. 以上均不是

2. 填空题

(1)三种循环语句是等价价的。

(2)当循环体中的switch语句内有break语句,则只跳出 swicth 语句。同样,当switch语句中有循环语句,内有 break 语句,则只跳出循环语句。

(3)循环体执行遇到continue 语句时跳过本次循环进入下次循

环。

(4)下列程序的功能是输入一个正整数,判断是否是素数,若为素数输出 1,否则输出 0,请为程序填空。

void main( )

{

int i, x, y=1;

scanf(

for(i=2; i<=x/2; i++)

if ( x%i==0 ) { y=0; break; }

printf(

}

(5)输入 N个实数,输出其中的最大值、最小值。

#include

void main( )

{

int n,i;

float no1,nmax,nmin; scanf(

nmax=no1;

nmin=no1 ;

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

{

scanf(

if(no1>nmax) nmax=no1;

if(no1}

printf(

}

(6)输入若干个字符,分别统计数字字符的个数、英文字母的个数,当输入换行符时输出统计结果,运行结束。

#include

void main( )

{

char ch;

int s1=0,s2=0 ;

while(( ch=getchar() )!='\n')

{

if(ch>='0'&&ch<='9') s1++;

if(ch>='a'&&ch<='z' || ch>=’A’||ch<=’Z’) s2++; }

}

3. 阅读下列程序,写出程序运行的输出结果

(1)

void main( ) { int y=9;

for( ;y>0; y--)

if(y%3==0)

{ printf(

}

输出:852

(2)main()

{

int k,n,m;

n=10;m=1;k=1;

while(k++<=n)

m*=2;

printf(

}

输出:1024

(3)

void main ( )

{ int i=5;

do

{switch (i%2)

{case 4: i--; break;

case 6: i--; continue;

}

i-- ; i-- ;

printf(

} while(i>0);

}

输出:i=3 i=1 i=-1

(4)#include

void main( )

{

int k=0; char c='A';

do

{

switch(c++)

{

case 'A': k++; break;

case 'B': k--;

case 'C': k+=2; break;

case 'D': k=k%2; break;

case 'E': k=k*10; break;

default: k=k/3; }

k++;

}while(c

printf(

输出:8

(5)输入数据:2,4 #include

void main( )

{

int s=1,t=1,a,n;

int i;

scanf(

for(i=1;it=t*10+1; s=s+t; }

s*=a;

printf(

}

输出:2468

4. 程序改错

(1) 以下程序是显示[200,300]所有能被 7 整除的数,每行显示 5 个数,此程序有 5处错。

main()

{

int i,n=0; /*n用来记录每行已打印数的个数*/

while(i<300) //while((i <= 300)&&(i >= 200))

{ //i++;

if(i%7==0) //if(i%7!=0)

break; //continue;

printf(

n=n+1;

if(n=5)/*满5个换行*/ //if(n == 5)

{

printf(

n=0;

}

}

}

(2) 以下程序是求 1!+2!+3!+4!+5!+6!+7!的值,其中有 3 处错误。

main()

{

int i,s,t=0; //long s = 0,t = 1;

//int i;

for(i=1;i<=7;i++)

{

s=0; //去掉该语句

t=t*i;

s=s+t;

}

printf(

}

第6章函数习题

1. 单项选择题

(1)C语言总是从 A 函数开始执行。

A. main

B. 处于最前的

C.处于最后的

D. 随机选一个

(2)函数在定义时,省略函数类型说明符,则该函数值的类型为

A 。

A. int

B. float

C. long

D. double

(2)以下 B 函数,真正地没有返回值。

A. int a(){int a=2;return (a);}

B. void b(){printf(

C. int a(){int a=2;return a;}

D. 以上都是

(3)在 C 语言中,有关函数的说法,以下正确的是 C 。

A. 函数可嵌套定义,也可嵌套调用

B. 函数可嵌套定义,但不可嵌套调用

C. 函数不可嵌套定义,但可嵌套调用

D. 函数不可嵌套定义,也不可嵌套调用

(4)以下函数调用语句中,含有实参的个数为 B 。 7

fun((2,3),(4,5+6,7));

A. 1

B. 2

C. 5

D. 6

(5)函数调用可以在 D 。

A. 函数表达式中

B. 函数语句中

C. 函数参数中

D. 以上都是

(6)被调函数返回给主调函数的值称为 C 。

A. 形参

B. 实参

C. 返回值

D. 参数

(7) D ,可以不进行函数类型说明。

A. 被调函数的返回值是整型或字符型时

B. 被调函数的定义在主调函数定义之前时

C. 在所有函数定义前,已在函数外预先说明了被调函数类型

D. 以上都是

(8)被调函数通过 D 语句,将值返回给主调函数。

A. if

B. for

C. while

D. return

(9)被调函数调用结束后,返回到 B 。

A.主调函数中该被调函数调用语句处

B.主函数中该被调函数调用语句处

C.主调函数中该被调函数调用语句的前一语句

D.主调函数中该被调函数调用语句的后一语句

(10)以下对 C语言函数的有关描述中,正确的是 A 。

A. 在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B. C函数既可以嵌套定义又可递归调用

C. 函数必须有返回值,否则不能使用函数

D. C程序中有调用关系的所有函数必须放在同一个源程序文件中

(11)C 语言中函数的隐含存储类型是 A 。

A. auto

B. static

C. extern

D. 无存储类型

(12)能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的是 A 。

A. return 这两个数

B. 形参用两个元素的数组

C. 形参用两个这种数据类型的指针

D. 用两个全局变量

2. 填空题

(1) 变量的作用域主要取决于变量定义的位子,变量的生存期既取决于变量存储类型,又取决于变量存储方式。

(2) 说明变量时,若省略存储类型符,系统默认其为整形存储类别,该存储类别的类型符为: int 。

(3) 静态型局部变量的作用域是静态局部变量定义的复合语句或函数体内 ,生存期是整个程序运行期内。

(4) 函数中的形参和调用时的实参都是数组名时,传递方式为地址传递,都是变量时,传递方式为值传递。

(5) 函数的形式参数的作用域为整个函数体内,全局的外部变量和函数体内定义的局部变量重名时,函数体内定义的局部变量优先。

(6)若自定义函数要求返回一个值,则应在该函数体中有一条return 语句,若自定义函数要求不返回一个值,则应在该函数说明

时加一个类型说明符void 。

(7) 若函数的形式参数是指针类型,则实参可以是数组名、地址或指针变量。

(8) 函数的参数为 char *类型时,形参与实参结合的传递方式为地址传递。

(9) 函数的实参为常量时,形参与实参结合的传递方式为值传递。

(10) 对数组按值从大到小的顺序排序后输出,请填空。

#include

void main()

{

float a[7]={2,6,3,8,3,12,9};

int i;

void sort(float*,int);

sort(a,7) ;

for(i=0;i<7;i++) printf(

printf(

}

void sort( float *p, int n )

{

int i,j,k; float t;

for(i=0;i{

k=i;

for(j=i+1;jif( p[k]

if(k != i)

{ t=*(p+i); *(p+i)=*(p+k); *(p+k)=t; }

}

}

(11) 下列函数在 n 个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填空。

#include

void find(float *p, float *max, float *min, int n)

{

int k;

float t;

*max=*p; *min = *p;

for(k=1;k{

t=*(p+k);

if( t>*max ) *max=t;

if(t

}

}

3. 写出下列程序运行结果:

(1)

main()

{

int i=1,p;

p=fun(i,i+1);

printf(

int fun(int a,int b) {

int f; if(a>b)

f=1;

else if(a==b) f=0;

else

f=-1;

return f; }

输出:-1

(2)键盘输入 abcdef

#include

void fun( )

{

char c ;

if((c=getchar( ))!='\n') fun( ) ;

putchar(c);

}

void main( )

{ fun( ); }

输出:fedcba

(3)

#include

#define C 5

int x=1,y=C;

void main( )

{

int x;

x=y++; printf(

if(x>4)

{ int x ; x=++y;

printf(

printf(

(4)

#include

int c , a=4 ;

func(int a , int b)

{ c=a*b ; a=b-1 ; b++ ; return (a+b+1) ; }

void main( )

{

int b=2 , p=0 ; c=1 ;

p=func(b , a) ;

printf(

输出:4,2,8,9

(5)

unsigned fun6(unsigned num) {

unsigned k=1;

do { k*=num%10; num/=10; } while(num);

return k;

}

void main( )

{

unsigned n=26;

printf(

输出:12

输出:5 6

7 7

12 6

第7章数组习题

1. 单项选择题

(1) int a[4]={5,3,8,9};其中 a[3]的值为( D )。

A. 5

B. 3

C. 8

D. 9

(2) 以下 4 个字符串函数中,( A )所在的头文件与其他 3 个

不同。

A. gets

B. strcpy

C. strlen

D. strcmp

(3) 以下 4 个数组定义中,( D )是错误的。

A. int a[7];

B. #define N 5 long b[N];

C. char c[5];

D. int n,d[n];

(4) 对字符数组进行初始化,( B )形式是错误。

A. char c1[ ]={'1', '2', '3'};

B. char c2[ ]=123;

C. char c3[ ]={ '1', '2', '3', '\0'};

D. char

c4[ ]=

(5) 在数组中,数组名表示( A )。

A. 数组第 1 个元素的首地址

B.数组第 2 个元素的首地址

C. 数组所有元素的首地址

D.数组最后 1 个元素的首地

(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是

( B )。

int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};

A. 1,12

B. 0,11

C. 1,11

D. 0,12

(7) 若有以下说明,则数值为 4 的表达式是( D )。

int a[12] ={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’, d,

g ;

A. a[g-c]

B. a[4]

C. a['d'-'c']

D. a['d'-c]

(8) 设有定义:char s[12] =

A. 6

B. 7

C. 11

D. 12

(9) 设有定义:char s[12] =

A. 6

B. 7

C. 11

D. 12

(10) 合法的数组定义是( A )。

A. char a[ ] =

B. int a[5] ={0,1,2,3,4,5};

C. char a=

D. char a[ ]={0,1,2,3,4,5};

(11) 合法的数组定义是( B )。

A. int a[3][ ]={0,1,2,3,4,5};

B. int a[ ][3] ={0,1,2,3,4};

C. int a[2][3]={0,1,2,3,4,5,6};

D. int a[2][3]={0,1,2,3,4,5,};

(12) 下列语句中,正确的是 ( D )。

A. char a[3][ ]={'abc', '1'};

B. char a[ ][3] ={'abc','1'};

C. char a[3][ ]={'a',

D. char a[ ][3] ={

(13) 下列定义的字符数组中,输出 printf(

static str[3][20] ={

A. basic

B. foxpro

C. windows

D. 输出语句出错

(14) 下列各语句定义了数组,其中哪一个是不正确的( C )。

A. char a[3][10]={

B. int x[2][2]={1,2,3,4};

C. float x[2][ ]={1,2,4,6,8,10};

D. int m[][3]={1,2,3,4,5,6};

(15) 数组定义为 int a[3][2]={1,2,3,4,5,6},值为6的数组元素是( B )。

A. a[3][2]

B. a[2][1]

C. a[1][2]

D. a[2][3]

2. 填空题

(1) C 语言中,数组的各元素必须具有相同的类型,元素的下标下限为 0 ,下标必须是正整数、0、或者常量。但在程序执行过程中,不检查元素下标是否越界。

(2) C 语言中,数组在内存中占一片连续的存储区,由数组名代表它的首地址。数组名是一个字符常量,不能对它进行赋值运算。

(3)执行 static int b[5], a[ ][3] ={1,2,3,4,5,6}; 后,b[4] = 0 ,a[1][2] = 6 。

(4) 设有定义语句static int a[3][4] ={{1},{2},{3}}; 则

a[1][0]值为 2 ,a[1][1] 值为 0 ,a[2][1]的值为 0 。

(5)如定义语句为 char a[ ]=

#include #include

void main( )

{ float a[20],pjz=0,s,t; int i,k;

for(i=0; i < 20; i++) scanf(“%f”,&a[i]);

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

pjz+=a[i];

pjz/=20;

s=fabs(a[0]-pjz); for(i=1;i<20;i++)

if(fabs(a[i]-pjz)

{

s=fabs(a[i]-pjz);

t=a[i];

}

printf(“%f,%f”,pjz,t); }

(7) 以下程序以每行 10个数据的形式输出 a 数组,请填空。void main( )

{

int a[50],i;

printf(

for(i=0; i<50; i++) scanf(

for(i=1; i<=50; i++)

{ if( i%10==0 )

printf(

else printf(

}

}

(8) 下面程序的功能是输出数组 s 中最大元素的下标,请填空。void main( )

{

int k, p;

int s[] = {1, -9, 7, 2, -10, 3};

for(p=0,k=p; p<6; p++) if(s[p] > s[k]) k = p ;

printf(

}

3. 阅读程序,分析程序的功能。

(1)

#include

#include

void main( )

{

char s[80];

int i ;

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

{ s[i]=getchar( );

if(s[i]=='\n') break; }

s[i]='\0'; i=0;

while(s[i])

putchar(s[i++]);

putchar(‘\n’); }

分析:输入一个字符串,以回车结束,并将其原样输出。

(2)

#include

#include

void main( )

{

char str[10][80], c[80]; int i;

for(i=0; i<10; i++) gets(str[i]);

strcpy(c, str[0]);

for(i=1; i<10; i++)

if(strlen(c)printf(

printf(

分析:输入10个字符串,输出10个字符串中最长的字符串和它的长度。

(3)

#include

#include

void main( )

{

char a[10][80], c[80];

int i, j, k;

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

gets(a[i]);

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

{

k=i;

for(j=i+1; j<10; j++)

if(strcmp(a[j],a[k])<0)

k=j;

if(k!=i)

{

strcpy(c,a[i]) ;

strcpy(a[i], a[k]);

strcpy(a[k],c);

} // 字符串交换

}

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

puts(a[i]);

}

分析:输入10个字符串,用选

择排序算法将10个字符串按从

小到大顺序排列并输出。

(4) 阅读程序,写出运行结果。#include

void main( )

{int a[6]={12,4,17,25,27,16}; int

b[6]={27,13,4,25,23,16},i,j; for(i=0;i<6;i++)

{ for(j=0;j<6;j++)

if(a[i]==b[j])

break;

if(j<6)

printf(

printf(

}

分析:按数组a中元素顺序输出与数组b中元素相同的数。

输出:4,25,27,16

(5) 阅读程序,写出运行结果。#include

void main( )

{

char a[8],temp; int j,k; for(j=0;j<7;j++)

a[j]='a'+j; a[7]='\0';

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

{

temp=a[6];

for(k=6;k>0;k--)

a[k]=a[k-1];

a[0]=temp;

printf(

}

}

分析:将字符串的最后的3个元

素移到字符串首位。

输出:efgabcd

(6) 阅读下列程序,写出程序运行的输出结果。

#include

#include

void main( )

{

char str1[ ]=

for(int i=0;i<4;i++)

{

printf(

str1[strlen(str1)-1]='\0';

}

}

输出:*******

*****

***

*

第8章指针习题

1. 单项选择题

(1) 指针pstr所指字符串的长度为 D 。char *pstr=

A. 15

B. 14

C. 13

D. 12

(2) 对于 char *pstr;,以下正确的是 B 。

A. *pstr=

B. pstr=

C. *pstr=

D. **pstr=

(3) 以下程序段的输出结果为 B 。

char astr[5]=

char *pstr=astr;

printf(

A. 1

B. 2

C. ASCII码值为 1 的字符

D. ASCII 码值为 2 的字符

(4) 下述程序段的输出结果为 D 。

char astr[]=

char *pstr=&astr[5];

while(--pstr>=astr)

putchar(*pstr);

putchar('\n');

A. abc

B. cba

C. abcde

D. edcba

(5) 若有定义 int a=1,*b,c;,以下不正确的是 A 。

A. b=a

B. b=&a

C. b=&a,c=*b

D. c=a

(6) 以下程序段的运行结果为 C 。

int num[]={1,2,3,4,5,6,7,8,9},*pnum=&num[2];

pnum++;

++pnum;

printf(

A. 3

B. 4

C. 5

D. 6

(7) 以下程序段的运行结果为 B 。

char *pstr=

int n=0;

while(*pstr++!='\0')

n++;

printf(

A. 12

B. 14

C. 16

D. 不确定

(8) 以下程序段的运行结果为 B 。

int num[9]={1,2,3,4,5,6,7,8,9},*p;

p=num;

*(p+1)=0;

printf(

A. 2,0,1

B. 1,0,1

C. 2,2,2

D. 1,1,1

(9) 以下程序段的运行结果为 C 。

int a=5,*p=&a,b,*q;

a=10;

*p=15;

q=p;

*q=20;

b=*q;

p=&b;

printf(

A. a=5,b=10,*p=15,*q=20

B. a=20,b=15,*p=10,*q=5

C. a=20,b=20,*p=20,*q=20

D. a=15,b=15,*p=15,*q=15

(10) 已知 char *p,*q;,以下语句正确的是 C 。

A. p*5;

B. p/=q;

C. p+=5;

D. p+=q;

第9章结构体共用体习题

1. 填空题

(1)定义结构体的关键字是 struct,定义共用体的关键字是 union 。

(2)结构体和共用体的相同点是都是构造类型,不同点是共用体在同一时间只能使用一个成员。

(3) 若有以下定义和语句,则sizeof(a)的值是 12 ,而sizeof(b)的值是 20 。

struct tu

{ int m; char n; int y;}a;

struct

{ float p; char q; struct tu r} b;

(4) 设有下面结构类型说明和变量定义,则变量a在内存所占字节数是 32 。如果将该结构改成共用体,结果为16 。

struct stud

{ char num[6]; int s[4]; double ave; } a;

(5) 下面程序用来输出结构体变量ex所占存储单元的字节数,请填空。

struct st

{ char name[20]; double score; };

main()

{ struct st ex ; printf(

struct node

{ int info; struct node * link; }

(7) 以下程序执行后输出结果是 A 。

main()

{ union { unsigned int n; unsigned char c; } u1; u1.c='A'; printf(

(8) 变量root如图所示的存储结构,其中sp是指向字符串的指针域,next是指向该结构的指针域,data用以存放整型数。请填空,完成此结构的类型说明和变量root的定义。

root

struct list

{ char *sp ; struct list *next ; int data ; } root;

2. 阅读下面的程序,写出程序结果

(1)

struct info

{ char a,b,c;};

main()

{ struct info s[2]={{‘a’,‘b’,‘c’},{‘d’,‘e’,‘f’}};int t;

t=(s[0].b-s[1].a)+(s[1].c-s[0].b);

printf(

输出:2

(2)

void main()

{ union { char i[2]; int k; } stu;

stu.i[0]='2'; stu.k=0;

printf(

}

输出:,0

(3)

union myun

{ struct{ int x, y, z; } u; int k; } a;

main()

{ a.u.x=4; a.u.y=5; a.u.z=6; a.k=0; printf(“%d\n

输出:0

商业计划书 http://www.chnci.com/syjhs

可行性分析报告 http://www.qfcmr.com

市场调查 http://www.51kybg.com

c语言既适合于开发,C语言试题及答案 (1)相关推荐

  1. java中级职称考试试题_Java中级开发工程师笔试题及答案2016

    Java中级开发工程师笔试题及答案2016 java中级工程师考试试题你做了吗?下面随yjbys小编一起来看看最新Java中级开发工程师笔试题及答案,仅供考生参考! 1) 描述Web Service的 ...

  2. 中科金财java_中科金财java开发工程师笔试题(带答案).docx

    中科金财java开发工程师笔试题(带答案).docx JAVA开发工程师笔试试题(请不要在试题上留任何痕迹,所有答案均写在答题纸上)一.编程题(共26分)1任意写出一种排序算法.(6分)PUBLICV ...

  3. Java开发工程师笔试试题(附带答案)

    Java开发工程师笔试试题(附带答案) 最后附带CSDN下载 下载地址Java开发工程师笔试试题(包含答案)

  4. 最适合游戏开发的语言是什么?

    建议初学者学习主流的开发技术 主流开发技术有大量成熟的教程.很多可以交流的学习者.及时的学习反馈等: 技术的内里基本都是相同的,学习主流技术的经验.知识可以更好更快地疏通学习新知识和技术. 因此,对C ...

  5. ios c语言头文件,iOS开发 -- C语言基础12(预处理指令)

    iOS开发 -- C语言基础12(预处理指令) 宏定义 预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源 ...

  6. 有100名考生参加C语言测验,全国计算机一级考试模拟试题及答案(1-100)

    1)根据汉字国标GB2312-80的规定,二级次常用汉字个数是 A) 3000个 B)7445个 C)3008个 D)3755个 2)在下列字符中,其ASCII码值最小的一个是 A)空格字符 B)0 ...

  7. 盘点2019年PHP高级开发工程师面试题及答案汇总

    2019独角兽企业重金招聘Python工程师标准>>> 今天小编给大家整理一下关于PHP培训高级面试题及答案汇总,下面我们一起来看一下吧. 1.写出一个能创建多级目录的PHP函数 / ...

  8. 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(4)

    推荐文章: VUE之VUEX常见面试题大全汇总--史上最全[vuex面试题] 前端面试题之HTML+CSS(持续更新)_勤动手多动脑少说多做厚积薄发-CSDN博客1.行内元素和块级元素?img算什么? ...

  9. 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(8)

    推荐文章: VUE之VUEX常见面试题大全汇总--史上最全[vuex面试题] 前端面试题之HTML+CSS(持续更新)_勤动手多动脑少说多做厚积薄发-CSDN博客1.行内元素和块级元素?img算什么? ...

最新文章

  1. FeiBoStr 斐波那契
  2. 虫洞协议和闪电网络如何混为一谈?
  3. 【drp 11】使用Junit简单测试接口方法
  4. C和指针之字符操作(<ctype.h>)
  5. 2017.10.9 DZY Loves Math V 失败总结
  6. 华为:崛起的 5G 巨龙
  7. Shape Correspondence and Functional Maps
  8. oracle多关键字查询,Oracle多关键字查询
  9. Qt —— QWebEngineView加载谷歌离线地图(包含离线地图瓦片下载制作)
  10. 3.9MB超小超强文本识别模型,支持20000个字符的识别,平安产险提出Hamming OCR
  11. 超级搜索术-思维导图
  12. 2022年信息安全工程师考试大纲
  13. wpa_supplicant
  14. Pandas中的数据聚合方法
  15. 输出数值类型的算法评价指标
  16. c51语言访问绝对地址的方法,51单片机绝对地址访问的两种方法
  17. 软件测试速记口诀(一)<软件测试基础>
  18. mysql截取邮箱后缀_截取邮箱格式以及统计邮箱总数
  19. java 微信多线程推送_Java实现 微信小程序 + 消息推送
  20. 《农业机械学报》论文的格式要求

热门文章

  1. pandas中使用rolling.corr函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
  2. pandas编写自定义函数高亮显示(highlight)dataframe中的指定内容(数值)(highlighting a specific values or content of a panda
  3. pandas使用read_csv函数读取文件最后N行数据并保留表头、pandas使用read_csv函数读取网络url链接数据
  4. Seaborn使用regplot函数可视化散点图并添加回归曲线以及回归线对应的置信区间(Scatter plot with regression line)
  5. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(配置边界颜色)实战
  6. 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸
  7. R语言dataframe(data.table)使用用最近的前一个非NA值向前填充缺失值NA实战
  8. python将sklearn的RocCurveDisplay结果与PrecisionRecallDisplay结果合成为一个图
  9. python代码统计字符串中大写字符、小写字符、特殊字符以及数值字符出现的次数
  10. R语言tidyr包Unite()函数实战详解:多个数据列合并为一列