合肥学院2023年计算机C语言期末
本试卷为合肥学院2023年计算机C语言期末,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
计算机C语言期末
一、理论基础 (共20题,每题1分,共计10分)
( A )
1、两个或两个以上模块之间联系的紧密程度称为( )。
( B )
2、下面叙述不正确的是________。
( C )
3、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是______。
( C )
4、已知x=3、y=2则表达式x * =y+8的值为 ( )
( B )
5、在微机汉字系统中,一个汉字的机内码占的字节数是________。
( A )
6、若要对a进行++运算,则a应具有下面说明
( C )
7、列关于计算机中数的表示的叙述中,错误的是________。
( C )
8、下列各数据中,( ) 最小。
( C )
9、若给定条件表达式(m)?(a++):(a--)则下列选项中和表达式m等价的是________。
( D )
10、以下定义语句中,错误的是______。
( C )
11、已知字符'c' 的ascii码为99,语句printf ("%d,%c",'c','c'+1); 的输出为________。
( B )
12、下面四个选项中,均是合法的用户标识符的选项是________。
( A )
13、以下表达式中,其值不等于数值 3 的是________。
( D )
14、使用共用体变量,不可以________。
( C )
15、下面四个选项中,均是不合法的用户标识符的选项是________。
( B )
16、以下不合法的用户自定义标识符是________。
( D )
17、设已定义整型变量k,则下面的程序输出为________。k=017 ; s=111; printf ( ''%d'', ++k); printf ( ''%x\n'' ,s++);
( C )
18、若有以下数组说明,则i=10;a[a[i]]元素数值是____。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
( C )
19、以下数据中,不正确的数值或字符常量是()。
( D )
20、在 C语言中,能代表逻辑值“真”的是()。
二、控制结构 (共10题,每题1分,共计10分)
( D )
1、若int i=10;
执行下列程序后,变量i的正确结果是________。 switch (i)
{
case 0: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
( B )
2、c语言对嵌套if语句的规定是:else总是与( ) 。
( C )
3、当从键盘上输入字符"12134211"下面程序的 输出结果是________。
main( )
{
char s;
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k++)
{
scanf("%c",&s);
switch(s)
{
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);
}
( C )
4、运行以下程序后,如果从键盘上输入china#<回车>, 则输出结果为
#include <stdio.h>
main( )
{
int v1=0,v2=0;
char ch;
while ((ch=getchar( ))!='#') switch(ch)
{
case 'a': case 'h': default: v1++;
case 'o': v2++;
}
printf("%d,%d\n",v1,v2);
}
( A )
5、以下程序的输出结果是
main()
{
int a=0,i;
for(i=;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=2;
case 1: case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
( A )
6、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=4,b=3,c=2,d=1;
printf("%d",a<b?a:d<c?d:b);
}
( C )
7、以下程序的输出结果是________。
#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);
}
( D )
8、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=3则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
( B )
9、能正确表示a≥10或a≤0的关系表达式是________。
( D )
10、以下叙述中正确的是________。
三、循环结构 (共10题,每题1分,共计10分)
( D )
1、执行下面的程序后,a的值为________。
main()
{
int a,b;
for(a=1,b=1;a<=10;a++)
{
if(b%3==l)
{
b+=3;
continue;
}
b-=5;
}
}
( B )
2、以下正确的描述是________.
( D )
3、程序段如下:则以下说法中正确的是:
int k=5;
do
{
k--;
}
while(k<=0);
( C )
4、有如下程序
#include<stdio.h>
void main( )
{
int i,sum=0;
for(i=1;i<=3;sum++) sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是 _____________.
( D )
5、给定下面的代码: int i=1,j=10;
do
{
if(i++>--j) continue;
}
while(i<5) 执行完之后,i与j的值分别是多少 ( )
( B )
6、下面程序的运行结果是________。
#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 )
7、有以下程序
#include<stdio.h>
main ()
{
int i, n;
for (i = 0; i < 8; i++)
{
n = rand () % 5;
switch (n)
{
case 1:
case 3:
printf ("%d\n", n);
break;
case 2:
case 4:
printf ("%d\n", n);
continue;
case 0:
exit (0);
}
printf ("%d\n", n);
}
}
以下关于程序执行情况的叙述,正确的是______。
( C )
8、以下程序的输出结果是______。
#include <stdio.h>
main()
{
int i;
for(i=1;i<5;i++)
{
if(i%2) printf("*");
else continue;
printf("#");
}
printf("$\n");
}
( B )
9、有以下程序
main()
{
int i, j;
for(i=1;i<4;i++)
{
for(j=i;j<4;j++) printf("%d*%d=%d ",i,j,i*j);
printf("\n");
}
}
程序运行后的输出结果是______。
( A )
10、以下语句中,循环次数不为 10 次的语句是()。
四、数组/指针数组 (共10题,每题1分,共计10分)
( A )
1、若有定义:"int a[2][3];",则对a数组的第i行第j列元素的正确引用为( )。
( D )
2、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是________。
#define N 5
void fun(int x[N])
{
int m;
for(m=N-t;m>=O;m-)scanf("%d",________);
}
( B )
3、以下程序调用findmax函数返回数组中的最大值
findmax(int *a,int n)
{
int *p,*s;
for(p=a,s=a; p-a<n; p++) if ( ) s=p;
return(*s);
}
main()
{
int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是________。
( B )
4、定义如下一维数组:int a[5],*p; 则下列描述错误的是________。
( B )
5、下列关于数组的描述正确的是________。
( B )
6、以下不正确的定义语句是________。
( C )
7、以下程序输出的结果为 ______。
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 )
8、若有数组名作为函数调用的实参,传递给形参的是________。
( C )
9、如果用数组元素作为函数调用时的实参,则该实参向函数的形参传送的是________。
( C )
10、若有定义: int (*p)[4]; 则标识符p 。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( C )
1、以下叙述中不正确的是________。
( A )
2、下列选项中,能够满足"若字符串s1等于字符串s2,则执行st"要求的是________。
( A )
3、下列四组字符串中都可以用作c语言程序中的标识符的是________。
( A )
4、下列数据中属于"字符串常量"的是________。
( C )
5、下面程序段的运行结果是 char *s="abcde"; s+=2; printf("%d",s);
( C )
6、下列表达式中,类型可以作为int型的是________。
( C )
7、下面正确的字符串常量是________。
( C )
8、判断两个字符串是否相等,正确的表达方式是________。
( A )
9、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。
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++;
( A )
10、从键盘上输入某字符串时,不可使用的函数是()。
六、函数/函数指针 (共10题,每题1分,共计10分)
( B )
1、c语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是________。
( A )
2、对于一个正常运行的c程序,以下叙述中正确的是________。
( C )
3、下面函数的功能是
char* fun(char* strl,char* str2) {
while((*strl)&&(*str2++=*strl++));
return str2;
}
( C )
4、下面程序段的运行结果是________。
char a[]="abcdefgh"; char *p=a; p+=3; printf("%d\n",strlen(strcpy(p,"abcd")));
( A )
5、有以下程序:
void fun(int*a,int i,int j) {
int t;
if(i<j) t=a[i];
a[i]=a[j];
a[j]=t;
fun(a,++i,--j);
}
main() {
int a[]=1,2,3,4,5,6,i;
fun(a,0,5);
for(i=0;i<6;i++) printf("%d",a[i]);
}
执行后的输出结果是 ______。
( B )
6、下列程序的输出结果是
#include "stdio.h"
#define N 3
#define M 3
void fun(int a[M][N]) {
printf("%d\n",*(a[1]+2));
}
main()
{
int a[M][N];
int i,j;
for(i=0;i<M;i++) for(j=0;j<N;j++) a[i][j]=i+j-(i-j);
fun(a);
}
( C )
7、函数调用时,基本的参数传递方式有传值与传地址两种, (23) 。
( A )
8、printf函数中用到格式符%-6s,其中数字6表示输出的字符串占用6列。如果字符串长度小于6,则输出按方式 ________。
( D )
9、已定义以下函数int fun( int *p)
{
return *p;
}
则fun函数返回值足
( C )
10、c语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为________。
七、指针 (共10题,每题1分,共计10分)
( D )
1、有如下程序
#include<stdio.h>
void main()
{
char ch[80]="123abcdefg*&";
int j;
long s=0;
puts(ch);
for(j=0;ch[j]>'\0';j++) if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]+'e'-'e';
puts(ch);
}
该程序的功能是 __________.
( D )
2、若有说明int a[3][4]; 则a数组元素的非法引用是________。
( C )
3、有以下函数
int fun(char *s) {
char *t=s;
while(*t++);
return(t-s)
}
该函数的功能是______。
( C )
4、以下叙述中,不正确的是________。
( C )
5、下面程序的运行结果是
#include<stdio.h>
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 )
6、有以下程序
#include<string.h>
main()
{
char p[]={'a','b','c'},q[10]={'a','b','c'};
printf("%d%d\n",strlen(p),strlen(q));
}
以下叙述中正确的是________。
( C )
7、若有以下语句,则正确的描述是char a[] ="toyou";
char b[] ={′ t′ ,′o′ ,′ y′,′o′ ,′u′ };
( D )
8、以下选项中,合法的 c 语言常量是________。
( D )
9、以下对一维整型数组a的正确说明是________。
( B )
10、c语言程序中必须有的函数是________。
八、结构体 (共10题,每题1分,共计10分)
( B )
1、有以下程序
#include <stdlib.h>
struct node
{
int num;
struct node *next;
};
main( )
{
struct node *p,*q,*r;
int sum=0;
p=(struct node *)malloc(sizeof(struct node));
q=(struct node *)malloc(sizeof(struct node));
r=(struct node *)malloc(sizeof(struct node));
p->num=1;
q->num=2;
r->num=3;
p->next=q;
q->next=r;
r->next=null;
sum+=q->next->num;
sum+=p->num;
printf("%d\n",sum);
}
执行后的输出结果是________。
( B )
2、有以下程序
#include <stdio.h>
struct ord
{
int x ,y;
}
dt[2]= {1,2,3,4 };
main()
{
struct ord *p=dt;
printf("%d,",++p->x);
printf("%d\n",++p->y);
}
程序的运行结果是________。
( A )
3、有以程序
#include <stdio.h>
#include <string.h>
typedef struct
{
char name[9];
char sex;
float score[2];
} stu;
void f( stu a)
{
stu b={"zhao" ,’m’,85.0,90.0} ;
int i;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;i<2;i++) a.score[i]=b.score[i];
}
main()
{
stu c={"qian",’p’,95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);
}
程序的运行结果是________。
( D )
4、设有下面的定义:
struct st
{
int a;
float b;
} d;
int*p;
要使p指向结构变量d中的a成员,正确的赋值语句是________。
( C )
5、变量a所占的内存字节数是______。
union u{
char st[4];
int i;
long l;
};
struct A {
int c;
union u;
} a;
( D )
6、若有下面的说明和定义,则sizeof(struct aa)的值是________。
struct aa {
int rl;
double r2;
float r3;
union uu {
char u1[5];
long u2[2];
} ua;
} mya;
( C )
7、设有如下说明
typedef struct st
{
long a;
int b;
char c[2];
}
new;
则下面叙述中正确的是______。
( A )
8、以下关于逻辑运算符两侧运算对象的叙述中正确的是________。
( B )
9、相同结构体类型的变量之间,可以________。
( C )
10、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
九、程序题 (共10题,每题1分,共计10分)
( A )
1、有以下程序
#include <stdio.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);
}
程序运行后输出的结果是________。
( D )
2、执行下述程序后,输出的结果是________。
#define S(X) X*X
void main()
{
int a=9,k=3,m=2;
a/=S(k+m)/s(k+m);
printf("%d",a);
}
( B )
3、下列程序的运行结果是________。
#define ADD(x)X+X
main()
{
int m=1,n=2,k=3: int s=ADD(m+n)*k;
printf("s=%d",s):
}
( A )
4、有以下程序:
void fun(char c)
{
if(c>'x')fun(c-1);printf("%c",c);
}
main()
{
fun('z');
}
程序运行后的输出结果是________。
( C )
5、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是________。 if(x++>5) printf("%d",x); else printf("%d\n",x --);
( A )
6、以下程序段的输出结果是 char s[]="\\141\141abc\t"; printf ("%d\n",strlen(s));
( D )
7、以下程序的输出结果是 ___________.
main( )
{
int a=100;
if (a>100) printf("%d\n",a>100);
else printf("%d\n",a<=100);
}
( D )
8、设x,y均为int型变量,且x=10,y=3,则printf("%d,%d\n",x-,-y);
语句的输出结果是______。
( C )
9、有如下程序
main( )
{
int a=7,b=5,c=9;
if(a<b)if(b<0) c=0;
else c++;
printf("%d\n",c);
}
该程序的输出结果是______。
( C )
10、请选出以下程序段的输出结果______。
#include <stdio.h>
#define MIN(x,y) (x<y)?x:ymain()
{
int i,j,k;
I=10;
j=15;
K=10*MIN(i,j);
printf("%d\n",k);
}
相关标签:
- C语言
- 合肥学院
- 期末