C语言程序设计17

问题17_1

        下列给定程序的功能是 :调用函数 f u n fun fun 将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回 1 1 1 ,失败时返回 0 0 0 。在复制的过程中,把复制的内容输出到屏幕。主函数中源文件名放在变量 s f n a m e sfname sfname 中,目标文件名放在变量 t f n a m e tfname tfname 中。

代码17_1

#include<stdio.h>
#include<stdlib.h>

int fun(char *source, char *target){
	FILE *fs, *ft;
	char ch;
	if((fs=fopen(source, "r"))==NULL)
		return 0;
	if((ft=fopen(target, "w"))==NULL)
		return 0;		
	printf("\nThe data in file:\n");
	ch = fgetc(fs);
	while(!feof(fs)){
		putchar(ch);
		fputc(ch, ft);
		ch = fgetc(fs);
	}
	fclose(fs);
	fclose(ft);
	return 1;
}

void main(void){
	char sfname[20] = "myfile1", tfname[20] = "myfile2";
	FILE *myf;
	int i;
	char c;
	myf = fopen(sfname, "w");
	printf("\nThe original data:\n");
	for(i=1; i<30; i++){
		c = 'A'+rand()%25;
		fprintf(myf, "%c", c);
		printf("%c", c);
	}
	fclose(myf);
	printf("\n\n");
	if(fun(sfname, tfname))
		printf("\nSucceed!");
	else printf("Fail!");
}

结果17_1

Result_Q17_1

问题17_2

        函数 f u n fun fun的功能是:将长整型数中各位上偶数的数依次取出,构成一个数放在 t t t 中。高位仍在高位,低位仍在低位。
        例如,当 s s s 中的数为 87653142 87653142 87653142 时, t t t 中的数为 8642 8642 8642 .

代码17_2

#include<conio.h>
#include<stdio.h>

void fun(long s, long *t){
	int d;
	long s1=1;
	*t = 0;
	while(s>0){
		d = s%10;
		if(d%2==0){
			*t = d*s1 + *t;
			s1 *= 10;
		}
		s /= 10;
	}
}

void main(void){
	long s, t;
	printf("\nPlease enter s:");
	scanf("%ld", &s);
	fun(s, &t);
	printf("The result is: %ld\n", t);
}

结果17_2

Result_Q17_2

问题17_3

         函数 f u n fun fun 的功能是:将 s s s 所指字符串中除下标为偶数同时 A S C I I ASCII ASCII 码值也为偶数的字符外,其余的全部删除:字符串中剩余字符所形成的新串放在 t t t 所指的数组中。
        例如,若 s s s 所指字符串中的内容为 " A B C D E F G 123456 " "ABCDEFG123456" "ABCDEFG123456" ,其中字符 A A A 码值为奇数,因此应当删除;字符 B B B A S C I I ASCII ASCII 码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符 2 2 2 A S C I I ASCII ASCII 码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他以此类推。最后 t t t 所指的数组中的内容应是 " 246 " "246" "246"

代码17_3

#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>

void fun(char *s, char t[]){
	int i, j=0;
	for(i=0; s[i]!='\0'; i++){
		if(i%2==0&&s[i]%2==0)
			t[j++] = s[i];
	}
	t[j] = '\0';  // 在字符串最后加上结束标识 
}

void main(void){
	char s[100], t[100];
	system("CLS");
	printf("\nPlease enter string S:");
	scanf("%s", s);
	fun(s, t);
	printf("\nThe result is: %s\n", t); 
}

结果17_3

Result_Q17)3

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值