C语言程序设计实例4

问题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** ABCDEFG, 删除后,字符串中的内容应当是 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);
}

结果4_3

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值