甘肃农业大学C语言期末题目
本试卷为甘肃农业大学C语言期末题目,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言期末题目
一、理论基础 (共20题,每题1分,共计10分)
( B )
1、以下叙述中正确的是________。
( A )
2、两个或两个以上模块之间联系的紧密程度称为( )。
( D )
3、设变量已正确定义,则以下能正确计算f=n!的程序是________。
( C )
4、有以下定义语句,编译时会出现编译错误的是________。
( C )
5、以下选项中合法的标识符是________。
( B )
6、以下条件表达式中能完全等价于条件表达式 x 的是 _________.
( B )
7、若有定义int a=2; 则执行完语句a/=a*a; 后,a的值是________。
( B )
8、若需要利用形参直接访问实参,则应把形参变量说明为( )参数。
( A )
9、与十进制数96等值的二进制是________。
( A )
10、假设int类型的变量x、y和z,它们的初始值分别为10、20和30,则布尔表达式x<10‖y>10&&z<10的值为______。
( B )
11、在32位的计算机中,一个char型数据所占的内存长度的字节是________。
( B )
12、在下列的标识符中,错误的是________。
( A )
13、一个int类型变量和一个byte类型的常量做加法,结果是________类型。
( B )
14、设a=5、b=6、c=10、d=8、m=2、n=5,执行(m=a>b)&&(n=c>d)后n的值为______。
( B )
15、以下说法正确的是________。
( C )
16、若已定义x 和y 为double 类型,则表达式x=1, y=x+3/2 的值是________。
( C )
17、下列定义不正确的是________。
( B )
18、下面语句中( )是c 语言的正确赋值语句。
( C )
19、下列语句的输出结果是()。
printf("%d\n",(int)(2.5+3.0)/3);
( D )
20、在定义构造数据类型时,不能()。
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
( C )
2、执行以下程序段后,w的值为________。 int w='a',x=14,y=15; w=((x||y)&&(w<'a'));
( A )
3、switch语句不能用于下列哪种数据类型 ( )
( C )
4、下述语句中,_____中的if语句语法是错误的。 ( )
( A )
5、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=4,b=3,c=2,d=1;
printf("%d",a<b?a:d<c?d:b);
}
( C )
6、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=1,b=3;
if((++a<0)&&!(b--<=0)) printf("%d,%d\n",a,b);
else printf("%d,%d\n",b,a);
}
( A )
7、有以下程序:
main()
{
int a=3,b=4,c=5,d=2;
if(a>b) if(b>c) printf("%d",d+++ 1);
else printf("%d",++d+1);
printf("%d\n",d);
}
程序运行后的输出结果是 ______。
( B )
8、能正确表示a≥10或a≤0的关系表达式是________。
( C )
9、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
( D )
10、选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达 式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、从循环体内某一层跳出,继续执行循环外的语句是:________。
( C )
2、以下不正确的是 ______。
( C )
3、运行下面程序时,从键盘输入字母a,则输出结果是________。
#include<stdio.h>
main()
{
char ch;
ch=getchar();
switch(ch)
{
case'a':printf("aaaa\n");
case'b':printf("bbbb\n");
default:printf("cccc\n");
}
}
( A )
4、有以下程序:
#include<stdio.h>
main() {
int c;
while((c=getchar())!=’\n’)
switch(c-’3’) {
case 0: case 1:putchar(c+4);
case 2:putchar(c+4);
break;
case 3:putchar(c+3);
case 4:putchar(c+3);
break;
}
printf("\n");
}
从第一列开始输入数据(<cr>代表一个回车符):3845<cr>,则程序输出结果为________。
( B )
5、下面程序的运行结果是________。
#include <stdio.h>
main() {
int a=1,b=10;
do
{
b-=a;
a++;
}
while(b--<0);
printf("a=%d,b=%d\n",a,b);
}
( D )
6、下面有关for循环的正确描述是________。
( D )
7、循环语句"for(i=1;i<0;i++) i++; "的循环次数是________。
( A )
8、以下说法正确的是________。
( A )
9、以下程序的运行结果是________。
main()
{
int n;
for(n=1;n<=10;n++)
{
if(n%3==0) continue;
printf("%d",n);
}
}
( C )
10、下面程序段。x=3;
do
{
y=x--;
if(!y)
{
printf("*");
continue;
}
printf("#");
}
while(1<=x<=2);
四、数组/指针数组 (共10题,每题1分,共计10分)
( C )
1、下述对c语言字符数组的描述中错误的是________。
( B )
2、以下能正确定义一维数组的选项是________。
( C )
3、若有以下定义和语句: int s[4][5],(*ps)[5]; ps=s; 则对s数组元素的正确引用形式是________。
( C )
4、若有以下定义和语句,且 0 ≤ i<10 则对数组元素的错误引用是______。 int a[10]= { 1,2,3,4,5,6,7,8,9,10 },*p,i; p=a;
( C )
5、在c语言中引用数组元素时,其数组下标的数据类型只能是________。
( D )
6、已有定义:int i,a[10],*p; 则合法的赋值语句是________。
( C )
7、下列关于数组初始化的说法,正确的是________。
( A )
8、有以下程序:
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10,p++)printf("%d,",*p);
}
程序运行后的输出结果是________。
( D )
9、若有说明语句 char a[ ]="it is mine"; char *p="it is mine"; 则以下不正确的叙述是________。
( A )
10、对于定好的数组,系统会自动为该数组分配内存空间,char c[20]= { "hello world" }对于c对应的内存中的地址编号是2000,则c[4]对应的内存地址的编号为________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( D )
1、以下能正确定义字符串的语句是________。
( A )
2、下列数据中属于"字符串常量"的是________。
( C )
3、null是指 ________。
( B )
4、有以下程序
#include<stdio.h>
main()
{
char s[]="012xy\08s34f4w2";
int i, n=0;
for(i=0; s[i]!=0; i++) if(s[i]>='0'&&s[i]<='9') n++;
printf("%d\n", n);
}
程序运行后的输出结果是______。
( D )
5、下列字符串中可以用作c标识符的是________。
( C )
6、顺序执行下列程序语句后,则b的值是 string a="hello"; string b=a.substring(0,2);
( C )
7、下列选项中,表示字符串末尾的结束标志是________。
( B )
8、宏定义用于将一个标识符定义为一个
( B )
9、下列数据中属于"字符串常量"的是________。
( A )
10、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。
char x[]="programming";
char y[]="fortran";
int i=0;
while (x[i]!='\0'&&y[i]!='\0')
if (x[i]==y[i]) printf("%c", _____);
else i++;
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、函数调用strcat(strcpy(str1,str2),str3)的功能是________。
( A )
2、一个c程序由函数a( ),b( ),c( )和函数p( )构成,在函数a( )中分别调用了函数b( )和函数c ( ),在函数b( )中调用了函数a( ),且在函数p( )中也调用了函数a( ),则可以说
( B )
3、结构化程序设计的三种基本逻辑结构是________。
( D )
4、采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是________。
( B )
5、以下叙述中不正确的是________。
( A )
6、以下正确的函数头定义形式是________。
( A )
7、下列不属于c语言关键字的选项是________。
( C )
8、设有如下函数定义:int f(char *s)
{
char *p=s;
while(*p!='\0') p++;
return(p-s);
}
如果在主程序中用下面的语句调用上述函数,则输出结果为________。printf(""%d\n"",f(""goodbey!""));
( B )
9、有以下程序段若要给 c1、c2、c3 分别输入字母a,b,c,则以下对输入形式的描述正确的是________。
( A )
10、函数 rewind 的作用是()。
七、指针 (共10题,每题1分,共计10分)
( D )
1、若有说明"char s1[30]="abc",s2[]="defghi", 则在使用函数strcat(s1,s2)后,结果是________。
( D )
2、设有如下定义: int arr[]={6,7,8,9,10};
int*ptr;
ptr=art;
*(ptr2)=2; printf("%d,%a\n",*ptr,*(ptr2));
则下列程序段的输出结果为( )。
( D )
3、s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s; 则以下选项中正确的是________。
( A )
4、若有定义语句: int a[4][10],*p,*q[4]; 且0<=i<4,则错误的赋值是________。
( B )
5、设有以下函数:
#include <stdio.h>
int f(int a)
{
int b=0,c;
c=3;
b++ ;
c++;
return (a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是 ______.
void main()
{
int i;
for(i=0;i<3;i++)
printf("%d\n",f(i));
}
( C )
6、若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10 },*p=a; 则值为6的表达式是_______。
( D )
7、c语言规定,函数返回值的类型是________。
( D )
8、算法一般都可以用哪几种控制结构组合而成( )
( C )
9、下列程序的运行结果是______。
main()
{
int a[6],i;
for(i=2;i<6;i++)
{
a[i]=4*(i-2*(i>3))%5;
printf("%2d",a[i]);
}
}
( C )
10、若x为int型变量,则以下函数fun的类型为________。
fun(x)
{
printf("%d\n",x);
}
八、结构体 (共10题,每题1分,共计10分)
( B )
1、下列程序的输出结果是________。
main()
{
struct st
{
int y,x,z;
}
;
union
{
long i;
int j;
char k;
}
un;
printf("%d,%d\n",sizeof(struct st),sizeof(un))
}
( A )
2、有以下程序
#include <studio.h>
#include <string.h>
struct a
{
int a;
char b[10];
double c;
};
void f(struct a t);
main()
{
struct a a={1001,"zhangda",1098.0};
f(a);
pringt("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
void f(struct a t)
{
t.a=1002;
strcpy(t.b,"changrong");
t.c=1202.0;
}
程序运行后的输出结果是________。
( A )
3、若有下面的说明和定义:
struct test
{
int ml;
char m2;
float m3;
union uu
{
char ul[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test )的值是________。
( C )
4、设有以下说明语句:
typedef struct stu
{
int a;
float b;
} stutype;
则下面叙述中错误的是________。
( D )
5、有如下定义
struct person
{
char name[9] ;
int age ;
};
struct person class[10]={" johu" , 17 , "paul" , 19 , "mary" , 18 , "adam" , 16};
根据上述定义,能输出字母 m 的语句是______。
( A )
6、c语言中用于定义类的关键字是________。
( D )
7、若有以下说明和语句:
struct st
{
int n;
char *ch;
}
;
struct st a[3]
{
5,"abc",7,"def",9,"ghk"
}
,*p=a 则值为6的表达式是______。
( B )
8、有如下定义
struct person
{
char name[9];
int age;
}
;
struct person class[10] = {"john",17, "paul",19, "mary",18, "adam",16};
根据上述定义,能输出字母a的语句是______。
( D )
9、设有以下语句
typedef struct tt
{
char c;
int a[4];
}
cin;
则下面叙述中正确的是______。
( B )
10、有以下程序
struct stu
{
char num[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.2f\n",sum);
}
程序运行后的输出结果是________。
九、程序题 (共10题,每题1分,共计10分)
( D )
1、阅读下面的程序
main()
{
int i,j;
scanf("%3d%2d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
如果从键盘上输入1234567<回车>,则程序的运行结果是________。
( C )
2、#include <stdio.h>
main()
{
char a,b,c,d;
scanf("%c%c",&a,&b);
c=getchar();
d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第一列开始,<cr>代表回车,注意:回车是一个字符) 12<cr> 34<cr> 则输出结果是:________。
( C )
3、有以下程序
main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
//短路问题 printf("%d,%d\n",k,m);
}
程序运行后的输出结果是________。
( B )
4、下面程序是计算 n 个数的平均值 , 请填空 . _________
#include<stdio.h>
void main( )
{
int i,n;
float x,avg=0.0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%f",&x);
avg=avg+______;
}
avg=________;
printf("avg=%f\n",avg);
}
( D )
5、以下程序的功能是 : 从键盘上输入若干个学生的成绩 , 统计并输出最高成绩和最低成绩 , 当输入负数时结束输入。请填空。 __________
#include<stdio.h>
void main( )
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while (________ )
{
if (x>amax) amax=x;
if (______) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
( D )
6、以下程序执行时输入 language programming< 回车 > , 输出结果是 __________.
#include <stdio.h>
void main( )
{
char str[30];
gets(str);
printf("str=%s\n",str);
}
( B )
7、以下程序的输出结果是_______。
#define N 10
void fun(int a[],int n,int m)
{
int i;
for(i=m;i>=n;i--)A[i+1]=a[i];
}
main( )
{
int i,a[N]={1,2,3,4,5,6,7};
fun(a,2,6);
for(i=0;i<4;i++)printf("%d",a[i]);
}
( A )
8、有以下程序
#include <stdio.h>
main()
{
int n, *p=null;
*p=&n;
printf("input n:");
scanf("%d",&p);
printf("output n:");
printf("%d\n",p);
}
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是______。
( B )
9、下面程序段的运行结果是________。char c[5]={'a','b','\0','c','\0'}; printf("%s",c);
( B )
10、若 k 为 int 型变量,则以下程序段的执行结果是()。k=-8567; printf("|%06D|\n",k);
相关标签:
- C语言
- 甘肃农业大学
- 期末题目