零韵苍虬吧 关注:38贴子:774

【零韵】C语言程序设计题复习专用汇总贴

只看楼主收藏回复

没办法,再这样下去肯定药丸,大家一起复习一下吧


IP属地:浙江1楼2015-11-25 14:07回复
    冒泡法排序
    #include<stdio.h>
    #define N 8
    int main()
    {
    double a[N],t;
    int i,j;
    printf("input %d number:\n",N);
    for(i=0;i<N;i++)
    scanf("%lf",&a[i]);
    for(i=0;i<N-i-1;i++)
    for(j=0;j<N-i-1;j++)
    if(a[j]>a[j+1]){
    t=a[j];
    a[j]=a[j+1];
    a[j+1]=t;
    }
    printf("the sorted numbers:\n");
    for(i=0;i<N;i++)
    printf("%8.2f",a[i]);
    return 0;
    }


    IP属地:浙江2楼2015-11-25 14:08
    回复
      2025-05-20 18:42:32
      广告
      选择法排序
      #define N 8
      #include<stdio.h>
      int main()
      {
      double a[N],t;
      int i,j,k;
      printf("input %d number:\n",N);
      for(i=0;i<N;i++)
      scanf("%lf",&a[i]);
      for(i=0;i<N-1;i++){
      k=1;
      for(j=i+1;j<N;j++)
      if(a[j]<a[k]) k=j;
      t=a[k];
      a[k]=a[i];
      a[i]=t;
      }
      printf("After sorted:\n");
      for(i=0;i<N;i++)
      printf("%.2f",a[i]);
      printf("\n");
      return 0;
      }


      IP属地:浙江3楼2015-11-25 14:08
      回复
        绝对值排序
        题目描述
        输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。
        输入描述
        每组输入数据的第一个数字为n,接着是n个整数。
        输出描述
        对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。
        输入样例
        3 3 -4 2
        输出样例
        -4 3 2
        ---------------------------
        #include <stdio.h>
        #include <math.h>
        void main()
        {
        int a[100], t;
        int i,j,n;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        scanf("%d",&a[i]);
        for(i=0;i<n-1;i++)
        for(j=0;j<n-1-i;j++)
        if(fabs(a[j])<fabs(a[j+1]))
        {
        t=a[j];a[j]=a[j+1];a[j+1]=t;}
        for(i=0;i<n;i++)
        printf("%d ",a[i]);
        }


        IP属地:浙江5楼2015-11-25 14:19
        回复
          求回文数的和
          题目描述
          求n~m之间所有“回文数”之和。要求编制函数 JSValue(x)用于判断x是否为回文数。回文数是指各位数字左右对称,例如11、121、676、909等等。(提示:在判断是否回文数时,可使用数组按顺序存放各位数字)。
          输入描述
          输入两个正整数n和m,且100<=n<=m<=999,中间用空格隔开 输出描述如果n和m之间有回文数,则输出回文数的和;如果没有,不输出
          输入样例
          100 150
          输出样例
          605
          ---------------------------------
          #include <stdio.h>
          #include <string.h>
          #include <stdlib.h>
          int fun(char *s)
          {
          int i=0,n;
          n=strlen(s);
          n--;
          while(n>i)
          {
          if(s[n]!=s[i])
          return 0;
          i++;
          n--;
          }
          return 1;
          }
          int main()
          {
          int i,m,n,sum=0;
          char a[10];
          scanf("%d%d",&n,&m);
          for(i=n;i<=m;i++)
          {
          itoa(i,a,10);
          if(fun(a))
          sum+=i;
          }
          if(sum!=0)
          printf("%d ",sum);
          return 0;
          }


          IP属地:浙江6楼2015-11-25 14:30
          收起回复
            输入三个数判断构成三角形
            #include<stdio.h>
            #include<math.h>
            int main()
            {
            double a,b,c,S=0,x=0;
            scanf("%lf %lf %lf",&a,&b,&c);
            if(a+b>c&&b+c>a&&a+c>b)
            {
            x=(a+b+c)/2.0;
            S=sqrt(x*(x-a)*(x-b)*(x-c));
            printf("%.3f\n",S);
            }
            else
            printf("不能构成三角形\n");
            return 0;
            }


            IP属地:浙江9楼2015-11-25 17:59
            收起回复
              输入n(n≤50)个职工的工资(单位为元,一元以下部分舍去),计算工资总额,计算给职工发放工资时,所需各种面额人民币的最小张数(分壹佰元、伍拾元、贰拾元、拾元、伍元、壹元6种)。
              题目描述
              输入n(n≤50)个职工的工资(单位为元,一元以下部分舍去),计算给职工发放工资时,所需各种面额人民币的最小张数(分壹佰元、伍拾元、贰拾元、拾元、伍元、壹元6种)。
              输入描述
              输入职工人数n(n≤50)及其工资
              输出描述
              计算工资总额,并统计所需各种面额人民币的最小张数(分壹佰元、伍拾元、贰拾元、拾元、伍元、壹元6种)
              输入样例
              5
              2345 3245 4325 3154 5324
              输出样例
              壹佰元、伍拾元、贰拾元、拾元、伍元、壹元分别为:
              182
              1
              6
              0
              3
              8
              -----------------------------------------------------
              #include<stdio.h>
              void main()
              {
              int a[50],b[6]={0},c[6];
              int n,i,j,s=0;
              while(scanf("%d",&n),n>50);
              for(i=0;i<n;i++)
              {
              scanf("%d",&a[i]);
              s+=a[i];
              }
              for(i=0;i<n;i++)
              {
              c[0]=a[i]/100;
              c[1]=(a[i]-c[0]*100)/50;
              c[2]=(a[i]-c[0]*100-c[1]*50)/20;
              c[3]=(a[i]-c[0]*100-c[1]*50-c[2]*20)/10;
              c[4]=(a[i]-c[0]*100-c[1]*50-c[2]*20-c[3]*10)/5;
              c[5]=a[i]-c[0]*100-c[1]*50-c[2]*20-c[3]*10-c[4]*5;
              for(j=0;j<6;j++) b[j]+=c[j];
              }
              printf("壹佰元、伍拾元、贰拾元、拾元、伍元、壹元分别为:\n");
              for(j=0;j<6;j++)
              printf("%d\n",b[j]);
              }


              IP属地:浙江11楼2015-12-02 15:46
              收起回复
                第几天?
                题目描述
                给定一个日期,输出这个日期是该年的第几天。
                输入描述
                输入数据的数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
                输出描述
                对于每组输入数据,输出一行,表示该日期是该年的第几天。
                输入样例
                1985/1/20
                输出样例
                20
                -----------------------------------------------
                #include<stdio.h>
                int main()
                {
                int year, mon, day, isLeap, i, count;
                int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
                scanf("%d/%d/%d", &year, &mon, &day);
                if ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0) )
                isLeap = 1;
                else isLeap = 0;
                count = 0;
                month[2] = month[2] + isLeap;
                for (i = 1; i < mon; i++){
                count += month[i];
                }
                count += day;
                printf("%d",count);
                return 0;
                }


                IP属地:浙江12楼2015-12-09 14:31
                回复
                  2025-05-20 18:36:32
                  广告
                  多项式的描述如下:
                  1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
                  现在请你求出该多项式的前n项的和。
                  #include <stdio.h>
                  int main()
                  {
                  int n,i;
                  double sum=0,k;
                  scanf("%d",&n);
                  for(i=1;i<=n;i++)
                  {if(i%2==0)
                  k=-1.0/i;
                  else if(i%2!=0)
                  k=1.0/i;
                  sum+=k;
                  }
                  printf("%1.2f",sum);
                  return 0;
                  }


                  14楼2015-12-09 14:59
                  回复
                    #include <stdio.h>
                    int main()
                    {
                    double sum=0;
                    int i;
                    for(i=1;i<=1000;i++)
                    sum+=1.0/i;
                    printf("%f",sum);
                    return 0;
                    }
                    #include <stdio.h>
                    #include <math.h>
                    int main()
                    {
                    double jc=1,sinx,eps,a;
                    int x,j,n;
                    scanf("%d%lf",&x,&eps);
                    sinx=x;
                    for(n=1;;n++)
                    {
                    for(j=1;j<=2*n+1;j++)
                    jc*=j;
                    a=pow(x,2*n+1)/jc;
                    sinx+=pow(-1,n)*a;
                    jc=1;
                    if(a<eps)
                    break;
                    }
                    printf("%f",sinx);
                    return 0;
                    }
                    #include <stdio.h>
                    int main()
                    {
                    int num,a,sum=0;
                    scanf("%d",&num);
                    a=2*num;
                    if(num>=0)
                    {
                    for(;num<=a;num++)
                    sum+=num;
                    }
                    if(num<0)
                    {
                    for(;num<=a;num--)
                    sum+=num;
                    }
                    printf("%d",sum);
                    return 0;
                    }


                    16楼2016-01-13 14:54
                    回复
                      #include <stdio.h>
                      #include <math.h>
                      int is(int n)
                      {
                      int i,m;
                      if(n==1) return 0;
                      m=sqrt(n);
                      for(i=2;i<=m;i++)
                      if(n%i==0) return 0;
                      return 1;
                      }
                      void main()
                      {
                      int x=6,j=0,k=0;
                      for(x=6;x<100;x=x+2){
                      for(j=2;j<100;j++){
                      for(k=2;k<100;k++){
                      if(j+k==x&&is(j)==1&&is(k)==1&&j<=k)
                      printf("%d=%d+%d\n",x,j,k);
                      }
                      }
                      }
                      }


                      IP属地:浙江17楼2016-01-13 16:43
                      回复
                        #include <stdio.h>
                        #include <math.h>
                        int is(int n)
                        {
                        int i,m;
                        if(n==1) return 0;
                        m=sqrt(n);
                        for(i=2;i<=m;i++)
                        if(n%i==0) return 0;
                        return 1;
                        }
                        void main()
                        {
                        int x=6,j=0,k=0;
                        for(x=6;x<100;x=x+2){
                        for(j=2;j<100;j++){
                        for(k=2;k<100;k++){
                        if(j+k==x&&is(j)==1&&is(k)==1&&j<=k)
                        printf("%d=%d+%d\n",x,j,k);
                        }
                        }
                        }
                        }


                        IP属地:浙江18楼2016-01-13 17:29
                        回复
                          #include<stdio.h>
                          #include<math.h>
                          int CNM(int a,int b){
                          int t,i;
                          for(i=2;i<(a>b?b:a);i++)
                          if(a%i==0&&b%i==0)
                          t=i;
                          return t;
                          }
                          int CND(int a,int b){
                          int i,r=1;
                          for(i=2;i<(a>b?b:a);i++)
                          if(a%i==0&&b%i==0)
                          r*=i;
                          return r;
                          }
                          void main()
                          {
                          int k,j;
                          scanf("%d %d",&k,&j);
                          printf("%d\t",CNM(k,j));
                          printf("%d",CND(k,j));
                          }


                          IP属地:浙江19楼2016-01-13 17:53
                          收起回复
                            #include<stdio.h>
                            #include<math.h>
                            double D1(double a,double b, double c){
                            double x1,x2;
                            x1=((-b)/(2*a));
                            x2=x1;
                            printf("x1=x2=%.2f",x1);
                            return 0;
                            }
                            double D2(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=%.2f x2=%.2f",x1,x2);
                            return 0;
                            }
                            double D3(double a,double b, double c){
                            printf("该方程无解!");
                            return 0;
                            }
                            void main(){
                            double a,b,c;
                            scanf("%lf %lf %lf",&a,&b,&c);
                            if(b*b-4*a*c==0) D1(a,b,c);
                            else if(b*b-4*a*c<0) D3(a,b,c);
                            else D2(a,b,c);
                            }


                            IP属地:浙江20楼2016-01-13 21:53
                            回复
                              2025-05-20 18:30:32
                              广告
                              #include<stdio.h>
                              int ti(int a){
                              int h,m,s;
                              h=a/3600;
                              m=(a-h*60)/60;
                              s=a-h*3600-m*60;
                              printf("%d:%d:%d",h,m,s);
                              return 0;
                              }
                              void main(){
                              int a;
                              scanf("%d",&a);
                              ti(a);
                              }


                              IP属地:浙江21楼2016-01-13 21:59
                              回复