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

xiaoxiao2021-02-28  110

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; //确认该位数是否为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; } 结果展示

        
转载请注明原文地址: https://www.6miu.com/read-52878.html

最新回复(0)