一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选须中选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
- C程序是由()构成的。
A.常量
B.变量
C.运算符
D. 函数
- 下列合法的标识符是()
A. Case
B. Li-da-yong
C. 3con
D. Sa
3.以下描述不正确的是()
A.宏名无类型
B. 宏替换不占用运行时间
C.宏名必须用大写字母表示
D.宏替换只悬孚符替换
4.以下正确的字符常量是()
A. 412
B. 255
C. 108"
D.''
- 下面叙述中正确的是()
A.若int a=3, b=2,c=1; f=a>b>c;则f值为真
B.若intm=0, n=l,a=1.b=2,c=3;(m=a>b)&&(n=c>4),则n值为真
C.若inta=2,b=3,c=1;c=a/b;则c的值为真
D.若inta=2,b=3;表达式a>b?a:0的值为真
6·定义doubie i=3.5.j=5.5;则表达式(int)i+j的值是()。
A. 9.0
B. 8.5
C.8
D. 8.0
7,若intx=6:则x+=x-x*=x; x的值为()
A.0
B. -60
C. 60
D. -24
8.已有定义"intx=3,y=4,z=S;",则表达式"!(x+y)+z-1 &&y+z/2"的值是()
A. 6
B.0
C. 2
D. 1
- 对于循环while(le)语句,le 等价于()
A. e=0
B. e! =0
C. e=
D. e! =1
10,使用"scanf ("X=%fy=%f", &x. &y) ",要使X, y均为1.25,正确的输入是()
A. 1.25, 1.25
B. 1.25 1.25
C. X=1.25,y=1.25
D. x=1.25,y=1.25
11.设变量已正确定义,以下( )与其它switch语句不等价。
A
#include <stdio.h>
int main() {
int op, value1, value2;
// Assume that you have variables value1 and value2 defined somewhere
switch (op) {
case '+':
printf("%d\n", value1 + value2);
break;
case '-':
printf("%d\n", value1 - value2);
break;
case '*':
printf("%d\n", value1 * value2);
break;
default:
printf("Error\n");
break;
}
return 0;
}
B
#include <stdio.h>
int main() {
int op, value1, value2;
// Assume that you have variables value1 and value2 defined somewhere
switch (op) {
default:
printf("Error\n");
break;
case '*':
printf("%d\n", value1 * value2);
break;
case '-':
printf("%d\n", value1 - value2);
break;
case '+':
printf("%d\n", value1 + value2);
break;
}
return 0;
}
C
#include <stdio.h>
int main() {
int op, value1, value2;
// Assume that you have variables value1 and value2 defined somewhere
if (op != '+' && op != '-' && op != '*') {
printf("Error\n");
} else {
switch (op) {
case '+':
printf("%d\n", value1 + value2);
break;
case '-':
printf("%d\n", value1 - value2);
break;
case '*':
printf("%d\n", value1 * value2);
break;
}
}
return 0;
}
D
#include <stdio.h>
int main() {
int op, value1, value2;
// Assume that you have variables value1 and value2 defined somewhere
switch (op) {
case '+':
printf("%d\n", value1 + value2);
break;
case '-':
printf("%d\n", value1 - value2);
break;
case '*':
printf("%d\n", value1 * value2);
break;
}
return 0;
}
12,若变量已正确定义,对以下while循环结束条件的准确描述是()。
c
#include <stdio.h>
#include <math.h>
int main() {
int flag = 1;
int denominator = 1;
double item = 1.0;
double pi = 0;
while (fabs(item) > 0.0001) {
item = flag * 1.0 / denominator;
pi = pi + item;
flag = -flag;
denominator = denominator + 2;
}
return 0;
}
A. item的绝对值不大于 0.0001
B. item的绝对值不小于0.0001
C. item的绝对值等于0.0001
D.item的绝对值不等于0.0001
13,若有定义, int a[10];,则对数组a元素的正确引用是()
A. a[10]
B. a[3.5]
C. a(5)
D. a[10-10]
- 若有以下说明语句:
struct date{int year,month,day;}birthday;则下面叙述不正确的是()。
A. struct 是结构体类型的关键字
B. struct date是用户定义的结构体类型名
C. year、 month、day都是结构体成员名
D. bitthday是用户定义的结构体类型名
15,有两个字符数组a,b,则以下正确的输入语句是()
A. gets(a,b);
B. scanf("%s%s",a,b);
C. scanf("%s%s",&a,&b);
D. gets("a").gets("b");
- C语言程序中,当调用函数时()
A.实参和形参各占一个独立的存储单元
B.实参和形参共用一个存储单元
C可以由用户指定是否共用储存单元
D.由家统自动指定是否共用存储单元
17,关于语言中的函数,下列说法错误的是()。
A+在不同的函数中不可以使用相同名称的变量。
B.函数中的形式参数是在栈中保存的。
C.在一个函数内定义的变量只在本函数范围内有效。
D.在一个函数内的复合语句中定义的变量在本复合语句范围内有效。
- 若变量已正确定义并且指针p已经指向某个变量x,则(*p)+相当于(
A. p
B. x++
C. *(p+)
D. &x++
19.定义下列结构体数组:
c
#include <stdio.h>
struct st {
char name[15];
int age;
} a[10] = {
{"ZHAO", 14},
{"WANG", 15},
{"LIU", 16},
{"ZHANG", 17}
};
int main() {
// Your code logic here
return 0;
}
执行语句 print["%d,%c",a[2].age, "(a[3].name+2))的输出结果为()。
A. 15, A
B. 16, H
C.16, A
D. 17,H
20.若有以下说明 inta]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,且0<=i<10,则对数组元素的错误引用是()
A. *(a+i)
B. a[p-a+i]
C. p+i
D. *(&a[i])
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结果填写在答题纸的相应位置上。)
c
#include <stdio.h>
int main() {
int m = 14, n = 63;
while (m != n) {
while (m > n)
m = m - n;
while (m < n)
n = n - m;
printf("%d\n", m);
}
return 0;
}
c
#include <stdio.h>
int main() {
int a, b, c, d;
a = c = 0;
b = 1;
d = 20;
if (a)
d = d - 10;
else if (!b)
if (!c)
d = 25;
else
d = 15;
printf("d = %d\n", d);
return 0;
}
c
#include <stdio.h>
int main() {
char s[] = "abaacda", *p, *q, ch = 'a';
int n = 0;
for (p = q = s; *p != '\0'; p++)
;
while (*q) {
if (*q - ch)
n++;
if (n == 3) {
while (p >= q)
*(p + 1) = *p--;
*q = 'H';
break;
}
printf("%c", *q);
q++;
}
return 0;
}
c
#include <stdio.h>
struct date {
int year;
int month;
int day;
};
void func(struct date *p) {
p->year = 2000;
p->month = 5;
p->day = 22;
}
int main() {
struct date d;
d.year = 1999;
d.month = 4;
d.day = 23;
printf("%d, %d, %d\n", d.year, d.month, d.day);
func(&d);
printf("%d, %d, %d\n", d.year, d.month, d.day);
return 0;
}
c
#include <stdio.h>
int func(int a, int b) {
int m = i + a + b;
return m;
}
int main() {
static int m, i = 2;
i += m + 1;
int k = 4, n = 1, p;
p = func(k, n);
printf("%d\n", p);
p = func(k, n);
printf("%d\n", p);
return 0;
}
三、程序填空题(每空5分,共35分。请将答案填写在答题纸的相应位置上。)
1,以下程序从键盘接收一个小写字母(不考虑输入错误的情况),将其循环更改为其后第5个位置的字符。如'公变为t,'w'变为℃'。请填空。
c
#include <stdio.h>
int main() {
char ch;
ch = getchar();
if ((ch > 'a') && (ch <= 'u')) {
_________;
} else {
_______;
putchar(ch);
}
return 0;
}
- 程序功能:输出数组中值为素数的元素下标
c
#include <stdio.h>
int IsPrime(int n) {
int i;
for (i = 2; i < n; i++) {
if (_______) {
return 0;
________;
}
int main() {
int a[] = {3, 5, 7, 9, 11, 12};
int i;
for (_________) {
if (IsPrime(a[i])) {
printf("%d ", a[i]);
}
}
return 0;
}
3,下列程序功能是:已知学生的信息由学号和学习成绩构成,函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数。请填空。
c
#include <stdio.h>
typedef struct {
char num[10];
int x;
} STU;
void fun(STU a[], STU m) {
int j = 0;
for (int i = 0; i < 5; i++) {
if (a[i].x < a[j].x) {
j = i;
------------------------------------;
}
}
}
int main() {
int i;
STU s[5], k;
for (i = 0; i < 5; i++) {
scanf("%s%d", s[i].num, &s[i].x);
}
fun(s, k);
printf("%s %d\n",_________);
return 0;
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)
1,编写程序:输入x,计算多项式1-x+xx/2!-xx*x/3!+.的和直到求项的绝对值小于10 的 -6 次方为止
2,数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于4的偶数总能表示为两个素数之和。比如:24=5+19,其中 5 和 19都是素数。编写程序验证。
3.下面的程序用于从键盘接收一个字符串(假设输入字符串长度在80以内),计算其长度并输出。请将其补充完整。【要求:不允许使用strlen(函数,用字符指针实现。】
#include<stdio.h>
void main){
char s[81],*p:
}