大连外国语大学C语言考题

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

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

C语言考题

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

(  A  )
1、c 源程序中不能表示的数制是________。
A、二进制
B、八进制
C、十进制
D、十六进制
(  B  )
2、设有定义:long x=-123456l; 则以下能够正确输出变量x值的语句是________。
A、printf(“x=%d\n”,x)
B、printf(“x=%ld\n”,x)
C、printf(“x=l\n”,x)
D、printf(“x=%D\n”,x);
(  A  )
3、下列叙述中错误的是________。
A、在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B、在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C、在C语言中,外部变量的隐含类型是自动存储类别
D、在C语言中,函数形参的存储类型是自动(auto)类型的变量
(  B  )
4、有以下程序
struct stu
{
char name[10];
int num;
float totalscore;
};
void f(struct stu *p)
{
struct stu s[2]={{"sundan",20044,550} ,{"penghua",20045,537}}, *q=s;
++p ;
++q;
*p=*q;
}
main()
{
struct stu s[3]= {{"yangsan",20041,703},{"lisiguo",20042,580}};
f(s);
printf("%s %d %3.0f\n", s[1].name, s[1].num, s[1].totalscore);
}
程序运行后的输出结果是________。
A、SunDan 20044 550
B、Penghua 20045 537
C、LiSiGuo 20042 580
D、SunDan 20041 703
(  D  )
5、不合法的常量是: 。
A、‘ \2 ’
B、" "
C、‘ 3 ’
D、‘ \483 ’
(  C  )
6、设有如下枚举类型定义: enum language
{
basic=3 , assembly , ada=100 , cobol , fortran
};
枚举量 fortran 的值为 。
A、4
B、7
C、102
D、103
(  D  )
7、有如下程序
#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);
}
该程序的功能是 __________.
A、测字符数组 ch 的长度
B、将数字字符串 ch 转换成十进制数
C、将字符数组 ch 中的小写字母转换成大写
D、将字符数组 ch 中的大写字母转换成小写
(  A  )
8、如果用数组名作为实参,则传递给形参的是________。
A、数组的首地址
B、第一个元素的值
C、数组元素的个数
D、数组中全部元素的值
(  B  )
9、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是________。
A、for(i=1,p=1;i<=5;i++) p*=i;
B、for(i=1;i<=5;i++) { p=1; p*=i; }
C、i=1;p=1; while(i<=5) { p*=i; i++ };
D、i=1;p=1;do { p*=i; i++; } while(1<=5)
(  A  )
10、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=4,b=3,c=2,d=1;
printf("%d",a<b?a:d<c?d:b);
}
A、1
B、3
C、2
D、4
(  B  )
11、若有定义语句:char s[10]="1234567\0\0"; 则strlen(s)的值是________。
A、7
B、8
C、9
D、10
(  B  )
12、下列变量定义中,错误的是______。
A、int x=3;
B、float f;d;
C、String s="Hello!";
D、boolean b=true;
(  D  )
13、以下程序结果为:______。
void add( )
{
static int y=4;
y--;
printf("%d",y);
}
main( )
{
int m;
for(m=0;m<4;m++)add( );
}
A、4444
B、4321
C、3333
D、3210
(  D  )
14、有以下程序
typedef struct
{
int b,p;
}
a;
void f(a c)            /* 注意:c是结构变量名 */
{
int j;
c.b+=1;
c.p+=2;
}
main()
{
int i;
a a={1,2};
f(a);
printf("%d,%d\n",a.b,a.p);
}
程序运行后的输出结果是______。
A、2,3
B、2,4
C、1,4
D、1,2
(  B  )
15、一个字节代表几位二进制数():
A、1
B、8
C、16
D、根据计算机的位数决定
(  D  )
16、运行下段程序的结果是________。
#include<stdio.h>
main( )
{
int x;
for(x=1;x<=100;x++)
if(++x%==0)
if(++x%3==0)
if(++x%5==0)
printf(''%d'',x);
}
A、31,61,91
B、30,60,90
C、不输出任何内容
D、29,59,89
(  D  )
17、以下叙述中正确的是________。
A、数组下标的下限是 1
B、数组下标的下限由数组中第一个非零元素的位置决定
C、数组下标的下限由数组中第一个被赋值元素的位置决定
D、char c1,c2,*c3,c4[40]是合法的变量定义语句
(  C  )
18、下列程序段的输出结果为________。 int x=3,y=2; printf("%d",(x-=y,x*=y+8/5));
A、1
B、7
C、3
D、5
(  C  )
19、下列各定义数组的语句中不正确的是________。
A、int a[1][3];
B、int x[2][2]={1,2,3,4};
C、int x[2][ ]={1,2,4,6};
D、int m[ ][3]={ 1,2,3,4,5};
(  A  )
20、执行以下循环语句时,下列说法正确的是________。x = -1;
do
{
x = x * x;
}
while (x == 0);
A、循环体将执行一次
B、循环体将执行两次
C、循环体将执行无限次
D、系统将提示有语法错误

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

1、c语言提供的三种逻辑运算符是________、________、________。
2、函数的返回值是通过函数的________语句获得的。
3、c语言变量按其作用域分为 全局变量和局部变量。按其生存期分为________存储 和________存储 。
4、若有语句double x=17; int y; ,当执行y=(int)(x/5)%2;之后y的值是 ________。
5、在c语言中,假使x为单精度实型变量,如果我们采用printf("格式控制",x)格式输出x,那么"格式控制"具体表示为"__"。
6、下列程序段的运行结果是_____。#define MAX(x , y) x>y? x : y
main( )
{
int a , b , max;
A=5, b=6;
Max=MAX(a,b);
printf("max=%d\n",max);
}
7、c语言中与指针有关的两个运算符是________与*。
8、下列程序段的运行结果是________。
main()
{
int n,s=0 ;
for(n=1; n<=5; n++)
{
if(n%2==0) continue;
s=s+n;
}
printf("%d\n", s);
}
9、写出下列程序的运行结果。
main()
{
int n;
for(n=3; n<=10; n++)
{
if(n%6==0) break;
printf("%d",n);
}
}
10、有1020 个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?请分析程序填空。
#include <stdio.h>
main()
{
int day, x1, x2;
day = 0;
x1 = 1020;
while (____1____)
{
x2 = ____2____;
x1 = x2;
day++;
}
printf("day=%d\n", day);
}

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

1、编写程序:假设奖金税率如下(a代表奖金,r代表税率) 500<=a<1000 r=5% 1000<=a<2000 r=8% 2000<=a<3000 r=10% 3000<=a r=15%输入的一个奖金数,求税率和应缴税款以及实得的奖金数(扣除奖金税后)。
2、编写程序:计算字符串中子串出现的次数 。请输入两个字符串,以回车隔开,母先串在前,子串在后,比如:
abca
a
2
3、编写程序:从键盘输入 n (n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,按成绩从低到高排序并输出排序后的学生信息。
输入输出示例:括号内为说明,无需输入输出
输入样例:
3 (n=3)
1000 85
1001 90
1002 75
输出样例:
1002 75
1000 85
1001 90