C语言程序设计模拟题

更新时间:2024-07-09 13:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、选择题

(1)能将高级语言程序转换成目标语言程序的是__ C____。

A)调试程序 B)解释程序 C)编译程序 D)编辑程序 (2)__A____是构成C语言程序的基本单位。

A)函数 B)过程 C)子程序 D)子例程 (3)可以在C语言中用做用户标识符的是__B___。

A)void B)as_b3 C)for D)2c define _123 -abc Do WORD If cas SIG (4)若有以下类型说明语句:

char w; int x; float y, z;

则表达式w*x+z-y的结果为__D___类型。

A)float B)char C)int D)double (5)main()

{ float x=123.456;

printf(\ }

以上程序输出的结果是___D___。

A)123.4 B)123.5 C)123.45 D)123.46 (6)下面语句的输出结果是___C___。

printf(\

A)14 B)8 C)5 D)输出项不合法,无正常输出 (7)下列程序的输出结果是__B____。 main()

{ int a=0,b=0,c=0;

if(++a>0| ++b>0) ++c;

printf(\ }

A)a=0,b=0,c=0 B)a=1,b=1,c=1 C)a=1,b=0,c=1 D)a=0,b=1,c=1 (8)下列程序的输出结果是__B____。 main() { int i;

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

{ if(i>4) {printf(\ }

printf(\ }

A)55 B)56

C)程序错误,没有输出 D)循环条件永远为真,死循环 (9)下列程序的输出结果是___A___。 #define A 100 main()

{ int i=0,sum=0;

do{ if(i==(i/2)*2) continue; sum+=i; }while(++i

printf(\ }

A)2500 B)2050 C)4 D)0 (10)下列程序的输出结果是__D____。 main()

{ int i=3; switch(i) { case 1:

case 2:printf(\ case 3:

case 4:break;

default:printf(\ } }

A)0 B)3 C)OK D)没有任何输出 (11)下列程序执行后的输出结果是__C____。

C语言程序设计模拟题(1)

main()

{ int m[][3]={1,4,7,2,5,8,3,6,9}; int i,k=2;

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

{ printf(\ }

A)456 B)258 C)369 D)789

(12)设已定义i和k为int类型变量,则以下for循环语句__B____。 for(i=0;k=-1,k=1;i++,k++) printf(\

A)判断循环结束的条件不合法 B)是无限循环

C)循环一次也不执行 D)循环只执行一次 (13)下面程序的输出结果是__C____。 unsigned fun(unsigned num) { unsigned k=1; do {

k*=num; num/=10; } while(num); return(k); } main()

{ unsigned n=26;

printf(\ }

A)0 B)4 C)12 D)无限次循环

(14)已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序__C____。 main()

{ char a='A'; int b=20;

printf(\ }

A)表达式非法,输出零或不确定值

B)因输出项过多,无输出或输出不确定值

C)输出结果为20,141 D)输出结果为20,141,20

(15)C语言函数返回值的类型是由___D___决定的。

A)return语句中的表达式类型 B)调用函数的主调函数类型

C)调用函数时临时 D)定义函数时所指定的函数类型 (16)下列程序执行后输出的结果是__C____。

int d=1; fun(int p) { int d=5; d+=p++;

printf(\ }

main()

{ int a=3;

fun(a); d+=a++;

printf(\ }

A)8,12 B)9,13 C)8,4 D)9,5 (17)已知下面的程序段,正确的判断是_C____。 #define A 3

#define B(A) ((A+1)*a) int a=3; ……

X=3*(A+B(7));

A)程序错误,不允许嵌套定义 B)X=93

C)X=81 D)程序错误,宏定义不允许有参数 (18)定义int *swap()指的是_B____。

A)一个返回整型值的函数swap()

B)一个返回指向整型值指针的函数swap()

C)一个指向函数swap()的指针,函数返回一个整型值 D)以上说法均错

(19)以下程序段的输出结果是__B____。 main()

{ char s1[10],s2[10],s3[10];

scanf(\ puts(s1);puts(s2);puts(s3); }

输入数据如下:(此处代表回车符) aaa bbb

A)aaa B)aaa C)aaa\\0bbb\\0 D)aaabbb Bbb bbb

(20)下述函数功能是__A____。 int fun(char *x) { char *y=x; while(*y++); return y-x-1; }

A)求字符串的长度 B)求字符串存放的位置

C)比较两个字符串的大小 D)将字符串x连接到字符串y后面 (21)以下程序的输出结果是__A____。 main()

{ char str[12]={'s','t','r','i','n','g'}; printf(\ }

A)6 B)7 C)11 D)12 (22)请读程序段:

char str[]=\ printf(\

程序段的输出结果是__B____。

A)68 B)0 C)字符’D’的地址 D)不确定的值

(23)若有定义:int a[4][10];,则以下选项中对数组元素a[i][j]引用错误的是___B___。 (0<=i<4,0<=j<10)

A)*(&a[0][0]+10*i+j) B)*(a+i)+j C)*(*(a+i)+j) D)*(a[i]+j) (24)设有以下语句:

char str1[]=\ 则__C D____不是对库函数的正确调用。

A)strcpy(str1,\ B)strcpy(str2,\ C)strcpy(str3,\ D)strcpy(str4,\ (25)请读程序: #include #include main()

{ char *s1=\ s1++;s2++;

printf(\ }

上面程序的输出结果是__A____。

A)正数 B)负数 C)零 D)不确定的值 (26)下面程序的输出是___A___。 char s[]=\ main()

{ char *p;

for(p=s;p

}

A)ABCD B) A C) D D)ABCD BCD B C ABC CD C B AB D D A A (27)以下程序输出的结果为___C___。 main()

{ char *alpha[6]={\ char **p; int i; p=alpha;

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

printf(\ }

A)ABCDEFGHIJKL B)ABCD C)ABCDEFGHIJKLMNOP D)AEIM (28)下面程序的输出结果是__A____。 #include main()

{ char *p[]={\ int i;

for(i=3;i>=0;i--,i--) printf(\ printf(\ }

A)SO B)SP C)SPOPK D)SHOB (29)以下程序的输出结果是__B____。 #include

void prt(int *x,int *y,int *z)

{ printf(\ int a=10,b=40,c=20; main()

{ prt(&a,&b,&c); prt(&a,&b, &c); }

A)11,42,31 B)11,41,20 C)11,21,40 D)11,41,21 12,22,41 12,42,20 11,21,41 12,42,22

(30)若一个外部变量的定义形式为static int x;,那么,其中static的作用应该是__C____。 A)将变量存储在静态存储区

B)使变量x可以由系统自动初始化 C)使x只能在本文件内引用 D)使x的值可以永久保留

(31)以下程序的输出结果是__B____。 #include #define SQR(x) x*x main()

{ int a,k=3;

a=++SQR(k+1); printf(\ }

A)8 B)9 C)17 D)20

(32)下面是对宏定义的描述,不正确的是___C___。

A)宏不存在类型问题,宏名无类型,它的参数也无类型 B)宏替换不占用运行时间

C)宏替换时先求出实参表达式的值,然后代入形参运算求值 D)宏替换只不过是字符替代而已

(33)已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是___C___。 main()

{ unsigned int a=32,b=66; printf(\ }

A)66 B)98 C)b D)B 二、填空题(每空2分)

(1)若有定义int m=5,y=2,则执行表达式y+=y-=m*=y后,y的值为 【_____-16_________】 。

(2) 若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为

【___8.0__________】 。

(3)设有char a,b;,若要通过a&b运算屏蔽掉a中的其他位,只保留第2位和第8位(右起为第1位),则b的

二进制是 【__10000010___】 。

(4)下列程序执行后输出的结果是 【_______7__________】 。 f(int a)

{ static c=0;

c=a+c++; return(c); }

main()

{ int a=2,i,k;

for(i=0;i<2;i++) k=f(a++);

printf(\ }

(5)下面程序执行后输出的结果是 【_______2___________】 。 int m=13;

int fun(int x,int y) { int m=3;

return(x*y-m); } main()

{ int a=7,b=5;

printf(\

}

(6)下列程序执行后输出的结果是 【_______12___________】 。 main()

{ int arr[10],i,k=0;

for(i=0;i<10;i++) arr[i]=i; for(i=1;i<4;i++) k+=arr[i]+i; printf(\ }

(7)以下程序的输出结果是: 【_____1,0________】 。 main( )

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

printf(\

printf(\ }

(8)以下函数的功能是计算s=1+1/2!+1/3!+…+1/n!,请填空。 double fun(int n)

{ double s=0.0, fac=1.0; int i,k=1;

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

{ 【_____k*k*i______】 ; fac=fac/k; s=s+fac; } }

(9)下面程序的运行结果是 【____x=11____________】 。 main()

{ unsigned int a=0112,x; x=a>>3;

printf(\ }

(10)函数delete(s,i,n)是作用是从字符串s中删除从第i个字符开始的n个字符,请填空。 void delete(char s[],int i,int n) { int j,k,length=0; while(s[length])

{ 【___length++______】 ; --i; j=i; }

if( 【_____ i

if(i+n<=length) while(k

(11)下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。 int word(char *s) { int num=0,flag=0; while(*s)

{ if( 【_*s++___】 ==' ') flag=0;

else if( 【__ flag==0____】 ){flag=1;num++} }

return 【__ num ___】 ;

}

一、选择题

(1)请读程序:

#include main( ) {

int a; float b, c;

scanf(\ printf(\ }

若运行时从键盘上输入 9876543210↙,则上面程序的输出结果是__C___。 A)a=98,b=765,c=4321 B)a=10,b=432,c=8765

C)a=98,b=765.000000,c=4321.000000 D)a=98,b=765.0,c=4321.0

(2)一个良好的算法由下面的基本结构组成,但不包括___D___。

A)顺序结构 B)选择结构 C)循环结构 D)跳转结构 (3)请选出以下程序的输出结果__B____。 #include sub(int x,int y,int *z) { *z=y-x;} main( )

{ int a,b,c;

sub(10,5,&a);sub(7,a,&b);sub(a,b,&c); printf(\ }

A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7 (4)下面程序在屏幕上的输出是_B___。 main( ) {

printf(\ }

A)ab \\b\\b c B)a c C)abc D)ab c

(5)若 x 是整型变量,pb 是基类型为整型的指针变量,则正确的赋值表达式是__A____。 A)pb=&x; B)pb=x; C)*pb=&x; D)*pb=*x (6)设整型数 i=5,则 printf(\的输出为_D___。 A)10 B)11 C)12 D)语法错误 (7)下面程序输出的结果是__A___。 main( ) {

int i=5,j=9,x; x=(i==j?i:(j=7));

printf(\

}

A)5,7 B)5, 5 C)语法错误 D)7,5 (8)若执行下面程序时从键盘上输入 5, main( ) {

int x;

scanf(\

if(x++>5) printf(\ else printf(\ }

则输出是__B____。

A)7 B)6 C)5 D)4 (9)若有以下定义和语句:

int a[ ]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为 3 的表达式是__A____。

A)p+=2,*(p++) B)p+=2,*++p C)p+=3,*p++ D)p+=2,++*p

(10)设 a、b 和 c 都是 int 型变量,且 a=3、b=4、c=5,则下面的表达式中,值为 0 的表达式是_D___。 A)'a'&&'b' B)a<=b

C语言程序设计模拟题(2)

C)a||+c&&b-c D)!((a

char *d[]={\ printf(\ }

A)cde B)字符 c 的 ASCII 码值 C)字符 c 的地址 D)出错 (12)设有如下程序 #include main( ) {

int **k, *j,i=100; j=&i; k=&j;

printf(\ }

上述程序的输出结果是___B___。

A)运行错误 B)100 C)i 的地址 D)j 的地址

(13)设有以下语句,其中不是对 a 数组元素的正确引用的是:__D____(其中 0≤i<10) int a[10]={0,1,2,3,4,5,6,7,8,9,},*p=a;

A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i) ) (14)有以下程序: #include main( ) { char c[6]; int i=0;

for( ; i<6; c[i]=getchar( ),i++); for(i=0;i<6;i++)putchar(c[i]); printf(\ }

如果从键盘上输入: ab<回车> c<回车> def<回车>

则输出结果为 _____C________ 。

A)a B)a C)ab D)abcdef b b c c c d d d e f

(15)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 ___B____。 A)地址传递 B)单向值传递

C)由实参传递给形参,再由形参传递给实参 D)传递方式由用户指定 (16)以下程序

#include #include main( )

{ char *p1=\ strcpy(str+2,strcat(p1,p2) ); printf(\ }

的输出是 _D___。

A)xyzabcABC B)zabcABC C)yzabcABC D)xyabcABC (17)以下程序

int aa[3][3]={{2},{4},{6}}; main( )

{ int i,*p=&aa[0][0]; for (i=0;i<2;i++)

{ if(i==0) aa[i][i+1]=*p+1;

else ++p;

printf(\ }

} 的输出是__A____。

A)23 B)26 C)33 D)36 (18)以下程序的输出结果是__C____。 #include #include fun(char *w,int n) {

char t,*s1,*s2; s1=w;s2=w+n-1; while(s1

main() {

char p[]=\ fun(p,strlen(p)); puts(p); }

A)1234567 B)7654321 C)1711717 (19)下面程序 main( )

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

if(b!=15)

if(!ok1) x=1; else if(ok2) x=10; x=-1;

printf(\ }

的输出是__A____。

A)-1 B)0 C)1 (20)下面程序 main( ) {

int x=32;

printf(\ }

的输出是__D____。

A)100 B)160 C)120 D)64 (21)以下程序的输出结果是__B____。 #include

#define FUDGE(y) 2.84+y

#define PR(a) printf(\ #define PRINT1(a) PR(a);putchar('\\n') main( ) { int x=2;

PRINT1(FUDGE(5)*x); }

A)11 B)12 C)13 (22)以下程序段给数组所有的元素输入数据,请选择正确答案填入: #include main( ) {

int a[10],i=0;

while(i<10) scanf(\__A___); : :

D)7177171 D)不确定的值 D)15 }

A)a+(i++) B)&a[i+1] C)a+i D)&a[++i] (23)字符(char)型数据在微机内存中的存储形式是__D____。 A)反码 B)补码

C)EBCDIC 码 D)ASCII 码 (24)有以下程序,程序运行后的输出结果是__D____。 int f(int b[][4]) { int i,j,s=0;

for(j=0;j<4;j++) { i=j;

if(i>2) i=3-j; s+=b[i][j]; }

return s; } main() {

int a[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}}; printf(\ }

A)22 B)11 C)18 D)16 (25)不能把字符串\赋给数组 b 的语句是__D____。 A)char b[10]={'H','e','l','l','o','!'}; B)char b[ ]={'H','e','l','l','o','!'}; C)char b[10];strcpy(b,\

D)char b[10];

b=\

(26)下面程序的输出是__D____。 main( )

{ int x=3 ,y=6,a=0;

while(x++!=(y-=1)) { a+=1;

if (y

printf(\ }

A)x=4,y=4,a=1 B)x=5,y=5,a=1 C)x=5,y=4,a=3 D)x=5,y=4,a=1 (27)若有程序: fun(int a,int b) {

static int c=0; c+=a+b; return c; }

main() {

int x=5,y=3,z=7,r; r=fun((y,x+y),z); r=fun(x,y);

printf(\ }

上面程序的输出结果是__A____。

A)23 B)15 C)19 (28)下面程序的输出是__C____。 main( )

{ char *s=\

int v1=0,v2=0,v3=0,v4=0,k; for (k=0;s[k];k++) switch(s[k])

{ default:v4++; case'1':v1++; case'3':v3++; case'2':v2++;

D)18

}

printf(\ }

A)v1=4,v2=2,v3=1,v4=1 B)v1=4,v2=9,v3=3,v4=1 C)v1=5,v2=8,v3=6,v4=1 D)v1=8,v2=8,v3=8,v4=8 (29)下面程序的输出是__D____。 main( ) { int k=11;

printf(\ }

A)k=11,k=12,k=11 B)k=11,k=13,k=13 C)k=11,k=013,k=0xb D)k=11,k=13,k=B (30)下面程序段中 c 的二进制值是__B____。 char a=3,b=6,c; c=a^b<<1;

A)00001011 B)00001111 C)00011110 D)00011100 (31)以下叙述中正确的是__C____。 A)C 语言比其他语言高级

B)C 语言可以不用编译就能被计算机识别执行

C)C 语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D)C 语言出现的最晚,具有其他语言的一切优点 (32)下列可用于 C 语言用户标识符的一组是__B____。

A)void define WORD B)a3_b3 _123 Car C)For -abc IFCase D)2a DO sizeof (33)请选出正确的程序段__C____。

A)int *p B)int *s,k; scanf(\ *s=100; …… …… C)int *s,k; D)int *s,k; char *p,c; char *p,e; s=&k; s=&k; p=&c; p=&c; *p='a'; s=p; …… *s=1; …… 二、填空题

(1)下面程序的输出是 【____12______】 。 main( )

{int arr[10],i,k=0; for(i=0;i<10;i++) arr[i]=i; for(i=1;i<4;i++) k+=arr[i]+i; printf(\

(2)若a=10,b=20,则表达式!(a

int fa(int x) {return x*x;} int fb(int x) {return x*x*x;}

int f(int(*f1)(),int(*f2)(),int x)

{return f2(x)-f1(x);} main()

{int i;i=f(fa,fb,2);printf(\

程序运行后,输出结果是 【______4_______】 。

(4)若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是 【__5,4,c=3___】 int b,c; float a;

scanf(\

(5)下列程序的输出结果是 【___5 6____】 。 int t(int x,int y,int cp,int dp) { cp=x * x+y*y; dp=x*x-y*y; }

main( )

{ int a=4,b=3,c=5,d=6; t(a,b,c,d);

。 printf(\ %d\\n\ }

(6)下面程序的输出结果是 【___GGGH_____】 。 char b[]=\ main() {

char b[30];

strcpy(&b[0],\ strcpy(&b[1],\ strcpy(&b[2],\ printf(\ }

(7)下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。 word_num(char str[]) {int i,num=0,word=0;

for(i=0;str[i]!= 【__’\\0’____】 ;i++)

if( 【__str[i]____】 ==' ')word=0; else if(word==0) { word=1;

【_num++__】 ; }

return(num); }

(8)有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。 算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后 将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空 白处填上一条语句或一个表达式。 #define N 100 main()

{ float a[N+1],x; int i,p;

for(i=0;i

scanf(\ scanf(\ for(i=0,p=N;i { 【___p=i____】 ; break;}

for(i=N-1; 【___i>=p_____】 ;i--) a[i+1]=a[i]; a[p]=x;

for(i=0; 【____i<=N_____】 ;i++) { printf(\ if(i%5==0) printf(\ } }

一、选择题

(1)下列语句中符合 C 语言语法的赋值语句是__D____。 A)a=7+b+c=a+7 B)a=a+7

C)a=7+b,b++,a+7; D)a=7+b,c=a+7; (2)下面程序 main( ) { int y=9;

for(;y>0;y--){ if(y%3==0)

{ printf(\ continue; } } }

的输出是__B__。

A)741 B)852 C)963 D)875421 (3)下列四个叙述中,错误的是___B___。 A)C 语言中的关键字必须小写

B)C 语言中的标识符必须全部由字母组成 C)C 语言不提供输入输出语句

D)C 语言中的注释行可以出现在程序的任何位置 (4)下面程序 main( ) {

int a=-1,b=4,k;

k=(a++<=0)&&(!(b--<=0) ); printf(\ }

的输出是__C____。

A)0 0 3 B)0 1 2 C)1 0 3 D)1 1 2 (5)以下叙述中正确的是__C____。

A)预处理是指完成宏替换和文件包含中指定文件的调用 B)预处理也是C 语句

C)C 源程序中,凡是行首以#标识的控制行都是预处理指令

D)预处理就是完成 C 编译程序对 C 源程序的第一遍扫描,为编译的词法分析和语法分析作准备 (6)下面的程序片段 y=-1; if (x!=0)

if(x>0) y=1;

else y=0;

所表示的数学函数关系是__C____。

-1 (x<0) 1 (x<0) A) y= 0 (x=0) B) y= -1 (x=0) 1 (x>0) 0 (x>0) 0 (x<0) -1 (x<0) C) y= -1 (x=0) D) y= 1 (x=0) 1 (x>0) 0 (x>0) (7)下面的程序的运行结果是___D____。 main( )

{ int x=3,y=0,z=0;

if(x=y+z)printf(\ else printf(\ }

A)有语法错误不能通过编译 B)输出* * * *

C)可以通过编译, 但是不能通过连接, 因而不能运行 D)输出####

(8)在 C 语言中,合法的长整型常数是_A____。

A)0L B)4962710 C)04312765 D)0xa34b7fe (9)下面函数

int fun1(char*x) { char *y=x;

while(*y++);

C语言程序设计模拟题(3)

return(y-x-1);

} 的功能是__A____。

A)求字符串的长度 B)比较两个字符串的大小

C)将字符串 x 复制到字符串 y D)将字符串 x 连接到字符串 y 后面 (10)设 int i=2,j=1,k=3,则表达式 i&&(i+j)&k|i+j 的值是___C___。 A)0 B)2 C)1 D)3 (11)已知字母 A 的 ASCII 码为十进制的 65,下面程序 main( )

{ char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3';

printf(\ }

的输出是__A____。

A)67,D B)B,C C)C,D D)不确定的值 (12)以下程序的输出结果是_B_____。 #include main( )

{ int a,b,d=241; a=d/100%9; b=(-1)&&(-1);

printf(\ }

A)6,1 B)2,1 C)6,0 D)2,0 (13)下列选项中非法的表达式是__D____。

A)0<=x<100 B)i=j==0 C)(char)(65+3) D)x+1=x+1 (14)以下程序的输出结果是__B____。 #include main( ) {

printf(\ }

A)不确定的(因变量无定义) B)0 C)-1 D)1 (15)在下面的语句中,赋值语句错误的是__C____。 A)a=(b=(c=2,d=3)); B)i++;

C)a=a/b=2; D)a=a

{ int k=4,m=1,p;

p=func(k,m); printf(\ p=func(k,m); printf(\ }

func(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); }

A)8,17 B)8,16 C)8,20 D)8,8

(17)以下程序调用 findmax 函数求数组中值最大的元素在数组中的下标,请选择填空: #include

findmax(int *s,int t,int *k) { int p ;

for(p=0,*k=p;ps[*k]) ___D___; }

main( )

{ int a[10],i,k;

for(i=0;i<10;i++) scanf(\ findmax(a,10,&k);

printf(\ }

A)k=p B)*k=p-s C)k=p-s D)*k=p

(18)在执行以下程序时,为了使输出结果为 t=4,给 a 和 b 输入的值应该满足的条件是 __C____。

main() {

int s,t,a,b;

scanf(\ s=1;t=1;

if(a>0)s=s+1; if(a>b)t=s+t; else if(a==b)t=5; else t=2*s;

printf(\ }

A)a>b B)ab (19)以下函数调用语句中含有__B____个实参。 func((exp1,exp2),(exp3,exp4,exp5) );

A)1 B)2 C)4 D)5 (20)执行以下程序后,输出的结果是__D___。 main() {

int y=10;

do{y--;}while(--y); printf(\ }

A)-1 B)1 C)8 D)0 (21)在 C 语言中,要求运算数必须是整型的运算符是___A___。 A)% B)/ C)< D)! (22)C 语言提供的合法的数据类型关键字是__B___。

A)Double B)float C)integer D)Char (23)设有以下定义:

int a[3][3]={1,2,3,4,5,6,7,8,9}; int (*ptr)[3]=a,*p=a[0];

则下列能够正确表示数组元素 a[1][2]的表达式是__D____。 A)*((*ptr+1)[2]) B)*(*(p+5)) C)(*ptr+1)+2 D)*(*(a+1)+2) (24)若有以下说明:

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为 6 的表达式是__C____。

A)*p+6 B)*(p+6) C)*p+=5 D)p+5 (25)下列程序的输出结果是___C___。 fun() {

static int x=5;

if(x++>5)printf(\ else printf(\ }

main() {

fun();fun(); }

A)67 B)69 C)68 D)78 (26)下面程序的输出是__A____。 main( ) {

int m=0xa,n=2; m+=n;

printf(\ }

A)C B)c C)99 D)2 (27)以下程序的输出结果是__A____。 # include main( )

{char *a=\ fun(a);puts(a); }

fun(char *s)

{ int x,y; char c;

for (x=0,y=strlen(s)-1; x

A)ihgfedcba B)abcdefghi C)abcdedcba D)ihgfefghi (28)设有如下函数定义,则输出结果为__D____。 char *fun(char *str) { char *p=str; while(*p)

{if(*p>'d')continue; p++; }

return p; }

main() {

printf(\ }

A)welcome B)come! C)w D)程序进入死循环

(29)设 p1 和 p2 是指向同一个 int 型一维数组的指针变量,k 为 int 型变量,则下列不能正确执行的语句是__B____。

A)k=*p1+*p2; B)p2=k; C)p1=p2; D)k=*p1*(*p2); (30)以下程序的输出结果是___C___。 # define f(x) x*x main( )

{ int a=6,b=2,c; c=f(a)/f(b);

printf(\ }

A)9 B)6 C)36 D)18 (31)若有以下定义:

char s[20]=\

则不能代表字符 o 的表达式是__A____。

A)ps+2 B)s[2] C)ps[2] D)ps+=2,*ps (32)以下程序的输出结果是__A____。 main( ) { int i;

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

{ if(i%2){printf(\ printf(\ }

printf(\ }

A)# * # * # B)# # # # # C)* * * * * D)* # * # * (33)有如下程序 main( ) {

int n = 9; while(n>6) {

n--;

printf(\ } }

该程序的输出结果是__B____。

A)987 B)876 C)8765 D)9876

(34)下列程序是将一个十进制正整数转化为一个八进制数,在程序的空白处应填入的语句是______。 #include main() {

int i=9,a,b[10]={0}; scanf(\ sub(a,b);

for(;i>=0;i--)printf(\ }

sub (int c,int d[]) { int e,i=0;

while(c!=0) {e=c%8; d[i]=e; __C_____; i++; }

return; }

A)c=e/8 B)c=c%8 C)c=c/8 D)c=e%8 (35)执行下面的程序段 int x=35; char z='A'; int B;

B=((x&15)&&(z<'a') ); 后,B 的值为__B____。

A)0 B)1 C)2 D)3

(36)若有以下定义: int t[3][2]; 能正确表示 t 数组元素地址的表达式是__C____。 A)&t[3][2] B)t[3] C)t[1] D)*t[2] 二、填空题

(1)若由以下定义,则不移动指针p,且通过指针p引用值为 98 的数组元素的表达式是 【_*(p+5)__或 p[5]___】 。

int w[10] = {23,54,10,33,47,98,72,80,61},*p = w; (2)以下程序的输出结果是 【_____7_______】 。 #define MAX(x,y) (x)>(y)?(x):(y) main( ) {

int a = 5, b = 2,c = 3, d = 3, t; t = MAX(a + b, c + d)*10; printf(\ }

(3)以下程序的输出结果是 【______0___】 。 main() {

unsigned short a=65536; int b;

printf(\ }

(4)若已经定义int a=25,b=14,c=19;,以下三目运算符(?:)所构成的语句的执行结果是 【_a=26,b=14,c=19__】 。

a++<=2&&b--<=2&&c++? printf(\

a=%d,b=%d,c=%d\\n\

(5)下面的 if 语句与 y=(x>=10)?3*x-11:(x<1)?x:2*x-1;的功能相同,请补充完整。 if( __x<10__ )

if( __x>=1__)y=2*x-1; else y=x; else y=3*x-11;

(6)函数 void fun(float *sn,int n)的功能是:根据以下公式计算 S,计算结果通过形参指针sn 传回;n 通过形参传入,n 的值大于等于 0。请补全程序。 S=1-1/3+1/5-1/7+...+1/(2n+1) void fun(float *sn,int n) { float s=0.0,w,f=-1.0; int i=0;

for(i=0;i<=n;i++) { f= __-1__ *f; w=f/(2*i+1); s+=w; }

*sn___ =s; }

(7)下面的函数 strcat(str1,str2)实现将字符串 str2 拼接到字符串 str1 后面的功能。请填空使之完整。

char *strcat(char *str1,char *str2) { char *t=str1;

while( __*str1_ ) str1++;

while( *str1++=*str2 ++ ); return(t);}

(8)以下函数 fun 用于求两个整数 a 和 b 的最大公约数。 fun(int a,int b) {int i,j,m,n; if(a>b)

{m=a;a=b; 【__b=m____】 ;} i=a;j=b;

while((n= __j%i_ )!=0) {j=i;i= __n_ ;} return(i);

}

本文来源:https://www.bwwdw.com/article/hj2.html

Top