一、单项选择题(本大题共 20小题,每小题 2分,共 40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
1,结构化程序由三种基本结构组成,三种基本结构组成的算法是()
A.可以完成任何复杂的任务
B.只能完成部分复杂的任务
C.只能完成符合结构化的任务
D.只能完成一些简单的任务
2.以下名字,不能作为C语言标识符的是()
A. hehe
B. a$b_c
C. student-2
D____
3.在计算机系统中,符号整数值一律采用()来表示和存储
A.原码
B.反码
C. 补码
D.移码
4,以下选项中,非法的字符常量是()
A. ‘t’
B. ‘\65’
C. “n”
D. ‘\t’
5.设x、y、t均为int型变量,则执行语句:x=y=3;t= ++x Il++y;后,y的值为()。
A.不定值
B.3
C.4
D.1
6.下面的程序段将输出()
int a = 5, b =-3, c;
c= a % b;
printf(“%d\n”, c);
A.1
B.-1
C.2
D.-2
7.设有如下定义:int ix=10,iy=3,iz:则语句printf(“%dn”,iz=(ix%iy,ix/iy));的输出结果是()
A.1
B.2
C.3
D.4
A. (x<=a)&&(x>=b)&&(x<=c)
B. (x<=a)(b<=x<=c)
C. (x<=a)(x>=b)&&(x<=c)
D.(x<=a)&&(b<=x<=e)
9.若a是32位int类型变量,判断其32个2进位中末两位均为1的表达式为()
A. a&33
B.a&311
C.a&113
D. a&l111
10.如果下面程序运行结果是i=12.5j=-4.0,从键盘应输入()。
#include “stdio.h”
int main(){
float i,j;
scanf(“i=%fj=%f”,&i,&j);
printf(“i=%f.j=%n”,i);
return 0;
}
A. 12.5 -4.0
B. j=12.5 j=-4.0
C. i=12.5 j=-4
D. i=12.5,j=-4
A. a=20, b=10, c=20
B. a=30, b=10, c=20
C. a=30, b=10, c=30
D.a=20,b=10,c=30。
A.do-while语句构成的循环不能用其他语句构成的循环来代替
B. do-while语句构成的循环只能用break 语句退出
C.用do-while语句构成的循环,在while后的表达式为非零时结束循环
D. 用 do-while语句构成的循环,在while后的表达式为零时结束循环
#include
int main() {
int p[] = {11, 13, 14, 15, 16, 17, 18};
int i = 0, k = 0;
while (i < 7) {
if (p[i] % 2 != 0) {
k = k + p[i];
}
i++;
}
printf("%d\n", k);
return 0;
}
A. 58
B.56
C. 45
D.24
A. int x[[3]=(0);
B. int x[2][3]=((1,2},(3,4),(5,6)};
C. int x[[3]={{1,2,3),(4,5,6)};
D. int x[2][3]={1,2,3,4,5,6};
15,以下哪一种对于str的定义不恰当,有可能使strlen(str)获得非预期的结果()。
A. char str] = “hello world!”;
B. char str[100] = “X”;
C. char str[4] =“abcd”;
D. char str6) = (65, 66, 67, 68, 69, 0);
16,在一个C源程序文件中,如要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是()
A. extern
B. register
C. auto
D. staticment
17.以下对C语言中函数的有关描述正确的是()。
A.调用函数时只能把实参的值传送给形参,形参的值不能传送给实参。
B.C函数既可以嵌套定义又可以递归调用。
C.函数必须有返回值,否则不能使用函数。
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中。
18.对于以下变量定义int *p[3], a[3];,正确的赋值是()
A.p=a
B.*p=a[0]
C. p=&a[0]
D. p[0] = &a[0]
19,当定义一个结构变量时,系统分配给它的内存空间大小是()
A.各成员所需内存量的总和
B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需容量
D.结构中最后一个成员所需内存量
20,以下哪个选项中的p不是指针()
A. int **p;
B. int (*p)(5);
C. int *p[6];
D. struct Stulchar
name[20];
int age;
}*p, q;
二、程序阅读题(本大题共5小题,每小题6分,共30分。请将程序的运行结构填写在答题纸的相应位置上。)
1_______
#include
void main() {
int i;
char str[] = "university";
for(i = 0; i <= 3; i++) {
switch(i) {
case 0:
printf("%c ", str[i]);
break;
case 1:
printf("%cn", str[i]);
break;
case 2:
printf("%s\n", str);
break;
default:
printf("***");
break;
}
}
}
2_______
#include
void main() {
int a[4][4] = {
{1, 2, -3, -4},
{0, -12, -13, 14},
{-21, 23, 0, -24},
{-31, 32, -33, 0}
};
int i, j, s = 0;
for(i = 0; i < 4; i++) {
for(j = 0; j < 4; j++) {
if(a[i][j] < 0)
continue;
if(a[i][j] == 0)
break;
s += a[i][j];
}
}
printf("%d\n", s);
}
3_______
#include
void fun(int a[], int n, int k) {
int i;
for(i = n - 2; i >= k; i--) {
a[i + 1] = a[i];
}
}
int main() {
int a[6] = {1, 2, 3, 4, 5, 6};
int i;
fun(a, 6, 2);
for(i = 0; i < 6; i++) {
printf("%d,", a[i]);
}
return 0;
}
4_______
#include
void fun(char *s1, char *s2, int n) {
int k;
for (k = 0; k < n; k++) {
s2[k] = (s1[k] - 'A' + 3) % 26 + 'A';
}
s2[n] = '\0'; // Null-terminating the string
}
void main() {
char s1[5] = "ABCD", s2[5];
fun(s1, s2, 4);
puts(s2);
}
5_______
#include
struct st {
int x;
int *y;
} *p;
int dt[4] = {10, 20, 30, 40};
struct st a[4] = {
{50, &dt[0]},
{60, &dt[1]},
{70, &dt[2]},
{80, &dt[3]}
};
void main() {
p = a;
printf("%d, ", ++p->x); // Increment x in first struct and print
printf("%d, ", (++p)->x); // Move to next struct and print its x
printf("%d\n", ++(*p->y)); // Increment the integer pointed by y in current struct and print
}
1.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个。第二天早上有将剩下的挑子吃掉一半,又多吃了一个。后每天早上都吃了前一天剩下的一半零一个。到第day(通过键盘输入)天早上想再吃时,只剩下一个挑子了。求第一天共摘了多少桃子。输入10,输.出为1534
#include
int main() {
int day;
int m = 0;
int n = 1; // 'n' is declared but not used in this snippet
scanf("%d", &day);
while(_______){
m = ________--;
_______
day--;
}
printf("%d\n", m);
return 0;
}
#include
void main() {
_________________________;
char s1[100], s2[100], s[200];
printf("Input string1: ");
scanf("%s", s1);
printf("Input string2: ");
scanf("%s", s2);
concatenate(s1, s2, s);
printf("\nThe new string is %s\n", s);
}
void concatenate(char string1[], char string2[], char string[]) {
int i, j;
for (i = 0; string1[i] != '\0'; i++) {
______________________;
for (j = 0; string2[j] != '\0'; j++) {
______________________;
string[ ] = '\0';
}
四、编程题(本大题共3小题,每小题15分,共45分。请在答题纸的相应位置上作答。)
1.现在90号汽油6.95元/升:93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m-自助,e-协助),计算并输出应付款。
2.编写程序求两个给定正整数的最大公约数和最小公倍数。
3,用结构体来描述一个学生的成绩情况,内容包括:姓名,学号,C成绩和微机原理成绩。要求对一个班的30个学生的成绩进行统计处理:
(1)计算学生的平均分,并按平均分高低排出名次,打印出姓名。
(2)打印出平均分90分以上和不及格者的名字。