C语言程序设计模拟题

更新时间:2023-05-27 21:56:01 阅读量: 实用文档 文档下载

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

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

一、选择题

(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的结果为类型。

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

{ float x=123.456; printf("%-5.2f\n",x); }

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

A)123.4 B)123.5 C)123.45 D)123.46 (6)下面语句的输出结果是___C___。 printf("%d\n",strlen("\t\"\065\xff\n"));

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

{ int a=0,b=0,c=0; if(++a>0| ++b>0) ++c;

printf("\na=%d,b=%d,c=%d",a,b,c); }

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("%d",i++);break;} }

printf("%d",i++); }

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<A); printf("%d\n",sum); }

A)2500 B)2050 C)4 D)0 (10)下列程序的输出结果是__D____。 main() { int i=3; switch(i) { case 1:

case 2:printf("%d",i); case 3:

default:printf("OK"); } }

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

{ int m[][3]={1,4,7,2,5,8,3,6,9}; int i,k=2; for(i=0;i<3;i++)

{ printf("%d",m[k][i]);} }

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

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

A)判断循环结束的条件不合法 B)是无限循环 C)循环一次也不执行 D)循环只执行一次 (13)下面程序的输出结果是__C____。 unsigned fun(unsigned num) { unsigned k=1; do {

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

{ unsigned n=26; printf("%d\n",fun(n));

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

(14)已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序__C____。 main() { char a='A'; int b=20;

printf("%d,%o",(a=a+a,a+b,b),a+'a'-'A',b); }

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("%d,",d); } main()

{ int a=3;

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

printf("%d\n",d); }

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

#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("%s",s1);gets(s2);gets(s3); puts(s1);puts(s2);puts(s3); }

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

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)求字符串存放的位置

(21)以下程序的输出结果是__A____。 main()

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

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

char str[]="ABCD",*p=str;

printf("%d\n",*(p+4)); 程序段的输出结果是_。

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[]="string", str2[8], *str3, *str4="string"; 则__C D____不是对库函数的正确调用。

A)strcpy(str1,"HELLO1"); B)strcpy(str2,"HELLO2"); C)strcpy(str3,"HELLO3"); D)strcpy(str4,"HELLO4"); (25)请读程序: #include <stdio.h> #include <string.h> main()

{ char *s1="AbCdEf",*s2="aB"; s1++;s2++;

printf("%d\n",strcmp(s1,s2)); }

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

(26)下面程序的输出是___A___。 char s[]="ABCD"; main() { char *p;

for(p=s;p<s+4;p++) printf("%s\n",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]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"}; char **p; int i; p=alpha; for(i=0;i<4;i++) printf("%s",p[i]); }

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

{ char *p[]={"BOOL","OPK","H","SP"}; int i;

for(i=3;i>=0;i--,i--) printf("%c",*p[i]);

}

A)SO B)SP C)SPOPK D)SHOB (29)以下程序的输出结果是__B____。 #include <stdio.h> void prt(int *x,int *y,int *z)

{ printf("%d,%d,%d\n",++*x,++*y,*(z++));} 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 <stdio.h> #define SQR(x) x*x main() { int a,k=3; a=++SQR(k+1); printf("%d\n",a); }

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

(32)下面是对宏定义的描述,不正确的是___C___。 A)宏不存在类型问题,宏名无类型,它的参数也无类型

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

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

是___C___。

main()

{ unsigned int a=32,b=66; printf("%c\n",a|b); }

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("%d\n",k); }

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

{ int m=3; return(x*y-m); } main()

{ int a=7,b=5;

printf("%d\n",fun(a,b)/m);

}

(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("%d\n",k); }

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

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

printf("%d,",*p); printf("%d\n",*(p+9)); }

(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++)

{ 【__】 ; fac=fac/k; s=s+fac; 。

}

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

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

printf("x=%o",x); }

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

{ 【】 ; --i; j=i; }

if( 【____】 ) { k=i+n; if(i+n<=length) while(k<length) s[j++]=s[k++]; s[j]='\0'; }

(11)下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填

空。

int word(char *s) { int num=0,flag=0; while(*s)

{ if( 【___】 ==' ') flag=0;

else if( 【_____】 ){flag=1;num++}

return 【__】 ;

}

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

一、选择题 (1)请读程序: #include <stdio.h> main( ) {

int a; float b, c;

scanf("%2d%3f%4f",&a,&b,&c); printf("\na=%d,b=%f,c=%f\n",a,b,c); }

若运行时从键盘上输入 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 <stdio.h> 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("%d,%d,%d\n",a,b,c); }

A)5,2,3 B)-5,-12,-7 C)-5,-12,-17 D)5,-2,-7

(4)下面程序在屏幕上的输出是_B___。 main( ) {

printf("ab \b\b c"); }

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",i+++++i);的输出为_D___。 A)10 B)11 C)12 D)语法错误 (7)下面程序输出的结果是__A___。 main( ) {

int i=5,j=9,x; x=(i==j?i:(j=7)); printf("\n%d,%d",i,j);

}

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

scanf("%d",&x);

if(x++>5) printf("%d\n",x); else printf("%d\n",x--); }

则输出是_。

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

则值为 3 的表达式是_。

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)a||+c&&b-c D)!((a<b)&&!c||1) (11)以下程序运行后,输出结果是__C____。 main() {

char *d[]={"ab","cde"}; printf("%x",d[1]); }

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

int **k, *j,i=100; j=&i; k=&j; printf("%d\n",**k); }

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

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) )

#include <stdio.h> main( ) { char c[6]; int i=0;

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

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

则输出结果为 _____ 。

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<stdio.h> #include<string.h> main( )

strcpy(str+2,strcat(p1,p2) ); printf("%s\n",str); }

的输出是 __。

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("%d",*p); }

} 的输出是___。

A)23 B)26 C)33 (18)以下程序的输出结果是__C____。 #include <stdio.h> #include <string.h> fun(char *w,int n) {

char t,*s1,*s2; s1=w;s2=w+n-1; while(s1<s2) { t=*s1++; *s1=*s2--; *s2=t; } D)36

main() {

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

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

{ int x=100, a=10, b=20, ok1=5, ok2=0; if(a<b) if(b!=15) if(!ok1) x=1; else if(ok2) x=10; x=-1;

printf("%d\n",x); }

的输出是__A____。

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

int x=32;

printf("%d\n",x=x<<1); }

的输出是__。

A)100 B)160 (21)以下程序的输出结果是__B____。 #include <stdio.h>

C)1711717 D)7177171 C)1 D)不确定的值 C)120 D)64

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

PRINT1(FUDGE(5)*x); }

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

int a[10],i=0;

while(i<10) scanf("%d",___A___); : : }

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;

{

int a[4][4]={{1,2,3,4},{0,2,4,6},{3,6,9,12},{3,2,1,0}}; printf("%d\n",f(a)); }

A)22 B)11 C)18 D)16 (25)不能把字符串"Hello!"赋给数组 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,"Hello!");

D)char b[10];

b="Hello!";

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

{ int x=3 ,y=6,a=0; while(x++!=(y-=1)) { a+=1;

if (y<x) break; }

printf("x=%d,y=%d,a=%d\n",x,y,a); }

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;

{

int x=5,y=3,z=7,r; r=fun((y,x+y),z); r=fun(x,y); printf("%d\n",r); }

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

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

{ char *s="12134211"; 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++; }

printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }

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("k=%d,k=%o,k=%x\n",k,k,k); }

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

Top