一、单项选择题(本大题共 20小题,每小题 2分,共 40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
- 以下叙述不正确的是()
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
2.以下C语言用户标示符中,不合法的是()
A._1
B. Aa
Bc
C. a_b
D. a-b
3.编写好的 C 程序一般需要经过编译、连接、调试等步骤后才能运行成功。连接后产生的文件的后缀名一般是()
A…c
B…obj
C…exe
D…h
4,下面4个选项均是合法整型常量的选项是()
A. 160 xf 011
B. Oxcdf 018 Oxel
C. 123 2.le+8 3.14
D. -0x88g 2e5 32467
- 达式5>3>1 值是( )。
A.0
B.1
C.3
D.表达式语法错误
6.设a为整型变量,不能正确表达数学关系:10<a<15的C语言表达式是()
A.10<a<15
B.a1illa12 ll a13 Il a14
C. a>10 && a<15
D. !(a<=10) &&!(a>=15)
7.定义int score = 75;则表达式 80 < score < 90 的值是()
A.1
B.0
C. true
D. false
8.下列运算符优先级最高的是()。
A.=
B.%
C.&&
D.<=
9.假设有变量定义如下int a,k;则以下哪条语句不能确保将变量k的值变为
A.k=a±a+1;
B.kk:
C. k = k >> 16;
D. k=k &-k;
10.字符串"\128"ABC"\"的长度是()
A.1
B.8
C.5
D.3
- 下列程序段的输出结果是()
int main()
{
int x = 1, a = 0, b = 0;
switch(x){
case 0: b++;case 1: a++;
case 2: a++; b++;
}
printf(“a=%d,b=%dln”,a,b);
return 0;
}
A.a=2,b=1
B.a=1,b=1
C. a=1,b=0
D. a=2,b=2
12.设i,x都是int类型,则下面的for循环体可执行多少次(for (i=0, x=0;i<= 9 && x!= 876; i++))。printf(“*”);
A.9次
B.10次
C. 876次
D.无限循环
13.若有定义语句:int a[3][6];,按在内存中的存放顺序,a数组的第10个元素是()。
A. a[0][4]
B. a[1][3]
C. a[0][3]
D.a[1][4]
14,若有定义:int a[2][3];以下选项中对数组元素正确引用的是()
A. a[2][0]
B.a[2][3]
C. a [0][3]
D. a[1>2][1]
15,下面程序段运行时输出结果是()char s[18]= “a book! “;printf(”%.4s”,s);
A. a book!
B. a book!
C. a bo
D.格式描述不正确,没有确定输出
- 以下叙述中不正确的是()。
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
17,对函数形参的说明有错误的是()。
A. int a(int x],int n)
B. int a(int *x,int n)
C. int a(int x]], n)
D. int a(int x,int n)
- 下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()
A. int a, *x= a;
B. int a, *x= &a;
C. int *x= &a, a;
D. int a, x= a;
19.若有以下宏定义:
#define N 2
#define Y(n) ((N+1)n)则执行语句“z=2(N+Y(5));”后的结果是()
A.语句有错误
B.z=34
C. z=70
D.z 无定值
20.若有以下语句,则下面表达式的值为1002的是()
struct student
{ int age;
int num;};
struct student stu(3)=((1001,20),(1002,19),(1003,2));
struct student *p;
p=stu;
A. (p++)->num
B. (p++)->age
C. (p).num
D.(++p).age
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。
1_______
#include <stdio.h>
#define MOD(a, b) a % b
void main() {
int x = 4, y = 15, z;
z = MOD(y, x + 2);
printf("%d\n", z++);
}
}
2__________
#include <stdio.h>
int func(int a, int b) {return (a +b);)
void main()int x=2, y =5, z=8,r, r = func (func (x, y), z); printf ("%d\n", r);
3_________
#include <stdio.h>
union memb {
float v;
int n;
char c;
};
int main() {
union memb tag, Sval;
tag.n = 37;
Sval = tag;
printf("The value of Sval is: %d\n", Sval.n);
return 0;
}
4__________
#include <stdio.h>
void fun(int *s, int nl, int n2) {
int i, j, t;
i = nl;
j = n2;
while (i < j) {
t = *(s + i);
*(s + i) = *(s + j);
*(s + j) = t;
i++;
j--;
}
}
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int i, *p = a;
fun(p, 0, 2);
fun(p, 5, 9);
fun(p, 0, 9);
for (i = 0; i < 10; i++) {
printf("%d ", *(a + i));
}
printf("\n");
return 0;
}
5________
#include <stdio.h>
int main()
{
char str[80];
scanf("%s",str);
printf("%s",str);
return 0;
}
//abcd12345 xyz
三、程序填空题(共40分。请将答案填写在答题纸的相应位置上。)
1,程序功能:输出所给的一些字符串中最小的字符串。
#include <stdio.h>
#include <string.h>
int main(){
char "all={"bag","good"."This","are","Zoo","park"); char*min;
int i;
min=______________;
for(i=1;i<6;i++)
if(stremp(__________)<0) min=a[i};
printf("%\n",_______);
return 0;
}
2,输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。要求定义和调用函数setgrade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩score,将其转换为两级制成绩,并赋给grade。百分制成绩到两级制成绩的转换规则:大于或等于60分为P,否则为F。
#include<stdio.h>
#define MAXN 100
struct student{
char name[20];
int score;
char grade;
};
void set_grade( struct student *p, int n);
int main(){
int i, n;
struct student stu[MAXN];
scanf("%d", &n);
for(i = 0; i<n; i++){
scanf("%s%d",stu[i].name,&stuli].score);
}
set_grade(stu, n);
for(i= 0; i<n; i++)
printf("%s %cln", stuli].name, stu[i].grade); return 0;
}
void set_grade(struct student *p, int n)
{
struct student *q = p + n - 1;
while(_______){
if(________)___________;
else__________;
p++;
}
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)
1.编写程序读入N个学生的百分制成绩,统计等级制成绩的分布(即各等级的人数)。百分制成绩到等级制成绩的转换规则:大于等于 90分为 A;小于90且大于等于80为B;小于80且大于等于70为C;小于 70 且大于等于60为D;小于60为E。
- 编写程序,输出空心菱形。
3.红星商场新进商品若干,请帮助他们进行统计。下面给出了main)函数,请将其他函数补充完整,即写出 void readprice(float price[8]); float averPrice(float price[8]): float highPrice(float price8)float lowePrice(float price[8]; void prtprice(float price[8].foat ave);函数的定义。
#include <stdio.h>
void readprice(float price[8); /输入商品的价格/
float averPrice(float price[8); /计算商品的平均价格/float highPrice(float price[8]😕找出最高价的商品/foat lowePrice(float price[8)😕找出最低价的商品/void prtprice(float price[8].foat ave)😕输出高于平均价格的商品/
int main){
float price[8]:
float average,highestP,lowestP;readprice(price): /输入商品的价格/
average=averPrice(price); /计算商品的平均价格/highestP=highPrice(price); /找出最高价的商品/lowestP=lowePrice(price); /找出最低价的商品/printf(“The highest Price=%6.20n”,highestP); printf(“the lowest Price=%6.20n”,lowestP); printf(“The average Price=%6.2fn”,average);
prtprice(price,average); /输出高于平均价格的商品/
return 0;