发表时间: 十二月 19 , 2011 类别: C, 教程

C语言笔记:定义结构体完成分数四则运算

#include <stdio.h>
 
typedef struct{				//定义“分数”结构体,num代表分子,denom分母
	int num;
	int denom;
}fraction;
 
fraction makeRat(int num, int denom);			//创建一个分数,num代表分子,denom代表分母
void Display(fraction r);						//显示一个分数
 
fraction add(fraction first, fraction second);	//分数的加
fraction sub(fraction first, fraction second);	//分数的减
fraction mul(fraction first, fraction second);	//分数的乘
fraction div(fraction first, fraction second);	//分数的除
 
fraction neg(fraction rat);						//求一个分数的相反数
fraction inv(fraction rat);						//求一个分数的倒数
 
int gcd(int a, int b);					//求两个数a和b最高公因数
int main(){
	fraction a,b,c,d;
	a = makeRat(1,2);
	b = makeRat(11,23);
	c = makeRat(5,6);
	d = makeRat(5,26);
 
	fraction result = div(add(a,b),sub(c,d));	
	Display(result);
	return 0;
}
 
fraction makeRat(int num, int denom){
	fraction rat;
	int i = gcd(num, denom);
	rat.num = num / i;
	rat.denom = denom / i;
	return rat;
}
 
void Display(fraction r){
	printf("%d / %d\n", r.num, r.denom);
}
 
fraction add(fraction first, fraction second){
	int num, denom;
	num = first.num * second.denom + first.denom * second.num;
	denom = first.denom * second.denom;
	return makeRat(num, denom);
}
 
fraction neg(fraction rat){
	return makeRat(-rat.num, rat.denom);
}
 
fraction sub(fraction first, fraction second){
	return add(first, neg(second));
}
 
fraction mul(fraction first, fraction second){
	int num, denom;
	num = first.num * second.num;
    denom = first.denom * second.denom;
    return makeRat(num, denom);
}
 
fraction inv(fraction rat){
	return makeRat(rat.denom, rat.num);
}
 
fraction div(fraction first, fraction second){
	return mul(first, inv(second));
}
 
int gcd(int a, int b){
	while(b != 0){
		int tmp = a % b;
		a = b;
		b = tmp;
	}
	return a;
}
发表时间: 十二月 12 , 2011 类别: C

C语言笔记:有关字符串替换

自写函数,使用数组,形式上使用指针.实现输入一个含有n个字符的字符串str1,再输入另一个含有m个字符的字符串str2,从str1中的某位开始替换为str2.

#include <stdio.h>
#include <string.h>
void copyx(char *x,char *y,int i);
int main()
{
	char str1[100],str2[100];         //[]里的数字足够大即可
	int l,i;
	printf("Please input the first word:\n");
	scanf("%s",str1);
	printf("Please input the second word:\n");
	scanf("%s",str2);
	l=strlen(str1);
	printf("Where do you want to insert the second word (From 1 to %d)\n",l);
	scanf("%d",&i);
	if (i<=0 || i>l)
	{
		printf("Wrong Number!\n");
		return 0;
	}
	copyx(str1,str2,i);
	printf("%s",str1);
	return 0;
}
 
void copyx(char *x,char *y,int n)
{
    int j;
    for (j=0;y[j]!='\0';j++)
	{
	  *(x+n+j)=*(y+j);
        }
    *(x+n+j)='\0';
}
s
  • 订阅我的RSS Feed
  • 自动获取我们的更新信息.

最近更新

最新评论

管理

日历