C语言测试

C语言测试

  • 选择题下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确的答案填在答题卷相应的位置。(每题2分,共30分)

(1) 有以下程序

#include <sthio.h>

main()

{

int A=0,B=0,C=0;

C=(A-=A-5);

(A=B,B+=4);

printf(“%d, %d, %d\n”,A,B,C)

} 程序运行后输出的结果是

A) 4,4,4  B) 0,4,5    C) 4,4,5    D)0,0,0

2.以下程序的输出结果是(  )

#include <stdio.h>

int main()

{

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

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

return 0;

}

A. 68    B.0     C.字符'D'的地址    D.不确定的值

(3) 有以下程序

#include <stdio.h>

main()

{

int s = 0,n;

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

{

switch(s)

{

case 0:

case 1: s+=1;

case 2: s+=2;break;

case 3: s+=3;

default: s+=4;

}

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

}

} 程序运行后的结果是

 A) 3,10,10 B) 1,2,4  C) 1,3,6  D) 3,10,14

(4) 有以下程序(a,b,c的ascii码值分别为97,98,99)

#include <stdio.h>

main ( )

char *s={"abc"};   

do   

printf("%d",*s%10);

++s; 

} while (*s);

} 程序运行后的输入结果是

 A)789    B)979899     C)abc        D)7890 

(5) 有以下程序

#include <stdio.h>

main()

{

int i,j,m=1;

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

{

for(j=3;j>0;j--)

{

if(i+j > 3)

continue;

  m *= i*j;

}

}

printf(“m=%d\n”,m);

}

程序运行后的输出结果是

 A)  m=5   B) m=4  C) m=6   D) m=2

(6) 下列语句组中,正确的是

A)  char *s;s=”Olympic”;     B) char s[7]; s=”Olympic”;

C)  char *s;*s={“Olympic”};    D) char s[7]; s={”Olympic”};

(7) 设有定义double a[10], *s=a;,以下能够代表数组元素a[3]的是

A)(*s)[3]       B)*(s+3)

C) *s[3]        D)*s+3

(8) 若有以下定义和语句

char s1[10]=”abcd!”,*s2=”\n123\\”;

printf (”%d  %d\n”, strlen(s1),  strlen(s2) );

则输出结果是

A) 5  5     B) 10  5     C) 10  7    D) 5 

(9) 有以下程序

#include <stdio.h>

int f(int m)

static int n = 0;

n += m;

return n;

}

main ( )

{

int  n=0;

printf(“%d,”, f(++n));

printf(“%d\n”, f(n++));

 } 程序运行后的输出结果是

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

(10) 有以下程序

void  fun(char  *w, int  m)

{

char s,*p1, *p2;

p1 = w;  

p2 = w+m-1;   

while (p1<p2)

{

s=*p1; 

*p1=*p2; 

*p2=s; 

p1++; 

p2--;

}

}

main( )

Char a[]="123456";   

fun( a, strlen(a) );

puts(a);

} 程序运行后的输出结果是

A)654321   B)116611    C)161616   D)123456

(11) 有以下程序

void swap(int a, int b)

{

int t = a;

a = b;

b = t;

}

int main()

{

int m = 3, n = 4;

swap(m++, ++n);

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

}

程序运行后的输出结果是

A)5,4    B)4,5     C)3,4    D)4,3

(12) .有以下程序

main()

{

char *s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

执行后输出结果是(  )

A.'w',"two" B.'t' "two"

C.'w',"one" D.'t' "three"

(13).下面程序段运行结果是( )

char a[]=”language”,*p;    p=a;

while(*p!=’u’) {printf(“%c”,*p-32);p++;}

A. LANGUAGE           B. language

C. LANG               D. language

(14)、下面程序运行结果( )

#include<stdio.h>

void main()

{

int a=28,b;

char s[10],*p;

p=s;

do{

b=a%16;

if(b<10) *p=b+48;

else *p=b+55;

p++;

a=a/5;

}while(a>0);

*p=’\0’;

puts(s);

}

A.10    B. C2             C.\0   D.C51 

(15)、以下程序执行后的输出结果是()。

char *a[3]={hello,world,china};

char **p = a+1;

printf(%s,,*a+1);

printf(%s\n,*(p+1));

A) hello,china      B) ello,china      C) world,hina      D) orld,hina

二。 填空题,请将每空正确的答案写在答卷的相应位置。((1)—(8)题,每题2分,第(9)题6分,共22分)

(1).unsigned char a = 257; char b=a; printf(“%d”,b); 输出结果为:    

  _____________1_______________________________

(2). .表达式(int)((double)5/2+2.5)的值是

_________5_____________________________________

(3) 请写出浮点型变量a与10比较是否相等的表达式:    。

a>=10-0.000001&&a<=10+0.000001

_________________________________________

(4) 以下程序段的输出结果是 _rgb____

main()

{

char *ch[4]={“red”,”green”,”blue”};

int i=0;

while (ch[i])

{

putchar (ch[i][0]);

i++;

}

}

(5) 有以下程序

void fun(char *str)

{

char temp;

int n,i;

n = strlen (str);

temp = str[n-1];

for (i=n-1; i>0; i--)

str[i] = str[i-1];

str[0] = temp;

}

main()

{

char s[50];

scanf(“%s”,s);

fun(s);

printf(“%s\n”,s);

} 程序运行后输入:abcdef<回车>,则输出结果是      

fabcde

——————————

(6).int a=1,b=2,c=a>=1||++b,

printf("%d",b);输出结果为______2____________

(7).下面程序的运行结果是___10________

#define ADD(x) x+x

void  main()

{

int m=1,n=2,k=3;

int sum=ADD(m+n)*k;

printf("sum=%d", sum);

}

(8).以下程序的运行结果是___1__________

main()

{

int k=4,a=3,b=2,c=1;

printf(“\n%d\n”,k<a?k:c<b?c:a);

}

(9).某32位系统下, C程序,请计算sizeof 的值.

char str[]=”\”Name\\Address\”\n”;

char *p = str ;

char array[10] = {‘h’,’e’,’l’,’l’,’\0’,’o’};

请计算

sizeof (str ) = ___15______  

sizeof ( p ) = _____4_____  

sizeof ( array ) = __10___________   

strlen(array) = _____4____________ 

void Foo ( char str[100]){

请计算

sizeof( str ) = __4________________ 

}

简答题。((1)—(3)题,每题5分,第(7)题7分,共22分)

(1) 写一个宏MIN,这个宏输入两个参数并返回较小的一个

#define MIN(x,y) ((x)<(y)?(x):(y))

(2) 请问运行Test 函数会有什么样的结果,为什么会有这样的结果?

char *GetMemory(void)

{

char p[] = "hello world";

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory();

printf(str);

}


char p[]="hello world";
 
相当于char p[12]strcpy(p," hello world" ).
 
数组p[]为函数内的局部自动变量,存放在函数对应的栈中,在函数返回后,
 函数栈内存被回收,内存已经被释放,因此它的内容是不确定的。

(3)写出sizeof 和strlen 的区别

sizeofstrlen有如下区别:

1sizeof是一个操作符,strlen是库函数;

2sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为’\0’的字符串做参数;

3)编译器在编译时就计算出了sizeof的结果。而strlen函数必须在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度;

4)数组做sizeof的参数不退化,传递给strlen就退化为指针了。

(4)用变量a给出下面的定义 

a) 一个指向整型数的指针

b) 一个指向指针的的指针,它指向的指针是指向一个整型数

c) 一个有10个整型数的数组

d) 一个有10个指针的数组,该指针是指向一个整型数的

e) 一个指针,该指针指向一个有10个整型数的数组

a)int * pa;

b)int ** pa

c)int pa[10]

d)int * pa[10]

e) int(*pa)[10]

四、 编程题(共3题,共26分)

1.自定义函数编写char *strcpy(char *str,const char *dest)(8分)

2、输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符有多少个?(8分)

3.打印杨辉三角(10分)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值