【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《C语言试卷带答案》,欢迎阅读!
线
甘 肃 工 业 职 业 技 术 学 院
2008-2009学年度第一学期《C语言程序设计》试卷(A)
C、struct D、struct stud[30] { {
int num; int num;
_ _ _ _ _ _ _ _ _ _ _ _ _ 号 学 _ _ _ _ _ _ _ _ _ _ __订_ _ 级 班 _ _ _ __ _ _ __ _ _ __ _ _ __ 名 姓 装题 号 一
二
三
四
总 分 分数
一.选择题(每小题2分,共40分)
1、下列可以正确表示字符型常量的是( )
A “\n” B “a” C ‘\t’ D 298 2、已经int i ; float f ;正确的表达式是 ( )
A (int f)%i B int( f ) % i C int (f % i) D(int)f% i 3、已知 int a,b ;执行语句a=( b=2*3,b*5) , b+6 ;变量a的值是( ) A、36 B、30 C、12 D、6
4、在C语言中,5种基本数据类型的存储空间长度的排列顺序为( C )
A、 char、 char=int C、 char、 char 5、下列定义数组的语句中正确的是哪个 ( )
A、int a (10) B、char str [ ] C、int n=5 D、#define size 10
int a[4][n] char
str1[size],str2[size+2]
6、若有说明int a[ ][3]={ 1,2,3,4,5,6,7},则a数组第一维的大小为( ) A、2 B、3 C、4 D、不确定 7、已知:char s[10] ,*p=s;下列错误的表达式是 ( )
A、s=p+5 B、p=s+5 C、s[2]=p[3] D、*p=s[0]
8、设有30个学生的成绩表,其中学号(int num)、姓名(char name)、成绩(int score),在下面结构体数组的定义中,不正确的是( D )
A、struct student B、struct student { {
int num; int num; char name[10]; char name[10]; int score; int score; }stud[30]; };
struct student stud[30];
char name[10]; char name[10]; int score; int score; }stud[30]; }; 9、设有如下形式的字符数组定义:
satic char str[ ]=”beijing” ;则执行下列语句后的输出结果为 ( )
printf(“%d \ n”,strlen (strcpy (str,”hello”))); A、7 B、8 C、5 D、9
10、若有以下数组定义:char a[]=”abcde”,b[]={‘a’,’b’,’c’,’d’,’e’};则正确的描述是( B )A、 a数组长度和b数组长度相同 B、 a数组长度大于b数组长度
C、 a数组长度小于b数组长度 D、 a数组和b数组存放相同的内容 11、输出较大字符串的正确语句是( C ) A、if(strcmp(str1,str2)) printf(“%s”,str1); B、if(str1>str2) printf(“%s”,str1);
C、if(strcmp(str1,str2)>0) printf(“%s”,str1); D、if(strcmp(str1)>strcmp(str2)) printf(“%s”,str1);
12、若调用一个函数,且此函数中没有return语句,则正确的说法是 ( ) A、该函数没有返回值 B、返回若干个系统默认值 C、能返回一个用户所希望的函数值 D、返回一个不确定的值 13、在一个文件中定义的全局变量的作用域为( D ) A、本程序的全部范围
B、离定义该变量的位置最近的函数 C、函数内部全部范围
D、定义该变量的位置开始到本文件结束 14、以下程序执行的结果是 ( ) int i=10;
main( ) { int j=1;j=func( ); printf(“%d , ”, j); j = func ( ); printf (“%d \n” , j);} func ( ) { static int k=0; k=k+i; i=i+10 ; return (k);} A、0,0 B、10,20 C、10,30 D、20,20
15、要想使语句printf(“%s”,str);显示yes!,str可以定义为( B ) A、char str=”yes!” B、char str[5]=”yes!”
C、char str={’y’,’e’,’s’,’!’} D、#define str “yes!” ;
16、下面有关for循环的正确描述是 ( )
A、for循环只能用于循环次数已经确定的情况 B、for是先执行循环体语句,后判断表达式 三、读程序,写结果(每小题4分,共20分)
1、main() 1、 显示结果:5,5,5,5 C、在for循环中,不能用break语句跳出循环体
D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 17、以下不正确的说法是 ( ) A、在C语言中允许函数嵌套调用
B、函数值类型与返回值类型出现矛盾时,以函数值类型为准 C、形参可以是常量、变量和表达式
D、C语言规定,实参和形参之间可以是值传递或地址传递
18、要使指针变量p指向一维数组a的第三个元素(下标为2),正确的赋值表达式是 ( ) A、p=&a 或 p = &a[2] B、p = a +2 或 p = &a[2] C、p=&a + 2 或 p = a[2] D、p = a + 2 或 p = a[2]
19、二维数组a[4][5],将其转换成等价的一维数组b[20],问原二维数组中元素a[2][3],在转换成一维数组后再一维数组中的下表应该是b[ ] ( )
A、6 B、9 C、13 D、14
20、已知:char c [9] = “computer”,*s=c ; int i ;则此列的输出语句中,错误的是( ) A、printf( “%s” ,*s); B、printf ( “%s” ,c) ;
C、printf( “%s” , s); D、for(i=0 ; i<8 ; i++) printf (“%c”,c [i]); 二、填空题(每小题2分。共20分) 1、写出下列表达式的值:
a+b%3*( int )( a-b )/4 ( 设a= ,b = 8 )
2、写出下面各逻辑表达式的值。(设a =3,b = 4,c=5) ! (a+b) + c-1 && b +c/2 3、下面程序的运行结果是
static char c[5]={ ‘a’,’b’,’\0’, ‘c’,’ \0’ }; printf(“%s”,c);
4、二维数组A【1】【2】中元素的值是 5 。 A[4][5]={{2,2,4},{4,6,5,6},{0}};
5、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 。 6、执行下面的语句后,n的值是 12 。 int m[20], *p1=&m[5],*p2=m+17,n; n=p2-p1;
7、p为一指针变量,写出表达式,用以实现:使p指向数组后一个元素,然后取该元素值 ++*p 。 8、设有定义语句“struct { int x ; int y ; }a = {1,5 },b = { 3,6 };”则执行语句printf (“ %d,%d,%d
\n” , ,,+;后的结果是 。 9、将数组元素7,5,2,8,3,9按冒泡排序方法从小到大的顺序排序,问共需 趟的排序,第3趟排序的结果是 。
{
int i,j,m,n; i= ( j=5,m = j- - ); n = ++j ;
printf(“%d,%d,%d,%d\n”,i,j,m,n); }
2、#include <>
main( ) 2{ int a[ ]={1,2,4,6,8,10},*p; p=a; *(p+2)+=3;
printf(“%d,%d \n” ,*p+2 ,*(p+2)); }
3、main() 3{
int a=1,b=10; do { b - = a; a++;
}while(b--<0);
printf(“a=%d,b=%d\n”,a,b); }
4、看程序填空:程序完成输出图形 * main() *** { int i , j ; ***** for(i= 1;i<=5; i++) ******* ( j=1; ;j++)
********* printf( printf( }
5、void swap (int *p ,int *q )
{ int t; 5、显示结果: 、显示结果:a=2,b=8
“*”); “\n”);} 、显示结果:
{for
t = *p; *p = *q ; *q = t ; }
void exchange ( int *q1 ,*q2 ,*q3) {
if(*q1>*q2)swap(q1,q2); if(*q1>*q3)swap(q1,q3); if(*q2>*q3)swap(q2,q3); }
void main ( ) {
int a=3,b=8,c=6 ;
int *p1=&a , *p2=&b , *p3=&c ; exchange (p1,p2,p3);
printf(“a=%d,b=%d,c=%d”,a ,b,c); }
四、编程题(第1小题8分,第2小题12分,共20分) 1、编写程序实现26个英文字母的倒序输出。
2、设计一个函数,用于计算下面数列前n项之和(以n为形参变量):2/1 , 3/2 , 5/3 , 13/8 , 21/13 .......
2、#include<>
void s(int n)
{
1、main()
float sum=0; {
int i,j=2,k=1,t;
for(i=0;i
char c1=’z’; { while(c1>’a’) sum=sum+(float)j/k;
{
t=k; printf(“%3c”,c1);
k=j;
j=k+t;
c1--; }
}
printf("%f",sum); printf(“%3c”,c1);
}
main()
} {
int n;
scanf("%d",&n); s(n); }
本文来源:https://www.wddqxz.cn/560c564c0540be1e650e52ea551810a6f524c80a.html