题目一 选择题

1.若用数组名作为函数调用的实参,传递给形参的是( )
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数

2.使用值传递方式将实参传给形参,下列说法正确的是( )
A.形参是实参的备份
B.实参是形参的备份
C.形参和实参是同一对象
D.形参和实参无联系

3.以下说法正确的是( )
A.下列函数调用语句中含有2个实参:fun((a1,a2),(a3,a4,a5));
B.在函数中未指定存储类别的变量,其隐含的存储类别是void类型
C.若调用一个函数,且此函数中没有return语句,则该函数没有返回值
D.全局变量的作用域一定比局部变量的作用域范围大

4.以下说法错误的是( )
A.continue语句只能用于循环语句中
B.在分支结构switch中,case后面跟的一定是常量
C.在不同函数中可以使用相同名字的变量
D.int num[3]={1,2,3},使用num++来让数组下标后移

5.char ch[]="abcd"在内存中所占的字节数是()
A.4
B.5
C.8
D.10

6.该程序段输出结果为()

1
2
int matrix[2][4]={123456};
Printf(“%d”,*(*(matrix+1)+3));

A.0
B.5
C.8
D.该语句段不合法

7.以下程序执行后m的值为()

1
2
3
4
5
6
7
8
9
10
11
int main()
{
int m=6
if(m++==6)
{
m++;
return 1
}
m-=1
return 0
}

A.5
B.6
C.7
D.8

8.以下代码输出结果是()

1
2
3
4
5
6
7
8
9
int main()
{
int x = 9;
int y = 8, i;
for (i = 0; x > 7; y = i++) {
printf("%d,%d,", x--, y);
}
return 0;
}

A.9,8,8,0,
B.9,0,8,1,
C.8,8,7,0,
D.9,1,8,2,

9.若有说明语句:int a, b, c, *d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()
A.scanf("%d%d%d",&a,&b,d);
B.scanf("%d%d%d",a,b,d);
C.scanf("%d%d%d", &a, &b, &d);
D.scanf("%d%d%d", a, b,*d);

10.下列程序的输出结果为()

1
2
3
4
5
6
7
int main()
{
int m = 7, n =4 ;
float a = 38.4, b = 6.4, x;
x = m/2+n*a/b+1/2;
printf("%f\n",x);
}

A、28.000000
B、27.500000
C、28.500000
D、27.000000

题目二 学生成绩表

使用结构体表示5名学生的信息,计算并输出平均成绩,再按照成绩从高到低的顺序输出。学生信息包括:学号、姓名、成绩。学号不超过9位,姓名不超过8个字符,成绩和平均成绩均为双精度实数,保留1位小数。

题目三 三角形面积

一个三角形的三边长分别是 a、b、c,那么它的面积为 $\sqrt{p(p-a)(p-b)(p-c)}$,其中 $p=\frac{1}{2}(a+b+c)$。输入这三个数字,计算三角形的面积,四舍五入精确到$1$位小数。

输入格式

第一行输入三个实数 a,b,c,以空格隔开。

输出格式

输出一个实数,表示三角形面积。精确到小数点后 $1$ 位。

输入输出样例 #1

输入 #1

1
3 4 5

输出 #1

1
6.0

题目四 回文质数

题目描述

因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000,000)(一亿)间的所有回文质数。

输入格式

第一行输入两个正整数 a 和 b。

输出格式

输出一个回文质数的列表,一行一个。

输入输出样例 #1

输入 #1

1
5 500

输出 #1

1
2
3
4
5
6
7
8
9
10
11
12
5
7
11
101
131
151
181
191
313
353
373
383

说明/提示

提示 1: 找出所有的回文数再判断它们是不是质数(素数).

提示 2: 要产生正确的回文数,你可能需要几个像下面这样的循环。

产生长度为 $5$ 的回文数:

1
2
3
4
5
6
7
8
for (d1 = 1; d1 <= 9; d1+=2) {    // 只有奇数才会是素数
for (d2 = 0; d2 <= 9; d2++) {
for (d3 = 0; d3 <= 9; d3++) {
palindrome = 10000*d1 + 1000*d2 +100*d3 + 10*d2 + d1;//(处理回文数...)
}
}
}

题目五 选举学生会 (10 分)

题目描述

学校正在选举学生会成员,有 n($1 \le n\le 999$)名候选人,每名候选人编号分别从 $1$ 到 $n$,现在收集到了 m($1 \le m \le 2000000$)张选票,每张选票都写了一个候选人编号。现在想把这些堆积如山的选票按照投票数字从小到大排序。设第 i($1 \le i \le m$)张选票上的数字为 $a_i$,则保证有 $1 \le a_i \le n$。

输入格式

输入 n 和 m 以及 m 个选票上的数字。

输出格式

求出排序后的选票编号。

输入输出样例 #1

输入 #1

1
2
5 10
2 5 2 2 5 2 2 2 1 2

输出 #1

1
1 2 2 2 2 2 2 2 5 5

附加题

请根据一下框图写出一套算法,其中,输出量,反馈量都可认为等于当前状态,误差error=目标set-反馈fdb。比例环节 Pout = Kp*error,积分环节Iout = Ki * error,微分环节 Dout=Kd *(error-lasterror)初始状态为0,Kp、Ki、Kd为常数。目标状态为10000.算法运行100次,结果为10000+-300为15分,+-1000为10分,+-1500为5分。
PID