您的位置:首页 > 编程语言 > C语言/C++

C语言经典算法(1-10)

2017-07-26 09:15 405 查看
编程序

1.    编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。

#include <stdio.h>

double fact(int k)

{    double t=1;

     int i;

     for(i=1;i<=k;i++)

        t*=i;

     return t;

}

void main()

{   int i,n;

    double s=0;

    scanf(“%d”,&n);

    for(i=1;i<=n;i++)

       s+=1/fact(i);

    printf(“%f\n”,s);

}

2.    输入一个x,输出下面分段函数f(x)的值。要求将分段函数的计算定义成函数。

      

#include <stdio.h>

int f(double x)   // 函数定义

{    int y=0;

     if(x>0)

    y=1;

else if(x==0)

    y=0;

else

    y=-1;

     return y;

}

void main()

{    double x;

     int y;

     scanf(“%lf”,&x);

     y=f(x); // 函数调用

      printf("f(%g)=%d\n",x,y);

}

3.    输入一个正整数,输出该数的各个数字之和。要求编写函数,计算整数的各个数字之和。

#include <stdio.h>

int sum(int a)   

{   int s=0;

    while(a!=0){

  s+=a%10;

  a=a/10;

}

   return s;

}

void main()

{   int x;

    scanf(“%d”,&x);

    printf("%d\n",sum(x));

}

4.    输入两个正整数a和n,求a+aa+aaa+……+aa…a(最后一项为n个a)之和。例如输入2和3,输出246(即2+22+222)。要求定义并调用函数f(a,n),它的功能是返回aa…a(n个a)。例如f(2,3)返回222。

  #include <stdio.h>

  int f(int a,int n)

  {   int s=0;  

      for(;n>0;n--)

          s=s*10+a;  // s+=pow(10,n-1)*a;

      return s;

   }

  void main()

  {   int a,n,sum=0,i;

       printf(“input a n:\n”);

       scanf(“%d%d”,&a,&n);

      for(i=1;i<=n;i++)

           sum+=f(a,i);

       printf(“%d\n”,sum);

}

5.    输入三个数,输出它们的最小值。要求定义一个函数,返回两个数的最小值。

         #include <stdio.h>

double min(double x,double y)   

{    if(x<y)

     return x;

else

        return y;

}

void main()

{    double x,y,z,t;

     scanf(“%lf%lf%lf”,&x,&y,&z);

     t=min(x,y);

     t=min(t,z);

     printf("min:%f\n",t);

}

6.    在主函数中输入字符c和m,调用函数prn,连续将字符c输出m次。定义函数prn,完成连续将某个字符c输出m次后换行。

#include <stdio.h>

void prn(char,int);  // 函数声明

void main()

{    char c;

     int m;

     printf(“Input c m:\n”);

scanf(“%c%d”,&c,&m);

     prn(c,m);

}

void prn(char c,int m)   

{    int i;

     for(i=1;i<=m;i++)

        putchar(c);

     printf(“\n”);

}

7.    输入一个整数n,计算3.2n的值。要求定义函数计算xn 值。

#include <stdio.h>

double fact(double x,int n);  

void main()

{    double x,y;

     int n;

     printf(“Input x n:\n”);

scanf(“%lf%d”,&x,&n);

     y=fact(x,n);

     printf(“%f\n”,y);

}

double fact(double x,int n)   

{    int i;

     double t=1;

     for(i=1;i<=n;i++)

    t=t*x;

     return t;

}

8.    输入平面上p1(x1,x2)、p2(x2,y2)两点坐标,计算两点间的距离输出。要求定义一个函数计算平面上两点间的距离。

#include <stdio.h>

#include <math.h>

double f(double,double,double,double);  

void main()

{    double x1,x2,y1,y2,d;

     printf(“Input (x1,y1),(x2,y2):\n”);

scanf(“(%lf,%lf),(%lf,%lf)”,&x1,&y1,&x2,&y2);

     d=f(x1,y1,x2,y2);

     printf(“%f\n”,d);

}

double f(double x1,double y1,double x2,double y2)   

{    double d;

     d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

     return d;

}

9.    输出一张摄氏温度——华氏温度转换表。摄氏温度取[-100℃ ~150℃ ],温度间隔5℃ ,要求定义函数ctof(c),将摄氏温度转换为华氏温度,转换公式:F=32+C*9/5

#include <stdio.h>

void main()

{  float c,f, ctof(float); int i;

   for(i=0,c=-100;c<=150;c+=5)

   {  f=ctof(c);

      printf("%6.0f  %-6.0f",c,f);

      i++;

      if(i%5==0) printf("\n");

    }

}

float ctof(float c)

{   float f;

     f=32+c*9/5;

     return f;

}

10.    求11~999之间所有“回文数”之和。要求编制函数 JSValue(m)用于判断m是否为回文数。回文数是指各位数字左右对称,例如11、121、676、909等等。

#include <stdio.h>

int JSValue(int m)

{    int a=0,b;

     b=m;

while(b!=0){

        a=a*10+b%10;  

        b=b/10;

     }

     if(a==m) return 1;

     else return 0;

}

void main()

{   int s=0,i;

    for(i=11;i<=999;i++)

       if(JSValue(i)==1) s+=i;

    printf(“%d\n”,s);

}

11.    输入100个学生的数学课程成绩,计算平均分,并统计成绩在平均分数正负10%区间的学生的人数。

#include <stdio.h>

void main()

{   int a[100],i,k=0;

    float sum=0,aver;

    for(i=0;i<100;i++)

    {  scanf(“%d”,&a[i]);

       sum+=a[i];

    }

    aver=sum/100;

for(i=0;i<100;i++)

   if(0.9*aver<=a[i]&&a[i]<=1.1*aver)  // 当前成绩在平均分数正负10%区间

       k++;

  printf(“%f,%d\n”,aver,k);

}  

12.    输入两个正整数m和n(m<n),求从m到n之间(包括m和n)所有素数的和。要求定义并调用函数isprime(x)来判断x是否是素数。

#include <stdio.h>

int isprime(int x)

{   int i;

for(i=2;i<x;i++)

   if(x%i==0) return 0;

return 1;

}

void main()

{   int m,n,s=0,k;

    scanf(“%d%d”,&m,&n);

    for(k=m;k<=n;k++)

        if(isprime(k)==1) s+=k;

printf(“%d\n”,s);

}  

13.    输入一个字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数(例如:输入morning回车,再输入n,输出2)。

#include <stdio.h>

main()

{    char s[80],c;

     int i,k=0;

     printf("输入字符串:\n");

     gets(s);

     printf("输入字符:\n");

     c=getchar();

     for(i=0;s[i]!='\0';i++)

        if(s[i]==c) k++;

     printf("%s中包含%d个%c\n",s,k,c);

}

14.    输入10组数,每组数3个数,输出每组数的最大值。要求定义并调用函数max(x,y,z)求x、y、z的最大值。

#include <stdio.h>

double max(double x,double y,double z)

{   double m;

    m=x;

if(m<y) m=y;

if(m<z) m=z;

return m;

}

void main()

{   double x,y,z,i;

    for(i=1;i<=10;i++){

        scanf(“%lf%lf%lf”,&x,&y,&z);

        printf(“%f\n”,max(x,y,z));

    }

}  

15.    输入一个字符串,统计其中数字字符出现的次数。

    #include <stdio.h>

    void main()

      {    char s[80];

            int i,n=0;

            gets(s);

            for(i=0;s[i]!='\0';i++)

                 if(s[i]>='0'&&s[i]<='9')

                      n++;

             printf("%s中包含%d个字符\n",s,n);

      }

16.    将一个大小为10的数组b的值按逆序重新存放(数组的值由键盘任意输入,不使用辅助数组)。

    #include <stdio.h>

    void main()

      {    double a[10],t;

            int i,j;

            for(i=0;i<10;i++)

                 scanf("%lf",&a[i]);

            for(i=0,j=9;i<j;i++,j--)

            {   t=a[i];a[i]=a[j];a[j]=t;}

            for(i=0;i<10;i++)

                 printf("%8.2f",a[i]);

      }

17.    计算5×5数组周边元素的和。

    #include <stdio.h>

    void main()

      {    double a[5][5],sum=0;

            int i,j;

            for(i=0;i<5;i++)

         for(j=0;j<5;j++)

             scanf("%lf",&a[i][j]);

      for(i=0;i<5;i+=4)    

         for(j=0;j<5;j++)

              sum+=a[i][j];  // 第1、最后两行元素和

for(i=1;i<4;i++)    

         for(j=0;j<5;j+=4)

              sum+=a[i][j];  // 最左、右两列(不包括角上)元素和

      printf("%8.2f\n",sum);

  }

18.    输入一5行、5列的数组,将数组的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后以行列对齐格式输出数组内容。

#include <stdio.h>

void main()

{    float a[5][5],t;

int i,j;

for(i=0;i<5;i++)

       for(j=0;j<5;j++)

           scanf("%f",&a[i][j]);

for(i=0;i<5;i++)

{    t=a[i][i];           // {  for(j=0;j<5;j++)

for(j=0;j<5;j++)     // if(i!=j) a[i][j]=a[i][j]/a[i][j];

            a[i][j]=a[i][j]/t;   // a[i][i]=1; }

}             

for(i=0;i<5;i++)

         {  for(j=0;j<5;j++)

                  printf("%8.2f",a[i][j]);

             printf("\n");

   }

}

19.    输入一个字符串(字符个数少于80),判断是否为回文?若是输出YES,否则输出NO。

    解一:

    #include <stdio.h>

    void main()

      {    char s[80];

            int i,j;

            gets(s);

            for(j=0;s[j]!='\0';j++); // 求字符串长度

            for(i=0,j--;i<j;i++,j--)

                if(s[i]!=s[j])

                 {    printf("NO\n"); break; }

            if(i>=j)

                 printf("YES\n");

      }

解二:

    #include <stdio.h>

    void main()

      {    char s[80];

            int i,j,flag=1;

            gets(s);

            for(j=0;s[j]!='\0';j++);

            for(i=0,j--;i<j;i++,j--)

                if(s[i]!=s[j])  flag=0;

            if(flag==1)  printf("YES\n");

            else   printf("NO\n");

      }

20.    编写函数fun,返回一个数组(10个数)中除最大值和最小值以外的平均值。

    #include <stdio.h>

    double fun(double a[ ],int n)

    {     double sum=0,max,min;

           int i;

           max=min=a[0];

           for(i=0;i<n;i++)

           {      if(max<a[i]) max=a[i];

                   else if(min>a[i]) min=a[i];

                   sum+=a[i]; }

            return (sum-max-min)/(n-2);

     }

      void main()

      {    double b[10],v;

            int i;

            for(i=0;i<10;i++)

                scanf("%lf",&b[i]);

            v=fun(b,10);

            printf("average:%.2f\n",v);

      }

21.    在主函数中输入一个正整数x,编写函数f1,它的功能是:求出能整除x且不是偶数的各正整数,并放在数组a中,这些除数的个数返回给主函数。在主函数中输出各除数。

    #include <stdio.h>

    int f1(int a[ ],int x)

    {     int j,n=0;

           for(j=1;j<=x/2;j+=2)

                if(x%j==0)

                {   a
=j;

                     n++;

                 }

            return n;

     }

      void main()

      {    int a[20],i,n,x;

            scanf("%d",&x);

            n=f1(a,x);

            for(i=0;i<n;i++)

                printf("%5d",a[i]);

            printf("\n");

      }

22.    在主函数中输入6行、6列的数组和变量m的值,编写函数f2,该函数的功能是:将数组左下半三角元素中的值乘以m。在主函数中以行列对齐格式输出该数组。

    #include <stdio.h>

    void f2(int a[ ][6],int m)

    {     int i,j;

           for(i=0;i<6;i++)

                for(j=0;j<=i;j++)

                    a[i][j]*=m;

     }

      void main()

      {    int a[6][6],i,j,m;

            for(i=0;i<6;i++)

             for(j=0;j<6;j++)

                    scanf("%d",&a[i][j]);

            printf("Input m:"); scanf("%d",&m);

            f2(a,m); // 调用函数

            for(i=0;i<6;i++) {

             for(j=0;j<6;j++) printf("%5d",a[i][j]);

                printf("\n");

            }

      }

23.    编写一个函数f3,它的功能是:实现两个字符串的连接。

    #include <stdio.h>

    void main()

    {    char s1[100],s2[40];

          void f3(char s1[ ],char s2[ ]);

          gets(s1);

          gets(s2);

          f3(s1,s2);

          puts(s1);

      }

    void f3(char s1[ ],char s2[ ])

    {     int i,j;

           for(i=0;s1[i]!='\0';i++); // 找s1 中字符串结束位置

           for(j=0;s2[j]!='\0';j++,i++)

                    s1[i]=s2[j];  // 将s2 中字符串连接到s1后

           s1[i]='\0'; // 连接后加结束标志

           return ;

     }

24.    在数组x的10个数中求平均值v,找出与v相差最小的数组元素。

#include <stdio.h>

#include <math.h>

void main()

{  double x[10],v,d;

   int i;

   for(i=0,v=0;i<10;i++)

   {  scanf("%lf",&x[i]);

      v+=x[i];  }

   v=v/10;

   d=x[0];

   for(i=1;i<10;i++)

      if(fabs(d-v)>fabs(x[i]-v))

            d=x[i];

   printf("平均值:%-8.2f,与平均值最近元素:%-8.2f\n",v,d);

}

25.    输入n(n≤20)个数放在一维数组中,找出其中最小的数,将它与数组最前面的数交换后输出这些数。

 #include <stdio.h>

 void main()

 {     int i,k,temp,n,a[20];

      printf("Input n:\n");

      scanf("%d",&n);

      for(i=0;i<n;i++)

           scanf("%d",&a[i]);

      for(k=0,i=1;i<n;i++)

           if(a[i]<a[k]) k=i;

      temp=a[0];a[0]=a[k];a[k]=temp;

      for(i=0;i<n;i++)   printf("%d  ",a[i]);

}

26.    有n(n≤20)个数,已按从小到大顺序排列好,要求输入一个数,把它插到数列中,使数列仍有序,并输出新的数列。

#include <stdio.h>

void main()

{     int i,n,a[21],x;

      printf("Input n≤20 :"); scanf("%d",&n);

      printf("Input %d numbers:\n",n);

      for(i=0;i<n;i++) scanf("%d",&a[i]);

      printf("Input x:"); scanf("%d",&x);

      for(i=n-1;i>=0;i--)

           if(a[i]>x) a[i+1]=a[i];

           else break;

      a[i+1]=x;

      for(i=0;i<n+1;i++) printf("%-6d",a[i]);

}

27.    输入一个5行、6列的数组,找出该数组中绝对值最大的元素、输出该元素及其两个下标值。

    #include <stdio.h>

    #include <math.h>

    void main()

      {    int a[5][6],i,j,max,maxi,maxj;

           for(i=0;i<5;i++)

               for(j=0;j<6;j++) scanf("%d",&a[i][j]);

           max=abs(a[0][0]);maxi=maxj=0;  

           for(i=0;i<5;i++)

               for(j=0;j<6;j++)

                   if(abs(a[i][j])>max)

                   {    max=abs(a[i][j]); maxi=i; maxj=j; }

           printf("max: %d\n",a[maxi][maxj]);

           printf("row: %d    col: %d\n",maxi,maxj);

      }

28.    从键盘输入任意一个整数,统计该整数中出现的不同数字的个数。

#include <stdio.h>

 void main()

 {     int x,a[10]={0},i,n=0;

       printf("Input x:\n");

       scanf("%d",&x);

       while(x!=0)

       {     a[x%10]=1;

             x=x/10;       

        }

        for(i=0;i<10;i++)    

            n+=a[i];

        printf("%d\n",n);

}

29.    三角形面积公式为:

      其中  s=(a+b+c)/2

      a、b、c分别是三角形的三条边。请分别定义计算s和area的宏,写程序,在程序中用带实参的宏名来求面积。

#include <stdio.h>

#include <math.h>

#define s(a,b,c) (a+b+c)/2

#define area(a,b,c,s) sqrt(s*(s-a)*(s-b)*(s-c))

main()

{   double x,y,z,d,t;

    scanf(“%lf%lf%lf”,&x,&y,&z);

    if(x+y>z&&x+z>y&&y+z>x) {

d=s(x,y,z);

t=area(x,y,z,d);

printf(“area=%f\n”,t);

}

         else printf(“error!\n”);

}

30.    编程,输入一个正整数,将其转换成二进制数。

#include <stdio.h>

main()

{   int x,a[32],i,j;

     printf("Enter x:");

     scanf("%d",&x);

     for(i=0;x!=0;i++) {

         a[i]=x%2;

          x/=2;

      }

     for(j=i-1;j>=0;j--)

        printf("%d",a[j]);

     printf("\n");

 }

31.    输入一行字符,统计并输出其中英文字母、数字字符、空格和其他字符的个数。

#include <stdio.h>

void main()

{  char str[80];

       int zm,sz,kg,qt,i;

       zm=sz=kg=qt=0;

       gets(str);

       for(i=0;str[i]!='\0';i++)

           if(str[i]>='A'&&str[i]<='Z'|| str[i]>='a'&&str[i]<='z')zm++;

           else if(str[i]>='0'&&str[i]<='9') sz++;

           else if(str[i]==' ') kg++;

           else qt++;

        printf(" 字母=%d,数字=%d,空格=%d,其它=%d\n",zm,sz,kg,qt);

   }

32.    编制函数del_char,函数原型为 void del_char(char *a,char ch),函数的功能是删除a指向的字符串中的值为ch的字符。例如从字符串"AscADef" 中删除 'A' 后,字符串为"scDef"。

#include <stdio.h>

void del_char(char *a,char ch)

{   char *p;

    p=a;

    while(*a!=’\0’){

       if(*a!=ch)

       {   *p=*a; p++; }

       a++;

}

    *p=’\0’;

}

void main()

{  char s[80],ch;

       printf(“请输入字符串:”);

gets(s);

printf(“输入要删除字符:”);

ch=getchar();

        del_char(s,ch);

puts(s);

    }

33.    编制函数,其功能是在float类型1维数组中查找最大值、最小值并将它们返回到主函数输出。

#include <stdio.h>

void max_min(int *a,int n,int *max,int *min)

{   int *p;

    *max=*min=*a;

    for(p=a;p<a+n;p++){

        if(*p>*max) *max=*p;

        if(*p<*min) *min=*p;

    }

}

void main()

{  int a[10],i,max,min;   

for(i=0;i<10;i++)

   scanf(“%d”,a+i);

max_min(a,10,&max,&min);

printf(“max=%d,min=%d\n”,max,min);

    }

34.    输入10个数,按绝对值从小到大排序后输出。要求定义一个函数sort,完成绝对值从小到大排序。

    #include<stdio.h>

    #include<math.h>

    void sort(int *a,int n)

    {    int i,j,k,t;

          for(i=0;i<n-1;i++)

          {   k=i;

               for(j=i+1;j<n;j++)

                   if(fabs(*(a+j))<fabs(*(a+k))) k=j;

               t=*(a+i);*(a+i)=*(a+k);*(a+k)=t;

           }

    }

   void main()

    {  int a[10],i;

        for(i=0;i<10;i++)

            scanf("%d",a+i);

        sort(a,10);

        for(i=0;i<10;i++)

            printf("%d   ",*(a+i));

    }

35.    输入n和x,n和x分别表示对数组前n个元素赋初值为x。要求定义一个函数value,完成对一维整型数组的n个元素进行赋值,具体赋值x。

    #include<stdio.h>

    void value(double *a,int n,double x)

    {    int i;

          for(i=0;i<n;i++)

              *(a+i)=x;

     }

   void main()

    {  double a[10],x;

        int i,n;

        printf (“Input n x:\n");

        scanf("%d%lf",&n,&x);

        value(a,n,x);

        for(i=0;i<n;i++)

            printf("%8.2f",*(a+i));

    }

36.    定义一个函数,计算两个数的和与乘积。

    #include<stdio.h>

    void f(double x,double y,double *p,double *q)

    {       *p=x+y;

            *q=x*y;

     }

   void main()

    {  double a,b,add,mult;

        printf ("Input a b:\n");

        scanf("%lf%lf",&a,&b);

        f(a,b,&add,&mult);

        printf("add=%-8.2f mult=%-8.2f\n",add,mult);

    }

37.    定义一个函数,将一维数组中最大值及最小值交换位置。

    #include<stdio.h>

    void f(int *a,int n)

    {    int i,*p,*q,t;

          for(i=0,p=q=a;i<n;i++)

          {    if(*p<*(a+i)) p=a+i;

                if(*q>*(a+i)) q=a+i;

          }

          t=*p;*p=*q;*q=t;

    }

   void main()

    {  int a[10],i;

        for(i=0;i<10;i++)

            scanf("%d",a+i);

        f(a,10);

        for(i=0;i<10;i++)

            printf("%d   ",*(a+i));

}

38.    编写求字符串长度函数strlen,将字符串中小写字母转换成大写字母函数。

#include<stdio.h>

    int strlen(char *s)

    {    int i;

          for(i=0;*(s+i)!='\0';i++);

          return i;

    }

    void cov(char *s)

    {      for(;*s!='\0';s++)

                if(*s>='a'&&*s<='z') *s-=32;

    }

    void main()

    {  char a[100];

        gets(a);

        printf("strlen:%d\n",strlen(a));

        cov(a);

        puts(a);

    }

39.    编写函数void fun(int *a, int *n) ,它的功能是:求出1到100之内能被3或者7整除,但不能同时被3和7整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数。

    #include<stdio.h>

    void fun(int *a, int *n)

    {    int i,j;

          for(i=1,j=0;i<=100;i++)

               if((i%3==0||i%7==0)&&i%21!=0)

                {    a[j]=i;  j++;  }

           *n=j;

    }

    void main()

    {  int a[100],i,n;

        fun(a,&n);

        for(i=0;i<n;i++)

            printf("%d  ",*(a+i));

    }

40.    编程,检查一个5×5二维数组a是否对称(即:对所有i和j都有a[i][j]=a[j][i])。 若是输出YES,否则输出NO

    #include<stdio.h>

    void main()

    {  double a[5][5];

       int i,j;

       for(i=0;i<5;i++)

           for(j=0;j<5;j++)

               scanf("%lf",*(a+i)+j);

       for(i=0;i<5;i++)

           for(j=0;j<i;j++)

                if(*(*(a+i)+j)!=*(*(a+j)+i))

                {     printf("NO\n");

                       return;  

                }

       printf("YES\n");

    }

41.    定义函数int strdel(char *s),删除空格字符并返回空格个数。

   #include <stdio.h>

   #include <string.h>

   int strdel(char *s)

   {   int n=0;

       for(;*s!='\0';)

            if(*s==' ') {  

               strcpy(s,s+1);

n++;

}

else s++;

       return n;

}

   void main()

   {    char str[80];  int n;

         gets(str);

         n=strdel(str);

         printf("空格数:%d,删除空格后:%s\n",n,str);

}  

42.    编写函数void fun(char *s,int b[ ]),统计在s所指向字符串中26个英文字母(不区分大小写)各自出现的次数,并依次放在b所指的数组中,在主函数中输出各字母出现的次数。

   #include <stdio.h>

   void fun(char *s,int b[ ])

   {   char *p;

       for(p=s;*p!='\0';p++)

            if(*p>='a'&&*p<='z') b[*p-'a']++;

            else if(*p>='A'&&*p<='Z') b[*p-'A']++;

   }

   void main()

   {    char str[80];  int a[26]={0},i;

         gets(str);fun(str,a);

          for(i=0;i<26;i++)

          printf("%2c",'A'+i);

          printf("\n");

          for(i=0;i<26;i++) printf("%2d",a[i]);

printf("\n");

   }  

43.    函数int fact(char *s,char *t)的功能是:将形参s所指字符串中所有ASCII码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。

    #include <stdio.h>

    int fact(char *s,char *t)

    {  int n=0;

       for(;*s!='\0';s++)

            if(*s<97)  {    *t=*s; t++; n++; }

       *t='\0';

       return n;

   }

   void main()

   {    char s[80],t[80];

         gets(s);

         printf("<97:%d\n",fact(s,t));

         puts(t);

}

44.    编写程序,输入当天日期,要求输出明天日期(利用结构类型)。

#include <stdio.h>

void main()

{    int m[]={0,31,28,31,30,31,60,31,31,30,31,30,31};

     int leap;

     struct date {    int year,month,day;}d;

     printf(“year-month-day:”);

     scanf(“%d-%d-%d”,&d.year,&d.month,&d.day);

     if(d.year%4==0&&d.year%100!=0||d.year%400==0)

          m[2]=29;  // 闰年2月份有29天

     d.day++;

     if(d.day>m[d.month])

     {    d.day=1; d.month++;

          if(d.month>12)

          {    d.year++;  d.month=1; }

     }

     printf(“明天:%d-%d-%d\n”,d.year,d.month,d.day);

}

45.    将1000以内的奇数写入文件design1.dat中。

#include <stdio.h>

main()

{   int a;

    FILE *fp;

    fp=fopen(“design1.dat”,”w”);

    for(a=1;a<=1000;a++)

       if(a%2==1)  fprintf(fp,“%4d”,a);

    fclose(fp);

}

46.    求上题所建文件design1.dat中的数据和,在屏幕上输出结果。

#include <stdio.h>

main()

{   int a,sum=0;

    FILE *fp;

    fp=fopen(“design1.dat”,”r”);

    while(!feof(fp))

     {   fscanf(fp,“%d”,&a);

          sum+=a;

     }

    fclose(fp);

    printf(“sum=%d\n”,sum);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: