第四次作业

1.编写程序,输入一个整数x,按照下式输出对应的y值。

      

# include <stdio.h>
int main ()
{
    int saber,lancer,sum=0;
    printf("输入整数
");
    scanf("%d",&a);
        if(saber<=0)
    {
        printf("输入错误
");
     } 
    if (saber%2==0)
    {
        
        for(lancer=2;lancer<=saber;lancer=lancer+2)
        {
            sum=sum+lancer;
        }
        {
          printf("输出为%d
",sum);
        }
        
    }
    else if(saber%2!=0)
     {
        for(lancer=1;lancer<=saber;lancer=lancer+2)
        {
            sum=sum+lancer;
        }
        {
            printf("输出为%lancer
",sum); 
        }
    }
    return 0;
}

 注:声明变量的值,

2.编程求11/2+1/31/4+1/5-  +1/991/100,结果保留两位小数。

# include <stdio.h>
int main()
{
    int saber;
    float lancer,sum=0;
    for (saber=1;saber<=100;saber++)
    {
        if (saber%2!=0)
        {
            lancer=1/(float)saber;
        }
        else 
        {
            lancer=-1/(float)saber;
        }
        sum=sum+lancer;
    }
        printf("和为%.2f",sum);
        return 0;
}

 注:分母不能为零,for循环后加大括号;

3.输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。

# include<stdio.h>
int main()
{
    int saber,lancer=0;
    for (saber=1900;saber<=3000;saber++)
    {
        if((saber%4==0&&saber%100!=0)||(saber%400==0))
        {
           {
               printf(" %d",saber);
               lancer++;
           }
        
        if(lancer%10==0)
          {
               printf("
");
          }
        }
    }
        printf("
");
         printf("共有%d",lancer);
    return 0;
 } 

注意:十个一换行,在判断年之后并且最好嵌套在一起;

4.输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。

 

 注意:整形和实数的区别,加分号,

#include <stdio.h>
int main()
{ 
     int a,b,d; 
     float c,sum,sun=1.0;
     printf("输入一个实数一个整数
");
     scanf("%f%d",&c,&a);
    if(a==0&&c!=0)
    {
        printf("输出为1
");
    }
    else if(c==0&&(a!=0||a==0))
    {
            printf("输出为0
");
    }
    else if(a>0)
    {
       
     for (b=1,sum=1.0;b<=a;b++)
     {
     
         sum=sum*c; 
      } 
       printf ("输出为%f
",sum);      
    }
   else if(a<0)
     {
       d=-1*a;
      for (b=1;b<=d;b++)
       {
           sun=(sun*c); 
       } 
          sum=1/sun; 
          printf ("输出为%f
",sum);     
     }
     return 0;
}  

5.输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。

# include<stdio.h>
int main()
{
    int caster=0,lancer=0,archer=0,rider=0;
    char saber;
    printf("输入一串字符判断
");
    while(1)
    {
        
        scanf("%c",&saber);
    if ((saber>='A'&&saber<='Z')||(saber>='a'&&saber<='z'))
    {
        caster++;
    }
    else if(saber>='0'&&saber<='9')
    {
        lancer++;
     } 
     else if(saber==' ')
     {
         archer++;
     }
     else if(saber!='
')
     {
         rider++;
     }
     if(saber=='
')
     {
         break;
     }
    }
    printf("字母有%d个,数字有%d个,空格有%d个,其他有%d个
",caster,lancer,archer,rider);
    return 0;
}

 注:在字符型中回车也是字符,在字符A与z间有其他字符;

6.输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值,

# include <stdio.h>
int main ()
{
    int saber,archer=0,Lancer=0,caster=0,rider=0;
    float sum,sun;
    while (1)
    {
        printf("输入
");
        scanf("%d",&saber);
        if(saber/1>0)
        {
            archer=archer+saber;
            ++rider;
            }
            else if(saber/1<0)
            {
                caster=caster+saber;
                ++Lancer;
                }
                if(saber==0)
                break;
        }
        if(rider==0)
        {
                 rider=1;
         }
        if(Lancer==0)
        {
                 Lancer=1;
        }
        sum=(float)archer/rider;
        sun=(float)caster/Lancer;
        printf("正数平均%f负数平均%f",sum,sun);
        return 0;
}

 注:分母不能为零,运行注意结束加break;

7.输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)

# include <stdio.h>
int main()
{
    int saber,archer,lancer=0,flag;
    for (saber=2;saber<=1000;saber++)
      {
        flag=0;
          for(archer=2;archer<=saber-1;archer++)
          {
              if (saber%archer==0)
              {
                  flag=1;
                  break; 
              }
        }
              if (flag==0)
                {    
                  {
                       printf (" %03d",saber);
                       lancer++;
                    }
                   if (lancer%10==0)
                     {
                      printf("
");
                   }
                }
              
      }
                   printf("
");    
                 printf("一共有%d",lancer);
                    return 0;
        }
    

 注:数字对齐可以在d前面补0;在嵌套循环时注意声明变量的位置;

8.打印下列图形

# include <stdio.h>
int main()
{
    int saber,archer,lancer,caster;
    for(saber=1;saber<=5;saber++)
    {
        for(archer=1;archer<=saber;archer++)
            {
               printf(" ");
            }    
        for(archer=1,lancer=10;archer<=lancer-2*saber+1;archer++)
        {
            printf("*");
        }
        printf ("
") ; 
    }
    return 0;
}

 注:寻找规律,注意对齐;

     知识点总结:

1.  for循环为for(表达式1;表达式2;表达式3)表达式中用逗号分开,while与for相似只是while后只有表达式2其他两个分别在其内外,而do....while中while后必须加入分号

for适合已知的循环就是知道循环执行的次数,而while与do....while适合不只带次数的循环,三种循环必须注意都要声明变量,

2.    break为跳出此循环,continue为不执行此次循环,

3.   累加型初始值为0,累乘和累除初始值为1;

实验总结:

遇到无法输出时寻找输出变量是否正确,注意变通,在分母为零时在最后更改变量的值,

在字符型中有时忘记在%c前加入空格,字符型为单引号;

原文地址:https://www.cnblogs.com/saber114567/p/5998007.html