西安工业大学C语言程序设计试题及参考答案-2015
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机程序设计基础
2014-2015学年第二学期
一.选择题:(共40分,每题1分)
1. 以下选项中,能用作用户标识符的是______。
A)float B)3bc C)_00 D)c#d
2. 以下选项中不能用作C程序合法常量的是______。
A)'%d' B)'\123' C)1e-3 D)12.34
3. sizeof( char )的值是______。
A)8 B)4 C)2 D)1
4. 若有定义:int x=3,y=2,z=1;,以下选项中错误的赋值表达式是______。
A)z=(x+y)++; B)z=(x=5)+y; C)z=x+++y; D)z=x+y==5;
5. 表达式5.8 – 14 / 5 + 14 % 5 的值是______。
A)7.0 B)7.8 C)5.0 D)5.8
6. 若有定义:int x=2; float y=3;, 则表达式x+y的类型是______。
A)char B)int C)double D)float
7. 若有定义:int x ; ,关系表达式1<x<10的值是______。
A)1 B)0 C)-1 D)无法确定
8. 若有定义:int x=2, y=3;, 则值为1 的表达式是______。
A)!(x<y) B)!y == '\0' C)x>0 && y<x D)x++==y
9. 若char c=’a’;则c=((c>=’a’ && c<=’z’) ? (c-32) : c)的值是______。
A)'a' B)'z' C)'A' D)'Z'
10. 若a 是数值类型,则逻辑表达式(a==0) || (a!=0)的值是______。
A)0 B)1 C)2 D)无法判断
11. 设int a=3,b=2,c=5,m=8,n=8;求解表达式(m=a>b) || (n=a>c)后m和n分别为______。
A)1和0 B)1和8 C)8和0 D)8和8
12. 若有定义:int m=1;, 则值为0 的表达式是______。
A)m%2==1 B)m/2 C)m%2!=0 D)m/2==0
13. 若int m=3, n=5, s; 则执行以下语句后s值是______。
if (n / m) s=m/n ; else s=m%n ;
A)0 B)2 C)3 D)5
14. 下列叙述中正确的是______。
A)在C语言中,多分支结构只能用switch 语句实现
B)在C语言中,多分支结构既可以用if语句实现,也可以用switch语句实现
C)break 语句必须与switch 语句中的case 配对使用
D)if语句可以嵌套使用,但switch 语句不能嵌套使用
15. 以下程序段中的循环______。
int k= -1 ; while ( k=1 ) { k=k+1 ; } ;
A)执行0次B)执行1次C)执行2次D)执行无限次16. 以下程序段执行后k的值是______。
int k , s=0 ; for ( k=1 ; k<=100 ; k++ ) s=s+1 ;
A)1 B)100 C)101 D)5050
17. 执行语句for ( k=1 , s=0 ; k<=10 ; k++ ) { s=s+k; k++; } 后s的值是______。
A)0 B)20 C)25 D)55
18. 以下程序段执行后a[5]的值是______。
int k , a[10] ; for ( k=0 ; k<5 ; k++ ) a[k]=k+1 ;
A)0 B)5 C)6 D)不确定
19. 下列叙述中正确的是______。
A)在C语言中,定义一维数组时,数组长度可以是常量,变量和表达式
B)在C语言中,引用一维数组元素时,数组下标可以是常量,变量和表达式
C)在C语言中,定义一维数组时不能对数组元素进行初始化
D)在C语言中,定义一维数组时数组长度可以省略
20. 若有定义int a[3][3] = { 1,2,3,4,5,6,7,8,9 } ; 则a[1][2]的值为______。
A)3 B)6 C)7 D)9
21. 若有定义int a[ ][3] = { 1,2,3,4,5,6,7 } ; 则数组a中共有______个元素。
A)7 B)8 C)9 D)不定
22. 若有定义char *s = ”OK” , *t = ”ok” ;,以下表达式值为1的是______。
A)strcmp ( s , t ) == 0 B)strcmp ( s , t ) != 0
C)strlen ( s ) != strlen ( t ) D)strlen ( s ) - strlen ( t )
23. 若有说明:char s[ ] = "abc\n123" ; 则数组s的长度是______。
A)6 B)7 C)8 D)9
24. 以下选项中正确的语句组是______。
A)char a[ ] ; a = "China" ; B)char *a ; a = { "China" } ;
C)char a[10] ; a = "China" ; D)char *a ; a = "China" ;
25. 若定义一个函数时未指定函数类型,则该函数的类型默认为______类型。
A)void B)char C)int D)double 26. 以下叙述中错误的是____。
A)用户定义的函数中可以没有return语句
B)用户定义的函数中可以有多个return语句,以便可以运用一次返回多个函数值C)用户定义的函数中若没有return语句,则应当定义函数为void类型
D)函数的return语句中可以没有表达式
27. 以下关于函数调用错误的描述是______。
A)出现在执行语句中B)出现在一个表达式中
C)作为一个函数的实参D)作为一个函数的形参
28. 若有以下函数首部,则下列针对此函数的函数声明语句中正确的是______。
void fun ( float a[10] , int n)
A)void fun ( float a, int n ) ; B)void fun ( float , int ) ;
C)void fun ( float *a, int *n ) ; D)void fun ( float *, int ) ;
29. 下面的函数调用语句中fc 函数的实参个数是______。
fc ( ( n1, n2 ) , ( n3, n4, n5 ) , ( n6, ( n7, n8 ) ) ) ;
A)3 B)4 C)5 D)8
30. 设有定义:double m ,*s ; float n , *t ;,则下列语句有错误的是______。
A)s = &n B)s = &m C)s = t D)s = &t
31. 设有定义:int x=3,y,*p=&x, *q=&y ;,则下列语句中使y不为3的语句是______。
A)y = x ; B)y = *p ; C)*q = *p ; D)q = p ;
32. 若有定义int a[10] ; 则用数组名a作为函数调用的实参,传递给形参的是______。
A)数组a的起始地址B)数组元素a[1]的地址
C)数组首元素的值D)数组a中的元素个数
33. 若有定义:int a[10] , *p = a ; 则下面表达式______与其他表达式类型不同。
A)a B)a+5 C)p D)*p
34. 设有如下定义语句,以下选项中,表达式的值为7的是______。
int s[ ] = { 1,3,5,7,9 }, *q = s ;
A)*( q+3 ) B)*s + 3 C)*q + 3 D)s + 3
35. 以下不能将s 所指字符串正确复制到t 所指存储空间的是______。
A)while ( *t = *s ){t++; s++; }B)for ( i=0 ; t[i] = s[i] ; i++ ) ;
C)do{*t++ = *s++ ; }while ( *s ) ; D)for ( i=0 , j=0 ; t[i++] = s[j++] ; ) ;
36. 若有定义char ( *fun ) ( );则在此定义了一个______。
A)指向字符型函数的指针变量B)基类型为字符型的指针变量
C)返回字符型指针值的函数D)字符型的指针数组
37. 设有定义:float a[3][5] ;若要使q=a;则q应如此定义______。
A)float q B)float *q C)float *q[5] D)float (*q)[5] 38. 以下正确的预处理命令是______。
A)include <string.h> B)include "string.h"
C)#include string.h D)#include <string.h>
39. 在C语言中,若有以下定义,则结构体变量t占用内存的字节数是______。
struct dt { int x ;char y ;double z ;} t ;
A)1 B)2 C)8 D)11
40. 若执行fopen函数时发生错误,则函数的返回值是______。
A)NULL B)1 C)–1 D)地址值
二.阅读程序,写出运行结果:(共40分,每题4分)
1.下面程序的输出结果为_____。
void main ( )
{ int a=2 , x=7 ;
if ( a>3 ) if ( a>5 ) x=1 ; else x=4 ;
printf ( "%d" , x ) ;
}
2. 下面程序的输出结果为_____。
void main( )
{ int a=11 , b=7 ;
do { b = b/2 ; a = a+b ; } while ( b>1 ) ;
printf( "%d" , a) ;
}
3. 下面程序的输出结果为_____。
void main ( )
{ int k , s=0 ;
for ( k = 1 ; k<=20 ; k++ )
if ( k%5 == 0 && k%3 != 0 ) s = s + k ;
printf ( "%d" , s );
}
4. 下面程序的输出结果为_____。
void main ( )
{ int i , j , a=0 , b=0 ;
for ( i=0 ; i<2 ; i++ )
{ for ( j=4 ; j>=0 ; j-- ) a++ ; }
printf ( "%d" , a , b );
}
5. 下面程序的输出结果为_____。
void main ( )
{ int k , s=0 , a[8]={ 1,2,3,4,5,6,7,8 } ;
for ( k=0 ; k<8 ; k++ ) { s=s+a[k]; if (k==3) break; }
printf ( "%d" , s ) ;
}
6. 下面程序的输出结果为_____。
void main ( )
{ char str[]= "20080512" ; int k , m=0 ;
for ( k=0 ; str[k]!= '\0' ; k++ ) if ( str[k]== '0' ) m++ ;
printf ( "%d" , m );
}
7. 下面程序的输出结果为_____。
int func ( int n )
{ if ( n%5!=0 && n%7==0) return 1 ;
else return 0 ;
}
void main( )
{ int a=105 , b=135 ;
if ( func(a) ) printf( "%d" , a ) ;
if ( func(b) ) printf( "%d" , b ) ;
}
8. 下面程序的输出结果为_____。
void fun( int m , int *p)
{ m = 2 ; *p = 3 ; }
void main( )
{ int a=5 , b=5 ;
fun ( a , &b ) ;
printf ( "%d" , a+b );
}
9. 下面程序的输出结果为_____。
int func( int *a , int n )
{ int m , *p ;
for( p=a , m=*p ; p<a+n ; p++ ) if ( *p > m ) m = *p ;
return m ;
}
void main( )
{ int a[] = { 3,6,9,0,2,5,8,1,4,7 };
printf ( "%d" , func(a,10) );
}
10. 下面程序的输出结果为_____。
void main ( )
{ int k ;
char *s[]={ "Beijing", "Wuhan", "Chongqing", "Lasa" };
char *p = s[0];
for ( k=1 ; k<4 ; k++ )
{ if ( strlen(p) < strlen(s[k]) ) p = s[k] ; }
printf ( "%d" , strlen(p) ) ;
}
三.编写程序:(共20分,每题6分)
1.编写程序,输出100以内所有不能被3整除的偶数之和(6分)
2.编写程序,输入3个字符串,输出其中最大的字符串(7分)
3.编写函数,求一维数组中最大元素的下标。
(7分)
参考答案
一.选择题:(共40分,每题1分)
1~5:CADAB 6~10:CABCB 11~15:BBABD 16~20:CCDBB 21~25:CBCDC 26~30:BDDAD 31~35:DADAC 36~40:ADDDA
二.阅读程序,写出运行结果:(共40分,每题4分)
题号程序1 程序2 程序3 程序4 程序5
运行结果7 15 35 10 10
题号程序6 程序7 程序8 程序9 程序10 运行结果 3 无输出8 9 9 三.编写程序:(共20分,每题6分)
1.编写程序,输出100以内所有不能被3整除的偶数之和(6分)void main ( )
{
int k , s=0 ;
for ( k = 2 ; k<100 ; k=k+2 )
if ( k%3!=0 ) s = s + k ;
printf ( "%f" , s );
}
2.编写程序,输入3个字符串,输出其中最大的字符串(7分)void main ( )
{
char s[3][40] ;
int m=0 , k ;
for ( k = 0 ; k<3 ; k++ ) gets( s[k] ) ;
for ( k = 1 ; k<=n ; k++ )
{ if ( strlen(s[m]) < strlen(s[k]) ) m=k ; }
puts ( s[m] );
}
3.编写函数,求一维数组中最大元素的下标。
(7分)
int func( int *a , int n )
{
int m = 0 , *p ;
for( p=a ; p<a+n ; p++ )
if ( *p > *(a+m) ) m = p - a ;
return m ;
}。