int i, s1=0, s2=0; for(i=0;i<10;i++) if(i%2) s1+=i; else s2+=i;
printf(\运行结果: 25 20
22. #include
if(i>M/2) break;
if(M%i==0) printf(\ i++; } printf(\运行结果: 2 4 5 10
23. #include
int a[6]={4,5,6,15,20,12}; void main() { int i,s1,s2; s1=s2=0;
for(i=0; i<6; i++) { switch(a[i]%2) {
case 0: s2+=a[i];break; case 1: s1+=a[i];break; } } printf(\运行结果:20 42
24. #include
int a[3][3]={{3,5,7},{9,11,13},{6,8,20}}; int i,*p=&a[0][0]; for(i=0;i<9;i++) {
if(*p>10) printf(\ p++; } printf(\运行结果:11 13 20
25. #include
struct Worker { char name[15]; int age; float pay;}; void main() { struct Worker x; char *t=\
int d=38; float f=400; strcpy(x.name,t); x.age=d; x.pay=f; x.age++; x.pay*=2;
printf(\运行结果: liouting 39 800.00
26. #include
27. #include if(x%i==0) {printf(\ i++; }} 运行结果:25 28. #include int a[8]={76,63,54,95,40,75,90,66}; int i, s=0; for(i=0;i<8;i++) if(a[i]>=70 && a[i]<=90) s+=a[i]; printf(\运行结果:s=241 29. #include printf(\运行结果:30 30. #include 6 for(i=O; i int a[5]={1 ,2,3,4,5}; int b=LA(a,5)+LA(a+2,3); printf(\运行结果:b=27 四、写出下列每个函数的功能 1. int WC(int a[],int n, int k) { int i, c=O; for(i=O; i 函数功能:统计并返回一维整型数组a[n]中大于等于k的值的个数。 2. void QA(struct Worker a[],int n) {int i; for(i=O; i scanf(\假定结构类型 struct Worker的定义如下: struct Worker{char name[15];int age;float pay;}; 函数功能:从键盘上为具有struct Worker类型的数组a[n]输入n个记录。 3. #include int SA(int a, int b) { if(a>b) return 1; else if(a==b) return 0; else return -1; } 函数功能:比较两个整数a和b的大小,若a>b则返回1,若a==b则返回0,若a 4. void Output(struct IntNode *f) //f为单链表的表头指针 { if(!f) return; while(f) { printf(\ f=f->next; } printf(\ 假定struct IntNode的类型定义为: struct IntNode { int data; struct IntNode* next;}; 函数功能:遍历并输出由f所指向的单链表中每个结点的值。 5. int SG(int x) { //x为大于等于2的整数 int i=2; 7 if(x==2 || x==3) return 1; while(i*i<=x) { if(x%i==0) break; i++; } if(i*i<=x)return 0; else return 1; } 函数功能:判断x是否为一个素数,若是则返回1,否则返回0。 6. int FindMax(struct IntNode *f) //f为一个单链表的表头指针 { int x; if(!f) {printf(\单链表为空\\n\ x=f->data; f=f->next; while(f) { if(f->data>x) x=f->data; f=f->next; } return x; } 假定struct IntNode的结点类型定义为: struct IntNode { int data; struct IntNode* next;}; 函数功能:求出并返回由f所指向的单链表中所有结点的最大值。 五、按题目要求编写程序或函数 1. 编写一个程序,计算1+3+3+...+3的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。 程序为: #include int p=1; int s=1; for(i=1;i<=10;i++) {p*=3; s+=p;} printf(\ 2. 根据函数原型“int FF(int a[], int n)”,编写函数定义,计算并返回数组a[n]中所有元素之和。 程序为: int FF(int a[], int n) { int i,sum=0; for(i=0; i 3. 编写一个主函数,计算1+3+3+...+3的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。 程序为: #include 2 102 10 int i; int p=1; int s=1; for(i=1;i<=10;i++) {p*=3; s+=p;} printf(\ 4. 根据函数原型“int FF(int a[], int n)”,编写函数定义,计算并返回数组a[n]中所有元素之和。 程序为: int FF(int a[], int n) { int i,sum=0; for(i=0; i 5. 编写一个程序,输出50以内(含50)的、能够被3或者5整除的所有整数。 程序为:#include int i; for(i=3; i<=50; i++) if(i%3==0 || i%5==0) printf(\ printf(\ 6. 编写一个递归函数“int FF(int a[], int n)”,求出数组a中所有n个元素之积并返回。 程序为: int FF(int a[], int n){ if(n<=0) {printf(\值非法\\n\ if(n==1) return a[n-1]; else return a[n-1]*FF(a,n-1); } 7. 编写一个程序,输出50以内(含50)的、能够被3或者5整除的所有整数。 #include void main() { int i; for(i=3; i<=50; i++) if(i%3==0 || i%5==0) printf(\,i); printf(\ 8. 编写一个递归函数“int FF(int a[], int n)”,求出数组a中所有n个元素之积并返回。 int FF(int a[], int n) { if(n<=0) {printf(\值非法\\n\,exit(1);} if(n==1) return a[n-1]; else return a[n-1]*FF(a,n-1); } 8 9.根据函数原型\,编写函数定义,要求返回二维数组a[m][n]中所有元素的平均值。假定在计算过程中采用变量v存放累加值和最后的平均值。 double Mean(double a[M][N] ,int m ,int n) { int i,j; double v=O.0; for(i=O; i for(j=O; j return v; } //注:函数体的最后两行可以合并为一条返回语句:return v/=m*n,也可以把\去掉。 10.根据函数原型\,int m)\,编写函数定义,计算并返回数组a[m]中元素最大值和最小值之差。 int MM(int a[],int m){ int i,x1,x2; xl=x2=a[0]; for(i=1; i