C语言程序设计第五版谭浩强著 第七章部分课后习题答案

#include<stdio.h>
int gcd(int x,int y)
{
	int z;
	for(;;)
	{
		z=x%y;
		x=y;
		y=z;
		if(y==0)
		break;
	}
	return x;
}
int idk(int x,int y)
{
	int z;
	z=x*y/gcd(x,y);
	return z;
}
main()
{
	int x,y;
	scanf("%d%d",&x,&y);
	printf("最大公约数:%d 最小公倍数:%d\n",gcd(x,y),idk(x,y));
	return 0;
}
#include<stdio.h>
#include<math.h>
double updelta(double a,double b,double c)
{
	double x1,x2;
	x1=(-b+sqrt(b*b-4*a*c))/(2*a);
	x2=(-b-sqrt(b*b-4*a*c))/(2*a);
	printf("x1=%lf x2=%lf\n",x1,x2);
}
double delta(double a,double b,double c)
{
	double x;
	x=(-b)/(2*a);
	printf("x1=%lf x2=%lf\n",x,x);
}
double delta_(double x,double y,double z)
{
	printf("没有实根\n");
}
main()
{
	double a,b,c,d;
	scanf("%lf%lf%lf",&a,&b,&c);
	d=b*b-4*a*c;
	if(d>0) updelta(a,b,c);
    else if(d==0) delta(a,b,c);
    else delta_(a,b,c);
	return 0;
}
#include<stdio.h>
#include<math.h>
int prime(int x)
{
	int n,i;
	n=sqrt(x);
	for(i=2;i<=n;i++)
	{
		if(x%i==0)
		return 0;
		else
		return 1;
	}
}
main()
{
	int n,flag;
	scanf("%d",&n);
	flag=prime(n);
	if(flag)printf("是素数\n");
	else printf("不是素数\n");
	return 0;
}
#include<stdio.h>
int change(int a[3][3])
{
	int i,j,t,b[3][3];
	for(i=0;i<3;i++)
	 for(j=0;j<3;j++)
	   b[j][i]=a[i][j];
    printf("变换后:\n");
	for(i=0;i<3;i++)
     { 
	   for(j=0;j<3;j++)
	   printf("%3d ",b[i][j]);
	   printf("\n");		
   	}
}
main()
{
	int a[3][3],i,j;
	for(i=0;i<3;i++)
	 for(j=0;j<3;j++)
	  scanf("%d",&a[i][j]);
    printf("变换前:\n");
    for(i=0;i<3;i++)
     { 
	   for(j=0;j<3;j++)
	   printf("%3d ",a[i][j]);
	   printf("\n");		
   	}
   	change(a);
   	return 0;
}
#include<stdio.h>
#include<string.h>
char inverse(char a[])
{
	char b[9999],len,t;
	int i,j;
	strcpy(b,a);
	len=strlen(a);
	for(i=0,j=len-1;i<j,j>=0;i++,j--)
	a[i]=b[j];
}
main()
{
	char a[9999];
	gets(a);
	inverse(a);
	puts(a);
}
#include<stdio.h>
#include<string.h>
char link(char a[], char b[])
{
	strcat(a,b);
	puts(a);
}
main()
{
	char a[999],b[999];
	gets(a);
	gets(b);
	link(a,b);
}
#include<stdio.h>
#include<string.h>
char check(char a[])
{
	char b[999];
	int i,j=0,len;
	len=strlen(a);
	for (i=0;i<=len-1;i++)
	{
	  if(a[i]==97||a[i]==101||a[i]==105||
        a[i]==111||a[i]==117||a[i]==65||
        a[i]==69||a[i]==73||a[i]==85||a[i]==79)
     {
    	b[j]=a[i];
    	j++; 
	    b[j]='\0'; //字符串太坑了 如果在每一次赋值后面不加'\0',就有可能会自己添加其他的字符
	   }  //可以去掉上面那一句试一试输入aeiouAEIOU
	}
    puts(b);
}
main()
{
	char a[999];
	gets(a);
	check(a);
}

#include<stdio.h>
int shu(int n)
{
	int ud,td,hd,thd;
	ud=n%10;
	td=n%100/10;
	hd=n%1000/100;
	thd=n/1000;
	printf("%d %d %d %d\n",thd,hd,td,ud);
}
main()
{
	int n;
	scanf("%d",&n);
	shu(n);
}
#include<stdio.h>
#include<string.h>
char counter(char a[],int  b[])
{
	int i,len;
	len=strlen(a);
	for(i=0;i<=len-1;i++)
	{
		if(a[i]>=65&&a[i]<=90||a[i]>=97&&a[i]<=122) b[0]++;
		else if(a[i]>=48&&a[i]<=57) b[1]++;
		else if(a[i]==32) b[2]++;
		else b[3]++;
	}
}
main()
{
	char a[999];
	int b[4];
	memset(b,0,sizeof(b));  //这个作用是给数组b全部的元素赋值0
	gets(a);
	counter(a,b);
	printf("字母:%d 数字:%d 空格:%d 其他字符:%d\n",b[0],b[1],b[2],b[3]);
}
#include <stdio.h>
#include <string.h>
char lw(char s[], char t[])
{
    int i,j,n,k,m,word;
    char c[999];
    n=strlen(s);
    m=0;
    word=0;
    for(i=0,j=0,k=0;i<=n;i++)
      {
        if (s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
			{
               word=1;
               c[j++]=s[i];
            }
        else if (word==1)
			{
               if (j>k)
			   	{
                  for(m=0;m<j;m++)
				  t[m]=c[m];
                  t[m]='\0';
                  k=j;
            }
            word=0;
            j=0;
        }
    }
}               
 main()
{
    char a[999], b[999];
    gets(a);                                     
    lw(a, b);                             
    puts(b);                                      
    return 0;
}
#include<stdio.h>
#include<string.h>
char sort(char a[])
{
	int i,j;
	char t;
	for(i=0;i<9;i++)
	  for(j=i+1;j<10;j++)
	  {
  		if(a[i]>a[j])
  		{
		  	t=a[i];
		  	a[i]=a[j];
		  	a[j]=t;
		  }
  	}
}
main()
{
	char a[11];
	gets(a);
	sort(a);
	puts(a);
	return 0;
}
#include<stdio.h>
#include<math.h> 
double ND(double a,double b,double c,double d)
{
    double x=1,x0;
    do
    {
        x0=x;
        x=x0-(((a*x+b)*x+c)*x+d)/((3*a*x+2*b)*x+c);
    }while(fabs(x-x0)>=1e-5);
    return x;
}

main()
{
	double a,b,c,d,ans;
	scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
	ans=ND(a,b,c,d);
	printf("%lf\n",ans);
	return 0;
}
#include<stdio.h>
double LRD(int n,double x)
{
	if(n==0)
	return(1);
	else if(n==1)
	return(x);
	else
	return(((2*n-1)*x-LRD(n-1,x)-(n-1)*LRD(n-2,x))/n);
}
main()
{
	int n;
	double x,ans;
	scanf("%d%lf",&n,&x);
	ans=LRD(n,x);
	printf("%lf\n",ans);
	return 0;
}
#include<stdio.h>
#include<math.h>
#include<string.h>
double AVG1(int a[][5])
{
    int i,j,sum;
    double ans;
    printf("每个学生的平均分是:\n");
    for(i=0;i<10;i++)
    {
    	ans=0;
		sum=0;
    	for(j=0;j<5;j++)
    	{
	    	sum+=a[i][j];
	    }
	    ans=sum/5;
	    printf("%.2lf\n",ans);
    }
}
double AVG2(int a[][5])
{
	int i,j,sum;
    double ans;
    printf("每门课的平均分是:º\n");
    for(i=0;i<5;i++)
    {
    	ans=0;
		sum=0;
    	for(j=0;j<10;j++)
    	{
	    	sum+=a[i][j];
	    }
	    ans=sum/10;
	    printf("%.2lf\n",ans);
    }
}
double compare(int a[][5])
{
	int i,j,max,name,subject;
	max=a[0][0];
	for(i=0;i<10;i++)
	{
		for(j=0;j<5;j++)
		{
			if(a[i][j]>max)
			{
				max=a[i][j];
				name=i+1;
				subject=j+1;
			}	
		}
	}
	printf("名字:%d 课程:%d 得分:%d\n",name,subject,max);
}
int FC(int a[][5]) 
{
    int i,j;
    double ans,fc,b[10],c[10],sum,x=0,y=0;
    printf("方差是:\n");
    for(i=0;i<10;i++)
    {
    	ans=0;
		sum=0;
    	for(j=0;j<5;j++)
    	{
	    	sum+=a[i][j];
	    }
	    ans=sum/5;
	    b[i]=ans;
    }
    for(i=0;i<10;i++)
    y+=b[i];
    y/=10;
    y=y*y;
    for(i=0;i<10;i++)
    b[i]*=b[i];
    for(i=0;i<10;i++)
    x+=b[i];
    x=x/10;
    fc=x-y;
    printf("%lf\n",fc);
}
main()
{
    int a[10][5]={78,79,80,81,82,  72,73,87,91,82,  92,93,87,71,78,  92,93,97,91,98,  76,97,77,61,68,  62,73,67,61,68,  
	82,98,87,78,88,  100,97,97,91,98,  98,93,77,87,90,  99,93,89,73,98};
	int i,j;
	AVG1(a);
	AVG2(a);
	compare(a);
	FC(a);
	return 0;
}
#include<stdio.h>
#include<string.h>
char change(char a[])
{
	int i,j,ans=0,len;
	len=strlen(a);
	for (i=len-1,j=1;i>=0;i--) 
    {
        if(a[i]>='0'&&a[i]<='9')
            ans+=(a[i]-'0')*j; 
        else if(a[i]>='A'&&a[i]<='F')
            ans+=(a[i]-'A'+10)*j;
        else if(a[i]>='a'&&a[i]<='f')                                                                 
            ans+=(a[i]-'a'+10)*j;
			j*=16;                                                                         
    }
    printf("%d\n",ans);
}
main() 
{
    char a[100];
    int i,k,sum=0;
    gets(a);
    change(a);
}
#include <stdio.h>
#include<string.h>
char output(int n)
{
    int m;
    if ((m=n/10)!=0)
    output(m);
    putchar(n%10+'0');
}                        
main()
{
    int num;     
    scanf("%d", &num);
    output(num);                           
    printf("\n");
    return 0;
}
#include<stdio.h>
int Run(int y)
{
	if(y%4==0&&y%100!=0||y%400==0)
	return(1);
	else return(0);
} 
int jisuan(int m,int d)
{
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int i;
    for(i=1;i<m;i++)
    d+=a[i];
    return(d);
}
main()
{
	int y,m,d,t;
	scanf("%d%d%d",&y,&m,&d);
	t=jisuan(m,d);
	if(Run(y)&&m>=3)
	t+=1;
	printf("天数是%d\n",t);
	return 0;
}
  • 36
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值