太原科技大学2023年C语言
本试卷为太原科技大学2023年C语言,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言
一、理论基础 (共20题,每题1分,共计10分)
( D )
1、下列条件语句中输出结果与其他语句不同的是________。
( A )
2、表达式'5'-'1'的值是________。
( C )
3、下列选项中不合法的十六进制数是________。
( B )
4、数据的存储结构是指________。
( A )
5、有以下定义:int a; long b; double x,y; 则以下选项中正确的表达式是________。
( C )
6、若以下选项中的变量已正确定义,则正确的赋值语句是________。
( D )
7、设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是________。
( B )
8、数据是信息的符号表示; 信息是数据的内涵,是数据的________。
( C )
9、执行下列语句后,i和n的值为 ( ) int i=10; int n=i++%5;
( D )
10、若有表达式(w)(--x):(++y),则其中与w等价的表达式是________。
( B )
11、数值型数据包括( )两种。
( A )
12、以下是正确 c 语言标识符的是________。
( D )
13、下列选项中用于判断ch是否是字符的表达式是________。
( A )
14、在int a[ ][3] = {{1,4}, {3,2}, {4,5,6}, {0}};
中,a[2][1]的值是________。
( B )
15、下列语句合法的是________。
( C )
16、在c语言中,只有在使用时才占用内存单元的变量,其存储类型是________。
( D )
17、若希望当a的值为奇数时,表达式的值为真; a的值为偶数时,表达式的值为假,则以下不能满足要求的表达式是________。
( C )
18、使用"scanf("x=%f,y=%f",&x,&y)",要使 x,y均为1.25,正确的输入是________。
( C )
19、若有说明:int *p1,*p2,m=5,n; 以下均是正确赋值语句的选项是________。
( D )
20、下述c 语言转义符中( )是非法的。
二、控制结构 (共10题,每题1分,共计10分)
( B )
1、与"y=(x>0?1:x<0?-1:0)";的功能相同的if语句是________。
( A )
2、下列程序的输出结果是________。
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 )
3、若int i=10;
执行下列程序后,变量i的正确结果是________。 switch (i)
{
case 0: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
( B )
4、c语言对嵌套if语句的规定是:else总是与( ) 。
( C )
5、运行以下程序后,如果从键盘上输入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);
}
( C )
6、若所用变量都已正确定义,则在以下选项中,非法的表达式是________。
( C )
7、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
( C )
8、下列程序的输出结果是______。
#include<stdio.h>
main()
{
int a=0,b=1,c=2;
if(++a>0 || ++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
( D )
9、执行下列程序段后,m 的值是________. int w=2,x=3,y=4,z=5,m; m=(w
( A )
10、执行下面语句后的输出为____
int i= -1;
if (i < =0)printf("****\n");
else printf("%%%%\n");
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、有以下程序:
main()
{
int c=0,k;
for(k=1;k<3;k++)
switch(k)
{
default:c+=k;
case2:c++;
break;
case4:c+=2;
break;
}
printf("%d\n",c);
}
程序运行后的输出结果是________。
( D )
2、有以下程序
#include <stdio.h>
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1: switch(y)
{
case 0: a++;
break;
case 1: b++;
break;
}
case 2: a++;
b++;
break;
case 3: a++;
b++;
}
printf("a=%d,b=%d\n",a,b);
}
程序的运行结果是________。
( A )
3、以下for语句中不是死循环的是________。
( C )
4、程序的基本控制结构是______。
( A )
5、下列描述中,符合结构化程序设计风格的是________。
( C )
6、运行下面程序时,从键盘输入字母h,则输出结果是
#include<stdio.h>
main()
{
char ch;
ch=getchar();
switch(ch) {
case ’h’: printf("hello!\n");
case ’g’: printf("good morning!\n");
default : printf("bye_bye!\n");
}
}
( B )
7、执行下面程序片段的结果是______。int x=23;
do
{
printf("%2d",x--);
}
while(!x);
( C )
8、下面的代码int i=10; 之后的for循环语句,语法正确,不会编译出错的是________。
( A )
9、用在switch语句的关键字没有哪个?
( B )
10、以下叙述中正确的是________。
四、数组/指针数组 (共10题,每题1分,共计10分)
( D )
1、若要定义一个具有5个元素的整型数组,以下错误的定义语句是________。
( D )
2、以下不能正确定义二维数组的选项是________。
( C )
3、若有以下说明 : char s1[ ]={"tree"
} ,s2[]={"flower"};, 则以下对数组元素或数组的输出语句中 , 正确的是 _______ .
( C )
4、若在某函数内部有定义:int a[3][4]; 则数组a中各元素________。
( D )
5、以下函数返回a所指数组中最小的值所在的下标值:
fun(int *a,int n)
{
int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p]) ______,
return(p);
}
在横线处应填入的是______。
( A )
6、已知有数组定义 char a[3][4]; 下列表达式中错误的是________。
( B )
7、下面程序的运行结果是
#include<stdio.h>
main()
{
char a[]="morning",t;
int i,j=0;
for(i=1;i<7;i++) {
if(a[j]<a[i]) {
j=i;
t=a[j];
a[j]=a[7];
a[7]=a[j];
}
}
printf("%s", a);
}
( C )
8、下列数组的定义中,错误的是________。
( B )
9、以下叙述中正确的是________。
( B )
10、若有说明: static int a[3][4]; 则数组中各元素________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( B )
1、设有字符串a="he has 钱!",则该字符串的长度为( )。
( A )
2、以下不能正确进行字符串赋初值的语句是________。
( D )
3、以下程序运行后的输出结果是
main( )
{
char s[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);
}
( C )
4、下面各语句行中,能正确进行给字符串赋值操作的语句行是______。
( D )
5、有以下程序
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]);
}
程序运行结果是________。
( B )
6、在c语言中,不允许有常量的数据类型是________。
( A )
7、下列对字符串的定义中,错误的是________。
( D )
8、以下选项中,合法的 c 语言常量是________。
( B )
9、下面选项中合法的字符常量是________。
( C )
10、判断两个字符串是否相等,正确的表达方式是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
( A )
1、有以下函数
int aaa (char *s)
{
char *t = s;
while (*t++);
t-=1;
return (t - s);
}
以下关于aaa函数的功能叙述正确的是________。
( A )
2、已有函数 max ( a , b ),为了让函数指针变量 p 指向函数 max ,正确的赋值方法是______。
( A )
3、以下关于return语句的叙述中不正确的是________。
( D )
4、下列说法不正确的是________。
( B )
5、结构化程序设计所规定的三种基本控制结构是________。
( C )
6、计算斐波那契数列第n项的函数定义如下: int fib(int n)
{
if(n==0) return1;
else if(n==1)
return 2;
else
return fib(n-1)+fib(n-2);
}
若执行函数调用表达式fib(2),函数fib被调用的次数是________。
( D )
7、设int f (int); 和int g(int); 是函数f和g的原形,以下将f作为语句调用的是______ 。
( B )
8、以下关于程序中函数的定义、调用和声明的叙述中,正确的是______。
( C )
9、下面程序段的运行结果是________。
char a[]="abcdefgh"; char *p=a; p+=3; printf("%d\n",strlen(strcpy(p,"abcd")));
( D )
10、c语言程序的三种基本结构是________。
七、指针 (共10题,每题1分,共计10分)
( A )
1、定义如下变量和数组: int i; int x[3][3]={ 1,2,3,4,5,6,7,8,9 } 则下面语句的输出结果是________。 for(i=0;i<3;i++) printf("%d",x[i][2-1]);
( B )
2、以下叙述中正确的是______。
( A )
3、下列对字符数组进行初始化的语句正确的是________。
( D )
4、以下关于排序算法的叙述中,正确的是________。
( A )
5、若x是整型变量,pb是类型为整型的指针变量,则正确的赋值表达式是______。
( B )
6、设变量定义为 int a[2]={1,3}
, *p=&a[0]+1;
,则*p的值是________。
( A )
7、若有double *p,x[10]; int i=5; 使指针变量p指向元素x[5]的语句为________。
( C )
8、下面叙述中错误的是________。
( B )
9、下列语句定义pf为指向float型变量f的指针,_____是正确的.
( A )
10、定义如下变量和数组: int k,a[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是________。for(k=0;k<3;k++) printf("%d ",a[k][2-k]);
八、结构体 (共10题,每题1分,共计10分)
( B )
1、已知有如下结构体:
struct sk
{
int a;
float b;
}
data,*p;
若有p = &data,则对data的成员a引用正确的是________。
( B )
2、下面结构体的定义语句中,错误的是________。
( B )
3、有以下程序
#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);
}
程序的运行结果是________。
( B )
4、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node *next;
}
a,b,*p=&a,*q=&b;
( B )
5、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若有p=&data;
则对data中成员a的引用正确的是________。
( B )
6、以下选项中,能定义m为合法的结构体变量的是______。
( D )
7、有以下程序
#include <stdio.h>
main()
{
struct stu
{
char name[9];
char sex;
double score[2];
}
;
struct stu a={"zhao",'m',85.0,90.0},b={"qian",'f',95.0,92.0};
b=a;
printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是______。
( C )
8、若有定义:
struct keyword
{
char key[20];
int id;
}
kw[] = {"void", 1, "char", 2, "int", 3, "float", 4, "double", 5 };
则printf("%c,%d\n", kw[3].key[0], kw[3].id);
语句的输出结果为________。
( C )
9、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
( D )
10、在说明一个结构体变量时系统分配给它的存储空间是________ 。
九、程序题 (共10题,每题1分,共计10分)
( A )
1、有以下程序:
#define f(x)X*x*x
main()
{
int a=3,S,t;
s=f(a+1);
t=f((a+1));
printf("%d,%d\n",S,t);
}
程序运行后的输出结果是________。
( A )
2、执行语句printf("%u\n",+12345)的输出结果是________。
( B )
3、有以下程序 fun(char p[][10])
{
int n=0,i;
for(i=0;i<7;i++) if(p[i][0]==′t′) n++;
return n;
}
main()
{
char str[][10]={"mon","tue","wed","thu","fri","sat","sun"} ;
printf("%d\n",fun(str));
}
程序执行后的输出结果是________。
( D )
4、有以下程序
main()
{
int x=3, y=2, z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是________。
( C )
5、有以下程序
#include <stdio.h>
main()
{
int s[12]={1,2,3,4,4,3,2,1,1,1,2,3}, c[5]={0}, i;
for(i=0;i<12;i++) c[s[i]]++;
for(i=1;i<5;i++) printf("%d",c[i]);
printf("\n");
}
程序的运行结果是________。
( A )
6、执行下列程序段后的输出结果是 ___________. int x=1,y=1,z=1; x+=y+=z; printf("%d\n",x<y?y:x);
( C )
7、下列程序的输出结果是________。
main( )
{
char a[10]={9,8,7,6,5,4,3,2,1,0},* p=a + 5;
printf("%d",*--p);
}
( C )
8、有以下程序
main()
{
union
{
unsigned int n;
unsigned char c;
}
ul;
ul.c='a';
printf("%c\n",ul.n);
}
执行后输出结果是______。
( D )
9、下面程序的输出是______。
main( )
{
int t=1;
fun ( fun ( t) );
}
fun ( int h)
{
static int a[3]={1,2,3};
int k;
for (k=0;k<3;k++)a[k]+=a[k]-h;
for (k=0;k<3;k++)printf("%d,",a[k]);
printf("\n");
return(a[h]);
}
( C )
10、下列程序段的运行结果是________ int x=10,y=20,z=30;
if(x>y) z=x;
x=y;
y=z;
printf("%d,%d,%d\n",x,y,z);
相关标签:
- C语言
- 太原科技大学