printf(\ }
3.20
#include
for(i = 0; i < k-1; i++)
for(j = 0; j < k-i-1; j++) if (a[j] > a[j+1])
{ t = a[j]; a[j] = a[j+1]; a[j+1] = t;} }
void main()
{ int i, b[5] = {9, 6, 7, 5, 8};
s(b, 5);
for(i = 0; i < 5; i++) printf(〞=〞, b[i]); printf(〞\\n〞); }
3.21
#include
while(n > 0) { if((d = n % 10) < c) c = d; n /= 10; } return c;
} void main()
{ printf(\M\\n\, mDigit(9657)); }
3.22
#include
for(i = n-1; i > 0; i--) {
for(m = i, j = i-1; j >= 0; j--) if(b[j] > b[m]) m = j; if(m != i)
{ t = b[i]; b[i] = b[m]; b[m] = t;} } }
void main()
{ int i, a[5] = {6, 12, 7, 11, 5}; s(a, 5);
11--34 注:解答写在答卷纸上,试卷中的解答不评分
for(i = 0; i < 5; i++) printf(\ printf(\ }
3.23
#include
{ int i, j, sum;
for(sum = 0, i = 1; i <= 4; i++) { for(j = 1; j <= i; j++) sum += i * j; printf(″=″, sum) } }
3.24
#include
int a, b;
void p(int c, int *d)
{ c = a + b; *d = a – b; printf(″=, =″, c, *d); }
void main()
{ a = 1; b = 2; p(a, &b); printf(″=, =\\n″, a, b); }
3.25.当输入为12 78 ↙时。 #include
void main()
{ scanf(″%d%d″, &i, &j);
do { k = i % j; i = j; j = k; } while (j != 0); printf(″%d\\n″, i); }
3.26
int reverseNum(int n) {
return reverseDigit(n, 0); }
reverseDigit(int low, int high) {
if(low == 0) return high;
return reverseDigit(low/10, high*10+low);
12--34 注:解答写在答卷纸上,试卷中的解答不评分
}
四、完全程序或函数
4.1.将一字符串中的大写英文字母改成小写。 void upToLow(char *str) {
while ( ▁▁(1)▁▁ )
{ if( ▁▁(2)▁▁ ) *str -= ?A‘ – ?a‘; str++; } }
4.2.以下函数用来在w数组中插入x。形参n是w数组中的整数个数。数组w中的整数已按从小到大的顺序排列,插入后数组w中的整数仍有序。 void fun(int w[], int x, int n) { int i, p;
p = 0; w[n] = x;
while(x > w[p]) p++;
for(i = n; ▁▁(1)▁▁; i--) w[i] = ▁▁(2)▁▁ ; ▁▁(3)▁▁ = x; }
4.3.下面函数pi()的功能是根据以下公式求π值(直到最后一项小于10-6为止)。 π 1 1 2 1 2 3 1 2 3 4
—- = 1 + — + — * — + — * — * — + — * — * — * — +?? 2 3 3 5 3 5 7 3 5 7 9 double pi( )
{ double s = 0.0, t = 1.0; int n; for( n = 1; t >= 0.000001; n++) { s += t; t = t * ▁▁(1)▁▁; }
return 2.0 * s; }
4.4.使用结构型计算复数x和y的和。
struct comp { float re, im; };
struct comp addComp(struct comp x, struct comp y) { struct comp z;
z.re = ▁▁(1)▁▁ ; z.im = ▁▁(2)▁▁ ; return z; }
13--34 注:解答写在答卷纸上,试卷中的解答不评分
4.5.下面函数是求计算整数x的逆数。例如,x为1234,则函数的计算结果是4321。 int reverseNum(int x) { int s = 0;
while(x != 0) {
s = ▁▁(1)▁▁; x = ▁▁(2)▁▁; }
return s; }
4.6.将一字符串中的小写英文字母改成大写。 void lowToUp(char *str) { int i = 0;
while (▁▁(1)▁▁)
{ if(▁▁(2)▁▁) str[i] -= ?a‘ – ?A‘; i++; }
}
4.7.以下程序求出所有各位数字的立方和等于1099的3位数。 #include
{ int a, b, c; /* 变量定义 */ for(a = 1; a <= 9; a++) for(b = 0; b <= 9; b++) for(c = 0; c <= 9; c++)
if ( _____(1)____ == 1099) printf(“%d\\n”, ____(2)____ ); }
4.7(2).以下程序求出所有各位数字的立方和等于1099的3位数。 #include
void main()
{ int k, a, b, c; /* 变量定义 */ for(k = 100; k <= 1000; k++) { a = ______ ; b = _______ ; c = ________ ;
if ( _____(1)____ == 1099) printf(“%d\\n”, k ); } }
4.8.以下函数输出整数的每位数字,并在数字之间输出一个逗号字符。例如,对于整数2345,函数输出为:2,3,4,5。 void writeDigits(int n)
14--34 注:解答写在答卷纸上,试卷中的解答不评分
{ int a[20], i;
i = 0; /* 对n进行分拆,各位数字自低位到高位存于数组a */ do { a[i++] = ____(1)____ ; ____(2)____; } while (n);
for(i--; i > 0; i--)
printf(\自高位到低位输出 */ printf(\ }
4.9.函数Node *merge(Node *h1, Node *h2)实现由链表h1和h2产生一个新链表,其中h1和h2分别是两个从小到大有序链表首表元指针,新链表包含或在链表h1,或在链表h2中出现的元素。要求新链表也从小到大链接,并且没有重复的表元。设链表表元类型ELE的定义为:
typedef struct ele { int val;
struct ele *next;
}Node;
Node *merge(Node *h1, Node *h2) {
Node *h = NULL, *tail = NULL, *p, *q; while(h1 || h2) {
if(h2 == NULL || ( ____(1)____ )) { p = h1; h1 = h1->next; }
else{
p = h2; h2 = h2->next; }
if(tail == NULL || ____(2)____) {//只复制与末表元不相等的表元 q = (Node *)malloc(sizeof(Node)); q->val = p->val; if( ____(3)____ ) h = tail = q; else tail = ____(4)____; }
}
if(tail) ____(5)____; return h; }
4.10.函数f(NODE1 *h)参照无序整数链表,生成一个从小到大顺序链接的有序整数链表,新链表中没有重复的整数,新链表的表元有整数和该整数在原链表中出现的次数等信息。 typedef struct node1 { /* 原无序整数链表的表元类型 */ int val; struct node1 *next;
}NODE1;
typedef struct node2 { /* 从小到大顺序链接的整数链表的表元类型 */ int val; int count; struct node2 *next;
15--34 注:解答写在答卷纸上,试卷中的解答不评分