延安大学C语言试题

本试卷为延安大学C语言试题,题目包括:单项选择题,填空题,编程题。

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

C语言试题

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

(  C  )
1、设a、b、e、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值是________。
A、0
B、1
C、2
D、3
(  C  )
2、各种基本数据类型的存贮空间正确的长度排列为________。
A、char<long<int<double
B、double<long<int<char
C、char<int<long<double
D、int<long<char<double
(  C  )
3、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f的数据类型是________。
A、int型
B、float型
C、double型
D、不确定
(  B  )
4、下面程序的输出结果是 ____________.
#include<stdio.h>
void main( )
{
int n=4;
while (n--) printf("%d ",n--);
}
A、2 0
B、3 1
C、3 2 1
D、2 1 0
(  B  )
5、c语言的跳转语句中,对于break和continue说法正确的是________。
A、break语句只应用于循环体中
B、continue语句只应用于循环体中
C、break 是无条件跳转语句,continue不是________。
D、break和continue的跳转范围不够明确,容易产生问题
(  D  )
6、以下函数返回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、i=p
B、a[p]=a[i]
C、p=j
D、p=i
(  D  )
7、设有以下定义: int a[3][3]= { 1,2,3,4,5,6,7,8,9 }; int(*ptr)[3]=a; 则下列能正确表示数组元素a[1][2]的表达式是______。
A、*((*ptr+1)[2])
B、a[2][3]
C、(*ptr+1)+2
D、*(*(a+1)+2)
(  A  )
8、有一个数是123,它与十六进制数53相等,那么该数值是________。
A、八进制数
B、十进制数
C、五进制
D、二进制数
(  B  )
9、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node *next;
}
a,b,*p=&a,*q=&b;
A、3 4 7 5
B、3 5 7 4
C、1 2 3 4
D、1 2 3 5
(  A  )
10、有以下程序
#include<stdio.h>
void fun(int n,int*s) {
int f;
if(n==1)*s=n+1;
else fun(n-1,&f);
*s=f;
}
main() {
int x=0;
fun(4,&x);
printf("%d\n",x);
}
程序运行后的输出结果是______。
A、2
B、1
C、3
D、4
(  D  )
11、有以下程序:
#include<string.h>
main()
{
char *p="abcde\0ghjik\0";
printf("%d\n",strlen(p) );
}
程序运行后的输出结果是________。
A、12
B、15
C、6
D、5
(  D  )
12、c语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为________。
A、该数组的长度
B、该数组的元素个数
C、该数组中各元素的值
D、该数组的首地址
(  B  )
13、下面程序
main()
{
int y=9;
for(;y>0;y--)
{
if(y%3==0)
{
printf("%d",--y);
continue;
}
}
}
的输出是______。
A、741
B、852
C、963
D、875421
(  A  )
14、若变量已正确定义,表达式 (j=3, j++) 的值是____。
A、3
B、4
C、5
D、6
(  B  )
15、对于代码 char c1[8];
scanf("%s",c1);
printf("\n%s",c1);
在程序运行时,输入了"this pretty boy",则对应的运行输出显示结果是________。
A、this pre
B、this
C、this pretty boy
D、数组越界,不能显示
(  D  )
16、下列程序的输出结果是
#include <stdio.h>
int myfuntion(int n);
int main()
{
int entry = 12345;
printf("%5d", myfuntion(entry));
return 0;
}
int myfuntion(int par)
{
int result;
result = 0;
do
{
result = result * 10 + par % 10;
par /= 10;
}
while (par);
return result;
}
A、12345
B、543
C、5432
D、54321
(  B  )
17、下列各语句序列中,能够将变量u.s 中最大值赋值到变量t 中的是________。
A、if(u>s)t=u; t=s;
B、t=s; if(u>s)t=u;
C、if(u>s)t=s; else t=u;
D、t=u; if(u>s)t=s;
(  B  )
18、有以下程序段:char c1,c2,c3; scanf("%c%c%c",&c1,&c2,&c3); 若要给 c1、c2、c3 分别输入字母 a bc,则以下对输入形式的描述正确的是________。
A、字母 A B C 之间可以用空格分隔
B、字母 A B C 之间不能有分隔符
C、字母 A B C 之间可以用回车符分隔
D、字母 A B C 之间可以用 Tab 键分隔
(  A  )
19、以下叙述中正确的是________。
A、使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的
B、结构体类型中的各个成分均不能是数组或指针
C、结构体类型的变量,不能在声明结构体类型组成时一起定义
D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义
(  B  )
20、c语言中,定义结构体的保留字是________。
A、union
B、struct
C、enum
D、typedef

二、填空题 (共10题,每题2分,共计20分)

1、设p=30,那么执行q=(++p)后,表达式的结果q为 ________ ,变量p的结果为 ________ 。 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 ________ 。
2、有以下程序
#include < stdio.h >
main()
{
int m,n;
scanf("%d%d",&m,&n);
while (m!=n)
{
while(m>n) m=m-n;
while(m<n)n=n-m;
}
printf("%d\n",m);
}
程序运行后,当输入14 63<回车>时,输出结果是________。
3、下面程序的运行结果是: ________
int f( int a[], int n)
{
if(n>1) return a[0]+f(&a[1],n-1);
else return a[0];
}
main ( )
{
int aa[3]={1,2,3},s;
s=f(&aa[0],3);
printf("%d\n",s);
}
4、有函数调用fun1(x+y, (y,z), 10, fun((x,y-1)));
函数fun1有【1】个参数。
5、ferror函数用来检测文件读写时是否发生错误,若未发生读写错误,则返回值是________。
6、以下程序的输出结果是________。
main()
{
int x=5,y=6;
printf("%da%d",x――,――y);
}
7、结构化程序三种结构为________。
8、以下程序实现输出x,y,z 三个数中的最大者。请分析程序填空。
main()
{
int x=4,y=6,z=7;
int 【1】________;
if(【2】________) u=x;
else u=y;
if ( 【3】________) v=u;
else v=z;
printf("v=%d",v);
}
9、循环语句for(i=0;i<3;i++) printf("*");
表达式i=0 执行【1】________次,表达式i++执行【2】________次。
10、若有定义: int a[3][4]={{1,2},{0},{4,6,8,10}};
则初始化后,a[1][2] 得到的初值是【1】, a[2][1] 得到的初值是【2】。

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
2、给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。
输入格式:
输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。
输出格式:
按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。
输入样例:
3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80
输出样例:
zhao 565.00
qian 430.00
zhou 630.00
3、打印出如下图案(菱形)