上海海洋大学2023年计算机C语言样卷
本试卷为上海海洋大学2023年计算机C语言样卷,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
计算机C语言样卷
一、理论基础 (共20题,每题1分,共计10分)
( B )
1、有以下程序段 int j;
float y;
char name[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入55566 7777abe后,y的值为( )。
( D )
2、下列选项中不会引起二义性的宏定义是________。
( A )
3、设有定义:int a=2,b=3,c=4; ,则以下选项中值为0的表达式是________。
( D )
4、设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是________。
( D )
5、不合法的常量是: 。
( B )
6、设有以下语句,则z的二进制值是 char x=3,y=6,z; z=x^y<<2:
( A )
7、下面关于形参与实参的说法,正确的是________。
( B )
8、下列常数中,不合法的c常量是________。
( C )
9、在下列字符序列中,不可用做c语言标识符的是________。
( B )
10、下列可用于c语言用户标识符的一组是________。
( C )
11、设有定义int x; float y; 则10+x+y值的数据类型是________。
( A )
12、若变量x、y已正确定义并赋值,以下符合c语言语法的表达式是________。
( C )
13、下面判断正确的是________。
( A )
14、以下关于c/c语言指针变量的叙述中,正确的是________。
( B )
15、c语言提供的合法的数据类型关键字是______?
( A )
16、设有定义:int a=64,b=8; 则表达式(a&b)||(a&&b)和(a|b)&&(a||b)的值分别为
( B )
17、若有以下程序段:int a=3,b=4; a=a^b; b=b^a; a=a^b; 则执行以上 语句后,a和b的值分别是________。
( C )
18、下列程序段的输出结果为________。 int x=3,y=2; printf("%d",(x-=y,x*=y+8/5));
( A )
19、c风格的注释* c 风格的注释,也称块注释或多行注释,以 ▁▁▁ 开始,以 ▁▁▁ 结束。
( D )
20、若变量已正确定义且 k 的值是 4,计算表达式 ( j =4, k--) 后,j和k的值为____
二、控制结构 (共10题,每题1分,共计10分)
( A )
1、与 y=(x>0?1:x<0?-1:0); 的功能相同的if语句是________。
( D )
2、三种基本结构中,能简化大量程序代码的是________。
( A )
3、下列程序的输出结果是________。
main()
{
int a=0,i;
for(i=1;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=1;
case 1;
case 2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
( D )
4、c语言对嵌套的if语句的规定是:else总是与 配对。
( A )
5、在c程序中,判断逻辑值时,分别用( )表示逻辑值"真"、"假"。
( A )
6、if语句的基本形式是:if(表达式)语句,以下关于"表达式"值的叙述中正确的是______。
( C )
7、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
( A )
8、main()
{int x=1,a=0,b=0;
switch (x)
{ case 0: b++;
case 1: a++;
case 2: a++;b++;}
printf("a=%d,b=%d",a,b);}
该程序的输出结果是( )
( C )
9、a,b 为整型变量,二者均不为 0,以下关系表达式中恒成立的是()。
( D )
10、选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达 式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。
三、循环结构 (共10题,每题1分,共计10分)
( D )
1、以下程序的输出结果是
main( )
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if (b>=10) break;
if (b%5==1)
{
b+=5;
continue;
}
}
printf("%d\n",a);
}
( C )
2、有以下程序
main()
{
int k=4,n=0;
for( ; n<k ; )
{
n++;
if(n%3!=0) continue;
k--;
}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是________。
( D )
3、下面程序的输出结果是 ____________.
main( )
{
int i,k=0, a=0, b=0;
for(i=1;i<=4;i++)
{
k++;
if (k%2==0)
{
a=a+k;
continue;
}
b=b+k;
a=a+k;
}
printf("k=%d a=%d b=%d\n",k,a,b);
}
( D )
4、给定下面的代码: int i=1,j=10;
do
{
if(i++>--j) continue;
}
while(i<5) 执行完之后,i与j的值分别是多少 ( )
( C )
5、下列语句中执行跳转功能的语句是________。
( D )
6、已知:int a,b; 下列switch语句中,( )是正确的。
( C )
7、有以下程序
#include<stdio.h>
main ()
{
int i, j, x = 0;
for (i = 0; i < 2; i++)
x++;
for (j = 0; j <= 3; j++)
{
if (j % 2)
continue;
x++;
x++;
}
printf ("x=%d\n", x);
}
程序执行后的输出结果是______。
( B )
8、有如下程序
#define N 2
#define M N+1
#define NUM 2*M+1
main()
{
int i;
for(i=1;i<=NUM;i++) printf("%d\n"i)
}
该程序中的for循环执行的次数是______。
( B )
9、若有程序段:x=99; while(x-2) x--; 则循环结束时,x=________。
( C )
10、下面程序段。x=3;
do
{
y=x--;
if(!y)
{
printf("*");
continue;
}
printf("#");
}
while(1<=x<=2);
四、数组/指针数组 (共10题,每题1分,共计10分)
( D )
1、若要定义一个具有5个元素的整型数组,以下错误的定义语句是________。
( B )
2、若有以下数组说明,则i=10; a[a[i]]元素数值是________。 int a[12]= { 1,4,7,10,2,5,8,11,3,6,9,12 } ;
( B )
3、若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10 },*ia=a; 则不能正确表示a数组元素的表达式是 ______。
( B )
4、若数组a定义为int[][]a=new int[3][4],则a是________。
( A )
5、执行下面的程序段后,变量k的值为________。 int k=3,s[2]; s[0]=k; k=s[1]*10;
( A )
6、下面程序的运行结果是
#include<stdio.h>
main()
{
static char a[]="languagef" ,b[]="programe";
char *p1,*p2;
int k;
p1=a;
p2=b;
for(k=0;k<=7;k++) if(*(p1+k)==*(p2+k))
printf("%c",*(p1+k));
}
( B )
7、c语言中,数组名代表________。
( B )
8、若有说明: static int a[3][4]; 则数组中各元素________。
( A )
9、下列数组说明中,正确的是()。
( A )
10、若有如下定义和语句,且 0<=i<5,下面( )是对数值为 3 数组元素的引用
int a[]={1,2,3,4,5},*p,i;
p=a;
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( D )
1、以下能正确定义字符串的语句是________。
( A )
2、以下不能正确进行字符串赋初值的语句是________。
( A )
3、下列数据中属于"字符串常量"的是________。
( D )
4、下列字符串中不能作为c标识符使用的是________。
( B )
5、设有两个字符串p和q,其中q是p的子串,把q在p中首次出现的位置作为子串q在p中位置的算法称为 (43) 。
( D )
6、下列关于boolean类型的叙述中,正确的是________。
( D )
7、有以下程序:
#include<string.h>
main()
{
char *p="abcde\0ghjik\0";
printf("%d\n",strlen(p) );
}
程序运行后的输出结果是________。
( B )
8、有以下程序
#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 )
9、有以下程序
void fun(char s[][10],int n)
{
char t;int i,j;
for(i=0;i<N-1;I++)
for(j=i+1,j<N;J++)}
/*比较字符串的首字符大小,并交换字符
串的首字符*/
if(s[i][0])>s[j][0]){
t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;
}
main()
{
char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”};
fun(ss,5);printf(”%s,%s”,ss[0],ss[4]);
}
程序运行结果是________。
( D )
10、若有char s1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串 s1 大于字符串 s2 时,输出 s2 的语句是()。
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、有以下程序片段: y=-1; if(x!=0) if(x>0) y=1; else y=0; 其能正确表示的数学函数关系是________。
( C )
2、以下叙述正确的是________。
( A )
3、是构成c语言程序的基本单位。
( D )
4、对以下程序,正确的说法是 __________. sub (char x,char y)
{
int z;
z=x%y;
return z;
}
void main( )
{
int g=5,h=3,k;
k=sub(g,h);
printf("%d\n",k);
}
( D )
5、以下有关function过程的说法中,正确的是______ 。
( A )
6、若有函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b,))); 那么在此函数调用语句中实参的个数是________。
( B )
7、关于过程、自定义函数的调用,正确的叙述是________。
( B )
8、若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c); 给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是______。(ц代表一个空格符)
( A )
9、下列程序的运行结果是________。
#include<stdio.h>
void fun(int*s,int*p) {
static int t=3;
*p=s[t];
t--;
}
main()
{
int a[]= { 2,3,4,5}, k;
int x;
for(k=0;k<4;k++) {
fun(a,&x);
printf("%d,",x);
}
}
( C )
10、函数调用时,基本的参数传递方式有传值与传地址两种, (23) 。
七、指针 (共10题,每题1分,共计10分)
( D )
1、c语言源程序的最小单位是________。
( C )
2、若在定义语句:int a,b,c*p=&c; 之后,接着执行以下选项中的语句,则能正确执行的语句是________。
( C )
3、以下关于数组的描述正确的是______。
( A )
4、若主调用函数类型为 double ,被调用函数定义中没有进行函数类型说明,而 return 语句中的表达式类型为 float 型,则被调函数返回值的类型是 __________ 。
( D )
5、设有以下语句,对a数组元素的引用中(其中0<=i<10)不正确的是 int a[10]= {0,1,2,3,4,5,6,7,8,9 },*p=a;
( C )
6、下列说法不正确的是________。
( B )
7、设 void f1 (int *m,long & n); int a; long b; 则以下调用合法的是______ 。
( D )
8、若有说明:int *p,m=5,n; 以下正确的程序段是________。
( D )
9、下列程序的输出结果是________。
void f(int*x,int*y)
{
int t;
t=*x,*x=*y;
*y=t;
}
main()
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;
q=&a[7];
while(p<q)
{
f(p,q);
p++;
q--;
}
for(i=0;i<8;i+)printf("%d,",a[i]);
}
( A )
10、若有说明:long *p,a; 则不能通过scanf语句正确给输入项读入数据的程序段是______。
八、结构体 (共10题,每题1分,共计10分)
( C )
1、有以下程序
struct stu
{
char name[10];
int num;
int score;
}
;
main( )
{
struct stu s[5]={{"yangsan",20041,703} , {"lisiguo",20042,580 , {"wangyin",20043,680}, {"sundan",20044,550}, {"penghua",20045,537}},*p[5],*t;
int i,j;
for(i=0;i<5;i++) p[i]=&s[i];
for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score>p[j]->score)
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
printf("5d %d\n",s[1].score,p[1]->score);
}
执行后输出结果是________。
( C )
2、若有以下说明语句:
struct date
{
int year;
int month;
int day;
} brithday;
则下面的叙述不正确的是_____.
( C )
3、有以下程序段
typedef struct node
{
int data;
struct node * next;
}
* node;
node p;
以下叙述中正确的是________。
( B )
4、c语言中的基本数据类型是________。
( B )
5、已知函数的原形如下,其中结构体a为已经定义过的结构,且有下列变量定义 struct a*f(int t1,int*t2,struct a t3,struct a*t4) struct a p,*p1; int i; 则正确的函数调用语句为
( D )
6、若有以下说明和语句:
struct st
{
int n;
char *ch;
}
;
struct st a[3]
{
5,"abc",7,"def",9,"ghk"
}
,*p=a 则值为6的表达式是______。
( B )
7、以下选项中,能定义m为合法的结构体变量的是______。
( D )
8、设有以下语句
typedef struct tt
{
char c;
int a[4];
}
cin;
则下面叙述中正确的是______。
( A )
9、以下叙述中正确的是________。
( A )
10、定义共用体的关键字是________。
九、程序题 (共10题,每题1分,共计10分)
( C )
1、有以下程序:
main()
{
int x,i;
for(i=l;i<=50;i++)
{
x=i: if(x%2=0) if(x%3=0) if(x%7=0) printf("%d,i)";
}
}
输出结果是________。
( D )
2、阅读下面的程序
main()
{
int i,j;
char ch;
scanf("%d%c%f",&i,&ch,&j);
printf("%d%2c%7.2f",i,ch,j);
}
如果从键盘上输入 123a123x.12<回车> 则程序的运行结果是________。
( B )
3、下面程序段的运行结果是 ____________.
int n=0;
while (n++<=2) printf("%d",n);
( D )
4、以下程序执行时输入 language programming< 回车 > , 输出结果是 __________.
#include <stdio.h>
void main( )
{
char str[30];
gets(str);
printf("str=%s\n",str);
}
( D )
5、有如下程序
main( )
{
int a[3][3]={{1,2,3},{3,4,5},{5,6,7}}, i,j,s = 0;
for(i=0; i<3; i++)for(j=0; j<=i; j++) s+=a[i][j]];
printf("%d\n",s);
}
该程序的输出结果是______。
( A )
6、下面程序的输出结果是______。
main( )
{
int a[]={1,2,3,4,5,6,7,8,9,0},*t;
t=a;
printf("%d\n",*(t+3));
}
( A )
7、有以下程序段int m=0,n=0;
char c='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:10a10↙,则输出结果是______。
( D )
8、有以下程序
void sum(int a[])
{
a[0]=a[1]+a[2];
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n",a[2]);
}
程序运行后的输出结果是______。
( A )
9、程序段如下int k=0;
while(k++<=2) printf ("%d\n", k);
则执行结果是________ 。
( B )
10、下列程序运行结果为:
#define P 3
#define S(a) P*a*a
main()
{int ar;
ar=S(3+5);
printf("\n%d",ar);
}
相关标签:
- C语言
- 上海海洋大学
- 样卷