基于C语言的几道算法例题

来源:互联网 发布:网络教育可以考研吗 编辑:程序博客网 时间:2024/06/06 13:10

1.   题目:通过编程实现,统计1~n有多少个9 

程序:
#include <stdio.h>
int main(int k,char *a[])         //该程序参数,K用来计算参数个数,a用来保存参数
{       
        if (k!=2)  //当该程序参数不为1时,k不等于2,提示错误并结束
        {
                printf ("error\n");
                return 0;
        }
        int b,i,c=1,d=0,nine=0;
        for (i=0;a[c][i]!='\0';i++)   //使字符串参数转化成实形数
        {
                b=a[c][i]-'0';
                d=d*10+b;
        }
        printf ("you enter is %d\n",d);  //确认输入的n是否正确
        for (i=0;i<=d;i++)      //1到N都循环一遍
        {
                for (b=i;b>0;b=b/10)  //取i的各个位数
                {
                        c=b%10; //确认该位数是否为9,是的nine数加一
                        if (c==9)
                           nine++;
                }
        }
        printf ("it's 9 has %d\n",nine);//输出9的个数
        return 0;
}
运行结果展示:


2.   题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.

#include<stdio.h>
int main()
{
int n,i,d=0,k=0;
printf ("Enter  N\n:");   //提示输入N的值
scanf("%d",&n);         //得到N的值
int a[n]; //设N个数放进数组
        for (;1==1;) //死循环直到只剩一人
{
  for (i=0;i<n;i++)    //从一号开始检测
  {
if (a[i]!=1)     //当这个人没有被移除,则数数
{
if (d==3) //当他数到三则被移除
{
d=0;
a[i]=1;
k++; //计算移除人数

}
else if (d!=3) //当这个人没有数到三,则继续
d++;
else
printf ("error"); //如果数到三以外则提示错误
}
if (k!=(n-1)) //当只剩一个人时跳出循环
continue;
break;
   }
if (k!=(n-1))  //当只剩一个人时跳出死循环
continue;
break;
}
for (i=0;i<n;i++)  //检测N个人里是谁存活
{
if (a[i]!=1)
printf(" n=%d\n",i+1);
}
return 0;
}
运行结果展示

3.   题目:输入5个数(含负数、小数)将它们按由小到大的顺序排列起来

#include<stdio.h>
#include<stdlib.h>
main(int k,char *a[])
{
   double b,x[100];
   int i,g,l,m=0,n;
   for (i=0;i<(k-1);i++)
   {
  sscanf (a[i+1],"%lf",&x[i]);      //将参数转化成浮点型
   }
    for(i=0;i<(k-1);i++)
  printf ("%g,",x[i]);          //输出参数,确认是否输错   
   for (;1==1;) //排序
   {
        m=0;
   for(i=0;i<(k-2);i++)
        {
    if(x[i]>x[i+1])
      {
m++;
n=x[i];
x[i]=x[i+1];
x[i+1]=n;
}
}
        if(m!=0)
   continue;
        break;
    }
    for(i=0;i<(k-1);i++)       //输出从小到大的排序
printf("%g\n",x[i]);
    return 0;
}
运行结果展示

 

4.   题目:求100以内的素数,全部打印出来

#include<stdio.h>
int main()
{
        int m,n=0,i,k,l;
        for (i=2;i<101;i++)    //从2到100 逐个判断
        {
                n=0;
                for (m=2;m<i;m++)  //判断有多少次整除
                {
                  if(i%m==0)
                  n++;
                }
                if(n==0)   //0次整除就是素数
                printf ("%d,",i);
               
        }
}
运行结果展示


5 题目: 一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数

#include<stdio.h>
int main()
{
   int i,m,n;                      
   for (i=1;i<1001;i++)   //1到1000开始判断,0不是完数
   {
        m=0;          
        for (n=1;n<i;n++) 
        {
                if (i%n==0)
                m=m+n;  //因子相加
        }
        if (m==i)    //输出完数
        printf ("%d,",i);
   }
return 0;
}
结果展示



        










原创粉丝点击