⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 上半学期.txt

📁 c语言专业课本学期的全部练习,适合新手自学,快速上手
💻 TXT
📖 第 1 页 / 共 2 页
字号:
    for(j=0;j<4;j++)
       scanf("%d",&B[i][j]);
 printf("matrix A:\n");
 for(i=0;i<4;i++)
    {for(j=0;j<3;j++)
        printf("%6d",A[i][j]);
     printf("\n");}
 printf("matrix B:\n");
 for(i=0;i<3;i++)
    {for(j=0;j<4;j++)
        printf("%6d",B[i][j]);
     printf("\n");}
 for(j=0;j<3;j++)
    for(k=0;k<3;k++)
       for(i=0;i<4;i++)
          C[j][k]=C[j][k]+B[j][i]*A[i][k];
 for(j=0;j<4;j++)
    for(k=0;k<4;k++)
       for(i=0;i<3;i++)
          D[j][k]=D[j][k]+A[j][i]*B[i][k];
 printf("matrix C:\n");
 for(i=0;i<3;i++)
    {for(j=0;j<3;j++)
        printf("%6d",C[i][j]);
     printf("\n");}
 printf("matrix D:\n");
 for(i=0;i<4;i++)
    {for(j=0;j<4;j++)
        printf("%6d",D[i][j]);
     printf("\n");}
 getchar();
 getchar();}

/*字符串排序*/
#include<stdio.h>
#include<string.h>
main()
{char str[10][10];int i,j;char t[10];
 printf("please input 10 cities.\n");
 for(i=0;i<10;i++)
    gets(str[i]);
 printf("\nThe right turn is:\n");
 for(i=0;i<9;i++)
    for(j=0;j<9-i;j++)
       if(strcmp(str[j],str[j+1])>0)
         {strcpy(t,str[i]);strcpy(str[i],str[i+1]);strcpy(str[i+1],t);}
 for(i=0;i<10;i++)
    puts(str[i]);
 getchar();
 getchar();
}

/*求方阵的迹和行列式*/
#include<stdio.h>
main()
{float A[4][4];int i,j,k,p,q,r,t,s;float TrA=0,detA=0,a;
 for(i=0;i<4;i++)
    for(j=0;j<4;j++)
       scanf("%f",&A[i][j]);
 printf("square matrix A:\n");
 for(i=0;i<4;i++)
    {for(j=0;j<4;j++)
        printf("%6.2f  ",A[i][j]);
     printf("\n");}
 printf("TrA=");
 for(i=0;i<4;i++)
    TrA=TrA+A[i][i];
 printf("%6f\n",TrA);
 printf("detA=");
 for(i=0;i<4;i++)
    for(j=0;j<4;j++)
       for(k=0;k<4;k++)
          for(p=0;p<4;p++)
              if(i!=j&&i!=k&&i!=p&&j!=k&&j!=p&&k!=p)
                {int x[4];
                 x[0]=i;x[1]=j;x[2]=k;x[3]=p;
                 a=A[0][i]*A[1][j]*A[2][k]*A[3][p];
                 s=0;
                 for(q=0;q<3;q++)
                    for(r=0;r<3-q;r++)
                       if(x[r]>x[r+1])   
                         {t=x[r];x[r]=x[r+1];x[r+1]=t;s++;}
                 if(s%2) detA=detA-a;
                 else detA=detA+a;}
 printf("%6f",detA);
 getchar();
 getchar();}

/*n!函数*/
#include<stdio.h>
long int fn(int n)
        {long int z;
         if(n==0||n==1) z=1;
         else z=n*fn(n-1);
         return(z);}
main()
{int n;
 long int fn(int n);
 scanf("%d",&n);
 printf("%d!=%ld",n,fn(n));
 getchar();
 getchar();
 }

/*找素数函数*/
#include<stdio.h>
int flag(int n)
   {int z=1,i;
    for(i=2;i<n;i++)
       if(n%i==0){z=0;break;}
    return(z);
    }
main()
{int flag(int n);
 int n;
 scanf("%d",&n);
 if(flag(n)) printf("%d is sushu.\n",n);
 else printf("%d is heshu.\n",n);
 getchar();
 getchar();
 }

/*矩阵加法函数1(占用同一片内存空间)*/
#include<stdio.h>
void matrixadd(int a[2][3],int b[2][3],int c[2][3])
       {
        int i,j;
        for(i=0;i<2;i++)
           for(j=0;j<3;j++)
              c[i][j]=a[i][j]+b[i][j];
       }
main()
{int a[2][3];int b[2][3];int c[2][3];int i,j;
 void matrixadd(int a[2][3],int b[2][3],int c[2][3]);
 printf("please input matrix a:\n");
 for(i=0;i<2;i++)
    for(j=0;j<3;j++)
       scanf("%d",&a[i][j]);
 printf("please input matrix b:\n");
 for(i=0;i<2;i++)
    for(j=0;j<3;j++)
       scanf("%d",&b[i][j]);
 matrixadd(a,b,c);
 for(i=0;i<2;i++)
    {for(j=0;j<3;j++)
       printf("%d  ",c[i][j]);
     printf("\n");}
 getchar();
 getchar();
 }

/*矩阵加法函数2外部变量*/
#include<stdio.h>
int c[2][3];
void matrixadd(int a[2][3],int b[2][3])
       {
        int i,j;
        for(i=0;i<2;i++)
           for(j=0;j<3;j++)
              c[i][j]=a[i][j]+b[i][j];
       }
main()
{int a[2][3];int b[2][3];int i,j;
 void matrixadd(int a[2][3],int b[2][3]);
 printf("please input matrix a:\n");
 for(i=0;i<2;i++)
    for(j=0;j<3;j++)
       scanf("%d",&a[i][j]);
 printf("please input matrix b:\n");
 for(i=0;i<2;i++)
    for(j=0;j<3;j++)
       scanf("%d",&b[i][j]);
 matrixadd(a,b);
 for(i=0;i<2;i++)
    {for(j=0;j<3;j++)
       printf("%d  ",c[i][j]);
     printf("\n");}
 getchar();
 getchar();}

/*202页8.14学生成绩平均分、科目成绩平均分、最高分*/
#include<stdio.h>
void average1(float a[4][5],float c[4])
{int i,j;
 for(i=0;i<4;i++)
   {c[i]=0;
    for(j=0;j<5;j++)
       c[i]=c[i]+a[i][j];
    c[i]=c[i]/5;}
 }
void average2(float b[5][4],float d[5])
{int i,j;
 for(i=0;i<5;i++)
   {d[i]=0;
    for(j=0;j<4;j++)
       d[i]=d[i]+b[i][j];
    d[i]=d[i]/4;}
 }
void mtrans(float a[4][5],float b[5][4])
{int i,j;
 for(i=0;i<4;i++)
    for(j=0;j<5;j++)
       b[j][i]=a[i][j];
 }
float mtop(float a[4][5])
{float z;int i,j;
 z=a[0][0];
 for(i=0;i<4;i++)
    for(j=0;j<5;j++)
       if(z<a[i][j]) z=a[i][j];
 return(z);
 }
void mtopprintf(float a[4][5],float z)
{int i,j;
 for(i=0;i<4;i++)
    for(j=0;j<5;j++)
       if(z==a[i][j]) printf("max is a[%d][%d]=%f\n",i,j,z);
 }
main()
{void average1(float a[4][5],float c[4]);
 void average2(float b[5][4],float d[5]);
 void mtrans(float a[4][5],float b[5][4]);
 float mtop(float a[4][5]);
 void mtopprintf(float a[4][5],float z);
 float a[4][5];float b[5][4];
 float c[4];float d[5];
 int i,j;float p;
 printf("please input the mark:\n");
 for(i=0;i<4;i++)
    for(j=0;j<5;j++)
       scanf("%f",&a[i][j]);
 average1(a,c);
 for(i=0;i<4;i++)
    printf("The average mark of person %d is %f\n",i,c[i]);
 mtrans(a,b);
 average2(b,d);
 for(j=0;j<5;j++)
    printf("The average mark of course %d is %f\n",j,d[j]);
 p=mtop(a);
 mtopprintf(a,p);
 getchar();
 getchar();
 getchar();

}

/*函数嵌套调用:用弦截法求根*/
#include<stdio.h>
#include<math.h>
float f(float x)
     {float y;
      y=x*x*x-5*x*x+16*x-80;
      return(y);}
float xpoint(float x1,float x2)
      {float z;
       z=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
       return(z);}
main()
{float f(float x);
 float xpoint(float x1,float x2);
 float x1,x2,x,y;
 do{scanf("%f%f",&x1,&x2);}
   while(f(x1)*f(x2)>=0);
 do{x=xpoint(x1,x2);
    y=f(x);
    if(y*f(x1)>0) x1=x;
    else x2=x;}
 while(fabs(y)>0.0000001);
 printf("The root is %f.\n",x);
 getchar();
 getchar();
 }

/*hanoi问题*/
#include<stdio.h>
void move(char x,char y)
       {printf("%c-->%c\n",x,y);}
void hanoi(int n,char a,char b,char c)
      {if(n==1) move(a,c);
       else {hanoi(n-1,a,c,b);move(a,c);hanoi(n-1,b,a,c);}}
void main()
{int n;
 void move(char x,char y);
 void hanoi(int n,char a,char b,char c);
 printf("please input the number:\n");
 scanf("%d",&n);
 printf("The steps is:\n");
 hanoi(n,'A','B','C');
 getchar();
 getchar();
 }

/*一元二次方程求根函数*/
#include<stdio.h>
#include<math.h>
float a,b,c,disc,x1,x2;
main()
{void root1();
 void root2();
 void root3();
 printf("please input a,b,c:");
 scanf("%f%f%f",&a,&b,&c);
 if(a==0)
   printf("detaerror\n");
 else{
      disc=b*b-4*a*c;
      if(disc>0) root1();
      else{if(disc==0) root2();
           else root3();}
      }
 getchar();
 getchar();
 getchar();
 }
void root1()
{x1=(-b+sqrt(disc))/(2*a);
 x2=(-b-sqrt(disc))/(2*a);
 printf("roots:  x1=%6f,x2=%6f",x1,x2);}
void root2()
{x1=x2=(-b)/(2*a);
 printf("roots:  x1=%6f,x2=%6f",x1,x2);}
void root3()
{float p,q;
 p=(-b)/(2*a);q=(sqrt(-disc))/(2*a);
 printf("roots:  x1=%6f+%6fi,x2=%6f-%6fi",p,q,p,q);}

/*寻找两个数的最小公倍数和最大公约数*/
#include<stdio.h>
main()
{int zdgy(int u,int v);
 int zxgb(int u,int v,int d);
 int u,v;
 printf("please input u&v:");
 scanf("%d%d",&u,&v);
 if(u<=0||v<=0) printf("detaerror\n");
 else printf("(u,v)=%d   [u,v]=%d",zdgy(u,v),zxgb(u,v,zdgy(u,v)));
 getchar();
 getchar();
 getchar();
 }
int zdgy(int u,int v)
{int i,t,r;
 if(u<v) {t=v;v=u;u=t;}
 for(i=1;(r=u%v)!=0;i++)
    {u=v;v=r;}
 return(v);}
int zxgb(int u,int v,int d)
{return(u*v/d);}

/*给出年月日求是着一年的第几天*/
#include<stdio.h>
main()
{int count(int month,int day);
 int leap(int year);
 int year,month,day,days;
 printf("please input the date:");
 scanf("%d%d%d",&year,&month,&day);
 days=count(month,day);
 if(leap(year)&&month>2) days+=1;
 printf("%d.%d.%d is the %dth day of the year\n",year,month,day,days);
 getchar();
 getchar();}
int count(int month,int day)
{int i,z;int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 z=day;
 for(i=0;i<month-1;i++) z+=a[i];
 return(z);}
int leap(int year)
{int y=0;
 if(year%4==0&&year%100!=0||year%400==0) y=1;
 return(y);}

/*202页8.7双线结构*/
#include<stdio.h>
main()
{char c[50],d[50];
 void copy(char c[],char d[]);
 printf("please input string:");
 gets(c);
 copy(c,d);
 printf("the result is ");
 puts(d);
 getchar();
 getchar();
 getchar();}
void copy(char c[],char d[])
{int i,j=0;
 for(i=0;c[i]!='\0';i++)
    if(c[i]=='a'||c[i]=='e'||c[i]=='i'||c[i]=='o'||c[i]=='u'
       ||c[i]=='A'||c[i]=='E'||c[i]=='I'||c[i]=='O'||c[i]=='U')
       {d[j]=c[i];j++;}
 d[j]='\0';}

/*string反序存放:换序方法*/
#include<stdio.h>
#include<string.h>
main()
{void change(char c[]);
 char c[20];
 printf("please input the string:");
 gets(c);
 change(c);
 printf("the changed string is ");
 puts(c);
 getchar();
 getchar();
 getchar();}
void change(char c[])
{
 int i,s;char t;
 s=strlen(c);
 for(i=s-1;i>=s/2;i--)
    {t=c[i];c[i]=c[s-1-i];c[s-1-i]=t;}
 }

/*职工信息表*/
#include<stdio.h>
#include<string.h>
#define N 10
void inputall(char a[][N],char b[][N],char c[][N],int n)
{int i;
 for(i=0;i<n;i++)
   {printf("please input name,worknumber and phonenumber\n");
    gets(a[i]);gets(b[i]);gets(c[i]);}}
void output(char c[][N],int n)
{int i;
 for(i=0;i<n;i++) printf("%8s ",c[i]);}
void outputall(char a[][N],char b[][N],char c[][N],int m)
{printf("    name  : ");output(a,m);printf("\n");
 printf("worknumber : ");output(b,m);printf("\n");
 printf("phonenumber: ");output(c,m); printf("\n");}
void sort(char c[][N],char c1[][N],char c2[][N],int n)
{int i,j;
 char a[N],a1[N],a2[N];
 for(i=0;i<n-1;i++)
    for(j=0;j<n-i-1;j++)
       if(strcmp(c[j],c[j+1])>0)
          {strcpy(a,c[j]);strcpy(c[j],c[j+1]);strcpy(c[j+1],a);
           strcpy(a1,c1[j]);strcpy(c1[j],c1[j+1]);strcpy(c1[j+1],a1);
           strcpy(a2,c2[j]);strcpy(c2[j],c2[j+1]);strcpy(c2[j+1],a2);}
 }
void search(char t[N],char c[][N],char c1[][N],char c2[][N],int n)
{int i;
 for(i=0;i<n;i++)
    if(strcmp(t,c[i])==0)
       printf("%s  %s  %s\n",c[i],c1[i],c2[i]);
 }
main()
{int i,j;
 char d[N],e[N],f[N];
 char name[5][N],worknumber[5][N],phonenumber[5][N];
 inputall(name,worknumber,phonenumber,5);
 outputall(name,worknumber,phonenumber,5);
 /*按职工名字排序,同时电话号、职工号随之调整*/
 printf("sorted in name:\n");
 sort(name,worknumber,phonenumber,5);
 outputall(name,worknumber,phonenumber,5);
 /*按职工号排序,同时电话号、职工名字随之调整*/
 printf("sorted in worknumber:\n");
 sort(worknumber,name,phonenumber,5);
 outputall(name,worknumber,phonenumber,5);
 /*输入职工名字查找电话号、职工号*/
 printf("please input the name\n");
 gets(d);
 search(d,name,worknumber,phonenumber,5);
 /*输入职工号查找电话号、职工名字*/
 printf("please input the worknumber\n");
 gets(d);
 search(d,worknumber,name,phonenumber,5);
 /*输入电话号查找职工名字、职工号*/
 printf("please input the phonenumber\n");
 gets(d);
 search(d,phonenumber,worknumber,name,5);
 getchar();
 getchar();
 getchar();
 getchar();
 }



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -