a[k]) k=j; x=a[i]; a[i]=a[k]; a[k]=x; } }3. #include〈stdio.h〉 int* LJ(int a[], int n) { int i,k=0;
for(i=1;i〈n;i++)
if(a[i]>a[k]) k=i; return &a[k]; }
4。 int Output(struct IntNode *f) {
int sum=0;
if(!f) return -9999; //用返回特定值-9999表示空表 while(f) { sum+=f—>data;
f=f-〉next; } return sum; }
假定struct IntNode的类型定义为: struct IntNode {
int data; //结点值域
struct IntNode* next; //结点指针域
5
};
5. int wr4(FILE* fptr) {
char ch; int c=0;
fseek(fptr,0,SEEK_SET); while(1) { ch=fgetc(fptr); if(ch!=EOF) c++; else break; } return c; }
五、根据下列每个题目要求编写程序 1。 编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果.
210
2。 编写一个主函数,计算1+3+3+。。。+3的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
3. 编写一个主函数,已知6≤a≤40,15≤b≤30,求出满足不定方程2a+5b=120的全部整数组解.如(13,20)就是其中的一组解。
参考解答: 一、选择题
1。 C 2. D3。 B4. A5. C
6. C7。 B8。 A9. C 10。 A 11. D12. A 13。 C
二、填空题
1。 /*2。 程序 3. weirong184. C 5。 26. float 7。 338. (!x) 9。 110。 if
11。 continue12。 M*N 13。 214。 长度
15。 实参16。 程序文件 17. *(a+i)18。 *p
19。 struct Worker* r20。(*p)。name
三、写出下列每个程序运行后的输出结果 1.
i,s=15, 56
6
2。 ***** **** *** ** * 3. 2 4.
18 20 5. 10 20 40 35 40 20 6.
15 20 28 32 36 47 7.
15 26 26 15 8。
defa 58 638.00
四、写出下列每个函数的功能
1。 求出从键盘上输入的n个整数之和并返回.
2。 采用选择排序的方法对数组a中的n个整数按照从大到小的次序重新排列。3. 求出数组a中n个元素的最大值元素,返回该元素的地址
4.对于以表头指针为f的链表,求出并返回所有结点中data域的值之和. 5。求出一个以fptr为文件流的所对应文件的长度,即所存字符的个数.
五、根据下列每个题目要求编写程序 1。 double fun() {
double a[4][4]; double s=0; int i,j;
printf(”输入一个4*4的数值矩阵:\\n\"); for(i=0;i<4;i++)
7
for(j=0;j<4;j++) scanf(\"%lf”,&a[i][j]); for(i=0;i〈4;i++) s+=a[i][i]; return s; }
2。#includeint i; //用i作为循环变量 int p=1; //用p作为累乘变量 int s=1; //用s作为累加循环变量for(i=1;i〈=10;i++) {p*=3; s+=p;} printf(”%d\\n\); }
3.#include〈stdio.h> void main() {
int a,b;
for(a=6;a〈=40; a++) for(b=15;b〈=30;b++)
if(2*a+5*b==120) printf(”(%d, %d)\\n\,b); }
注意:以上只是在题型和内容上提供参考,题量要比试卷多.
8