天津理工大学C语言程序设计模拟考试

本试卷为天津理工大学C语言程序设计模拟考试,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

C语言程序设计模拟考试

一、单项选择题 (共20题,每题2分,共计40分)

(  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);
}
程序运行后输出的结果是________。
A、0,4,5
B、4,4,5
C、4,4,4
D、0,0,0
(  B  )
2、下列形式的常数中,c程序不允许出现的是________。
A、100
B、E3
C、30.6E-2
D、1.235
(  A  )
3、以下程序片段( ) 。
main ( )
{
int x=0,y=0,z=0;
if (x=y+z) printf("***");
else printf("###");
}
A、输出:###
B、输出:***
C、可以编译,但不能通过连接,所以不能运行
D、有语法错误,不能通过编译
(  C  )
4、有以下程序
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);
}
执行后输出结果是________。
A、550 550
B、680 680
C、580 550
D、580 680
(  A  )
5、下面关于形参与实参的说法,正确的是________。
A、形参与实参的个数、类型、顺序都应一一对应
B、形参与实参的个数可以不必相同,少一个多一个程序一样执行
C、形参与实参的类型可以不同,不影响运算结果
D、形参与实参的类型个数相同,而顺序不同,计算机可以自动进行匹配,所以形参的顺序无所谓,只要各种形参类型的数量与实参相同即可
(  C  )
6、若定义的函数为float* fun()……,则函数的返回值是________。
A、float型数据
B、void型数据
C、float型指针
D、void型指针
(  B  )
7、在传值调用中,要求________。
A、形参和实参类型任意,个数相等
B、形参和实参类型一致,个数相等
C、形参和实参类型一致,个数不等
D、形参和实参类型任意,个数任意。
(  B  )
8、下列各项中不属于算法基本特征的是________。
A、可行性
B、递归性
C、确定性
D、有穷性
(  B  )
9、有一个数值152,它与十六进制数6a相等,那么该数值是________。
A、二进制数
B、八进制
C、十进制数
D、四进制数
(  B  )
10、下面程序的输出结果是______。
main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;
printf("%d\n",p[3]);
}
A、6
B、7
C、3
D、5
(  A  )
11、以下选项中合法的c语言字符常量是________。
A、'\t'
B、"A"
C、67
D、A
(  B  )
12、设有定义:long x= -123456l; 则以下能够正确输出变量x值的语句是________。
A、printf("x=%d\n",x);
B、printf("x=%1d\n",x);
C、printf("x=%8dL\n",x);
D、printf("x=%LD\n",x);
(  C  )
13、有以下程序
#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);
}
程序执行后的输出结果是______。
A、x=8
B、x=4
C、x=6
D、x=12
(  C  )
14、有以下程序
#include <stdio.h>
int main()
{
int m[][3]= { 1,4,7,2,5,8,3,6,9 };
int i,j,k=2;
for(i=0;i<3;i++) printf("%2d",m[k][i]);
}
执行后输出结果是________。
A、4 5 6
B、2 5 8
C、3 6 9
D、7 8 9
(  C  )
15、下列关于共用体类型变量的描述中,正确的是________。
A、可以对共用体变量直接赋值
B、一个共用体变量可以同时存放其所有的成员
C、一个共用体变量中不可以同时存放其所有的成员
D、共用体类型定义中,不能出现结构体类型的成员
(  B  )
16、有以下程序
main()
{
int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
{
ptr=a+i;
scanf("%d",ptr);
ptr++;
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++) printf("%2d",a[i][j]);
printf("\n");
}
}
若运行时输入:1 2 3<回车>,则输出结果是______。
A、产生错误信息
B、10
C、12
D、1020 30 2000 00 30
(  B  )
17、若有定义:double a=22; int i=0,k=18; 则不符合c语言规定的赋值语句是________。
A、i=(a+k)<=(i+k)
B、i=a%11
C、a=a++,i++
D、i=!a
(  B  )
18、以下标识符中,不能作为合法的c用户定义标识符的是________。
A、a3_b3
B、void
C、_123
D、IF
(  A  )
19、若有 int a[10], *p=a;
,且 a 数组已赋值,则与 a[4]不等价的表达式为________。
A、p+4
B、*(p+4)
C、*(a+4)
D、p[4]
(  C  )
20、结构化程序设计所规定的三种基本控制结构是()。
A、输入、处理、输出
B、树形、网形、环形
C、顺序、选择、循环
D、主程序、子程序、函数

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、字符串常量是由一对双引号括起来的字符序列。 
(   F  )
2、<2的值为40,10>>2的值为2.5 
(   T  )
3、关系表达式的值只能为1和0 
(   T  )
4、当多个函数发生多层嵌套调用时,最后被调用的函数却最先结束。 
(   T  )
5、结构指针就是指向结构类型变量的指针。 
(   F  )
6、空语句什么都没有 
(   F  )
7、文本文件和二进制文件都可以用 eof 作为文件结束标志。( ) 
(   F  )
8、由于do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 
(   F  )
9、在标准c语言中,数组的下标必须是常量,不允许是表达式。 
(   T  )
10、c语言函数默认的返回值类型是 int 。( ) 

三、填空题 (共5题,每题4分,共计20分)

1、c语言变量按其作用域分为 全局变量和局部变量。按其生存期分为________存储 和________存储 。
2、在c语言中,假使x为长整型变量,如果我们采用printf("格式控制",x)格式输出x,那么"格式控制"具体表示为"__"。
3、main()
{
int a,b;
for (a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
}
程序的输出结果a的值为________。
4、在c语言中,可以用/*…*/对c程序中的任何部分作______。
5、定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为 ______。

四、程序分析题 (共4题,每题5分,共计20分)

1、下列程序段的运行结果是_____。
char s1[20]="abcdef", s2[5]="abc";
strcpy(s1,s2);
printf("%c", s1[0]);
2、下面程序的运行结果是________。
#include <stdio.h>
main()
{
int a, b, i;
a = 1;
b = 3;
i = 1;
do
{
printf("%d,%d,", a, b);
a = (b - a) * 2 + b;
b = (a - b) * 2 + a;
if (i++ % 2 == 0) printf("\n");
}
while (b < 100);
}
3、鸡兔同笼,头30,脚90,下面程序段计算鸡兔各有多少只。请分析程序填空。for(x=1;x<=30;x++ )
{
y=30-x;
if( 【1】________) printf("%d,%d",x,y);
}
4、下列给定的程序中,函数proc()的功能是:判断字符ch 是,与str所指字符串中的某个字符相同;
若相同,则什么也不做,若不同,则将其插在串的最后。请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:
void proc(char str,char ch)
{
while(*str &&*str!=ch) str++;
if(*str==ch)
{
str[0]=ch;
str[1]='0':
}
}
void main()
{
char str[81],ch;
system("cls");
printf("\nplease enter a string:");
gets(str);
printf("\n please enter the character to search:");
ch=getchar();
proc(str,ch);
printf("\nthe result is%s\n",str);
}

五、编程题 (共3题,每题0分,共计50分)

1、编程: 从键盘上输入一个正整数n,计算并输出n的阶乘
例如: 如果从键盘上输入8, 程序的运行结果应为:the result is: 40320()
2、编写input()和output()函数,输入输出5个学生记录,每个记录包括num、name、score[3],使用结构体实现。
3、从键盘上输入一个字符串, 计算字符串里有多少个空格、小写字母、大写字母、数字。