1. 对以下说明语句的正确理解是
int a[10] = {6, 7, 8, 9, 10};
(A) 将5个初值依次赋给a[1]至a[5]
(B) 将5个初值依次赋给a[0]至a[4]
(C) 将5个初值依次赋给a[6]至a[10]
(D) 因为数组长度与初值的个数不相同,所以此语句不正确
2. 以下关于数组的描述正确的是
(A)数组的大小是固定的,但可以有不同类型的数组元素
(B)数组的大小是可变的,但所有数组元素的类型必须相同
(C)数组的大小是固定的,所有数组元素的类型必须相同
(D)数组的大小是可变的,可以有不同类型的数组元素
3. 若用数组名作为函数调用的实参,传递给形参的是
(A) 数组的首地址
(B) 数组第一个元素的值
(C) 数组中全部元素的值
(D) 数组元素的个数
4. 在定义 int a[10]; 之后,对a的引用正确的是
(A)a[10]
(B)a[6.3]
(C)a(6)
(D)a[10-10]
5. 以下给字符数组str定义和赋值正确的是
(A)char str[10]; str = {"China"};
(B)char str[] = {"China"};
(C)char str[10]; strcpy (str, "abcdefghijklmn");
(D)char str[10] = {"abcdefghigklmn"};
6. 下述对C语言字符数组的描述中错误的是
(A) 字符数组可以存放字符串
(B) 字符数组的字符串可以整体输入,输出
(C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
(D) 不可以用关系运算符对字符数组中的字符串进行比较
7. 下面程序段的运行结果是
char ch[ ] = "600";
int a, s = 0;
for (a = 0; ch[a] >= ’0’ && ch[a] <= ’9’; a++)
s = 10 * s + ch[a] - ’0’;
printf("%d", s);
8. 写出下述程序的输出结果
#include <stdio.h>
void main()
{
int a[] = {8,0,3,7,2,5}, i, j, t;
i = 1;
while ( i<6 )
{
t = a[i];
j = i-1;
while( j>=0 && t>a[j] )
{
a[j+1] = a[j];
j--;
}
a[j+1] = t;
i++;
}
i = 0;
while(i<5)
printf("%d,",a[i++]);
printf("%d",a[i]);
}
9. 有下面的程序段:
char a[3], b[] = "China";
a = b;
printf("%s", a);
则
(A) 运行后将输出China
(B) 运行后将输出Ch
(C) 运行后将输出Chi
(D) 编译出错
10. 给出下述程序的执行结果
#include <stdio.h>
void main()
{
char a[80]="AB",b[80]="LMNP";
int i=0;
strcat(a,b);
while(a[i++]!=’\0’)
b[i]=a[i];
printf("%s",b);
}
11. 有如下定义:
int a[3][4][2];
则数组a的第10个元素是
(A) a[2][1][2]
(B) a[1][0][1]
(C) a[2][0][1]
(D) a[2][2][1]
12. 以下正确的定义语句是
(A) int a[1][4] = {1, 2, 3, 4, 5};
(B) float x[3][] = {{1}, {2}, {3}};
(C) long b[2][3] = {{1}, {1, 2}, {1, 2, 3}};
(D) double y[][3] = {0};
1. 【问题描述】两个集合的差集定义如下:
集合A、B的差集,由所有属于A但不属于B的元素构成。
输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。
【输入形式】
从标准输入接收集合中的自然数元素,以空格分隔。-1表示输入结束。
其中,每个集合都不输入重复的元素。
【输出形式】
输出差运算后集合中的元素,以空格分隔。输出元素的顺序与原有集合A输入的顺序一致。
如果A、B的差集为空集,则不输出任何数值。
【样例输入】
2 8 3 4 -1
6 1 4 9 -1
【样例输出】
2 8 3
2. 【问题描述】编写函数itob(n,s,b),用于把整数n转换成以b为基的字符串并存储到s中. 编写程序,使用函数itob(n,s,b)将输入的整数n,转换成字符串s,将s输出.转换后的字符串从最高的非零位开始输出。如果n为负数,则输出的字符串的第一个字符为’-’。b为大于1小于37的任意自然数值。当b=2时,输出字符只可能是’0’和’1’;当b=16时,输出字符串中可能含有字符为’0’-’9’,’a’-’f’(字母以小写输出)。b还可以是其它数值。比如输入n=33,b=17,则输出33的17进制值为"1g"。
【输入形式】控制台输入整数n和b,其中n可以为负数。n和b以空格分隔.
【输出形式】控制台输出转化后的字符串s.
【样例输入】5 2
【样例输出】101
3. 【问题描述】给出平面上一组顶点的坐标,计算出它们所围成的凸多边形的面积。
【输入形式】从标准输入读取顶点坐标。格式为:第一行是点的个数N(3≤N≤15),后面紧接着N行,每行两个数字 (由空格隔开),分别表示该点的X、Y坐标(0≤X,Y≤32767)。所有点的坐标互不相同,且按顺时针次序给出。
输入数据确保该多边形是一个凸多边形。
【输出形式】向标准输出打印一个浮点数,是该多边形的面积。该浮点数保留两位小数。
【输入样例】 4
3 3
3 0
1 0
1 2
【输出样例】
5.00
4. 【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S’。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数S’最小。
【输入形式】输入有两行:
1.第一行是大整数S。其中S最长可达240位。
2.第二行是整数N。S、N均以非0数字开头。
【输出形式】输出有一行,是在S中删除N位后所得的最小数字S’。
【样例输入】
178543
4
【样例输出】13
5. 【问题描述】
编写一函数expand(s1,s2),用以将字符串s1中的缩记符号在字符串s2中扩展为等价的完整字符,例如将a-d扩展为abcd。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。在main函数中测试该函数:从键盘输入包含缩记符号的字符串,然后调用该函数进行扩展,输出扩展结果。
(教材 P63:Exercise 3-3)
【输入形式】
从键盘输入包含扩展符的字符串
【输出形式】
输出扩展后的字符串
【输入样例】
a-c-u-B
【输出样例】
abcdefghijklmnopqrstu-B
6. 【问题描述】对于一个栈,已知元素的进栈序列,判断一个由栈中所有元素组成的排列是否是可能的出栈序列。
比如,进栈序列为1 2 3 4,则可能的出栈序列有4 3 2 1,1 4 3 2等。而1 4 2 3就不是。
【输入形式】从标准输入读取第一行是一个整数N(3≤N≤10),代表有N个元素,其进栈序列是1 2 3 …… N。
第二行是空格分隔的1~N的数字的一个排列。
【输出形式】向标准输出打印结果。如果该排列是可能的出栈序列,则打印“YES”,否则打印“NO”。在行末要输出一个回车符。
【输入样例】
3
3 1 2
【输出样例】
NO