问题4_1
函数
f
u
n
fun
fun 的功能是:把形参
a
a
a 所指数组中的奇数按原顺序依次存放到
a
[
0
]
、
a
[
1
]
、
a
[
2
]
.
.
.
a[0]、a[1]、a[2]...
a[0]、a[1]、a[2]... 中,把偶数从数组中删除,奇数个数通过函数值返回。
例如,若
a
a
a 所指数组中的数据最初排列为:
9
,
1
,
4
,
2
,
3
,
6
,
5
,
8
,
7
9, 1, 4, 2, 3, 6, 5, 8 , 7
9,1,4,2,3,6,5,8,7 ,删除偶数后
a
a
a 所指数组中的数据为:
9
,
1
,
3
,
5
,
7
9, 1, 3, 5, 7
9,1,3,5,7 ,返回值为
5
5
5 .
代码4_1
#include<stdio.h>
#define N 9
int fun(int a[], int n){
int i, j;
j = 0;
for(i=0; i<n; i++){
if(a[i]%2==1){
a[j] = a[i];
j++;
}
}
return j;
}
void main(){
int b[N] = {9, 1, 4, 2, 3, 6, 5, 8, 7}, i, n;
printf("\n The orignal data:\n");
for(i=0; i<N; i++){
printf("%4d", b[i]);
}
printf("\n");
n = fun(b, N);
printf("\n The number of odd: %d\n", n);
printf("\n The odd number:\n");
for(i=0; i<n; i++){
printf(" %4d", b[i]);
}
printf("\n");
}
结果4_1
问题1_2
函数
f
u
n
fun
fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。
例如,若
n
u
m
1
num1
num1 和
n
u
m
2
num2
num2 分别为
49
49
49 和
21
21
21,则输出的最大公约数为
7
7
7;若
n
u
m
1
num1
num1 和
n
u
m
2
num2
num2 分别为
27
27
27 和
81
81
81,则输出的最大公约数为
27
27
27。
代码1_2
#include<stdio.h>
int fun(int a, int b){
int r, t;
if(a<b){
t = a;
a = b;
b = t;
}
r = a%b;
while(r!=0){
a = b;
b = r;
r = a%b;
}
return(b);
}
void main(){
int num1, num2, a;
printf("Input num1, num2:");
scanf("%d %d", &num1, &num2);
printf("num1 = %d, num2 = %d\n\n", num1, num2);
a = fun(num1, num2);
printf("The maximun common divisor is %d\n\n", a);
}
结果4_2
问题4_3
函数
f
u
n
fun
fun的功能是:在规定输入的字符串中只含字母和
∗
*
∗ 号,删除字符串中所有的
∗
*
∗ 号。编写函数时,不得使用
C
C
C 语言提供的字符串函数。
例如,字符串的内容为
∗
∗
∗
∗
A
∗
B
C
∗
∗
D
E
F
∗
∗
G
∗
∗
****A*BC**DEF**G**
∗∗∗∗A∗BC∗∗DEF∗∗G∗∗, 删除后,字符串中的内容应当是
A
B
C
D
E
F
G
ABCDEFG
ABCDEFG 。
代码4_3
#include<stdio.h>
#include<conio.h>
void fun(char* a){
int i, j=0;
for(i=0; a[i]!='\0'; i++){
if(a[i]!='*')
a[j++] = a[i]; // 若不是要删除的字符 '*' 则保留
}
a[j] = '\0'; // 最后加上字符串结束符 '\0'
}
void main(void){
char s[81];
printf("Enter a string :\n");
gets(s);
fun(s);
printf("The string after deleted:\n");
puts(s);
}