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

c语言典型例题及代码(1)

2013-02-15 15:05 225 查看
这个寒假复习回顾了学习c语言以来做过的典型例题,现把它总结如下。
求各位大神指点评论啊!
例(1)首先需要了解编译系统,所以对编译系统常用变量分配的字节数进行了测试。
#include<stdio.h>
int main()
{
 printf("%d\n",sizeof(int));
 printf("%d\n",sizeof(float));
 printf("%d\n",sizeof(double));
 printf("%d\n",sizeof(char));  
 printf("%d\n",sizeof(long));
 printf("%d\n",sizeof(short));
 getch();
return 0;   
}
例(2).分别用while语句、do-while语句编写程序,计算e≈1+1/1!+1/2!+...+1/n!
(1) 用单重循环编写程序 (2)使误差小于给定的ε,设ε=10-5
(3)除了输出e以外,同时还要输出总的项数n

#include<stdio.h>
int main()
{
 double n=0.0,m=1.0,i=1.0,sum=1.0,e = 2.71828 ;
 do
 {     
 m=m*i;
 sum=sum+1/m ;
 i++;
 }while(e-sum>1e-5);
 printf("%lf",i); 
getch();   
return 0;   
}
#include<stdio.h>
int main()
{
 double n=0.0,m=1.0,i=1.0,sum=1.0,e = 2.71828 ;
 while(e-sum>1e-5)
 {     
 m=m*i;
 sum=sum+1/m ;
 i++;
 }while(e-sum>1e-5);
 printf("%lf",i); 
getch();   
return 0;   

 
例(3).奇偶对调,对N以内的整数进行奇偶对调,并输出结果
 #include<stdio.h>
int main()
{
 int n,i;
 printf("请输入一个数:\n");
 scanf("%d",&n);
 int a
;
 int b
,x=0,y=1;
 for(i=0;i<n;i++)
 {
   a[i]=i+1;              

 }
 printf("原数组为:\n");
  for(i=0;i<n;i++)
 printf("%d ",a[i]);
 printf("\n");

 for(i=0;i<n;i++)
 {
   if(a[i]%2==0)
   {
    b[x]=a[i];
    x++;
   }              

    else
    {  

    b[n-y]=a[i] ;      

     y++;       

    }
 }
 printf("\n");
 printf("奇偶排序后的数组为:\n");
 for(i=0;i<n;i++)
 printf("%d ",b[i]);
 printf("\n");

getch();   
return 0;   
}
 
例(4).如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。例如6的因子是1,2,3,且6=1+2+3,因此6是完数。编写程序找出1000之内的所有完数及这些完数的和。(1)
要求使用for循环(2)
输出形式为:完数1+完数2...=和值
#include<stdio.h>
int main()
{
int i,j,sum,s=0,q=0;
for(i=1;i<=1000;i++)
{
 sum=0;
 for(j=1;j<i;j++)
 {             
 if(i%j==0)
 {
  sum=sum+j;         

 }                            

 }
 if(sum==i)
 {
  q++;        

 printf("%d+",i);
 s=s+i;
 }
}
printf("\b=%d",s);  
getch();   
return 0;   
}
例(5). 判断用户输入的正整数n是否为素数,直到用户输入1为止。(1)用while循环读入正整数n(2)对于每个正整数n,采用for循环判断是否为素数。(3)打印输出判断结果
#include<stdio.h>
int action(int m)
{
   int k;
  for(k=2;k<=m;k++)                 

     {
        if(m%k==0)
         break;                                
  
     }

     if(k==m)
     printf("%d\n",m);    

}
int main()
{
 int m,k;
 while(2)
 {
  if(m==1)

  break;
  else
  {     

  scanf("%d",&m);
  action(m);
  }
 }

 getch();  
return 0;   
}
例(6).编写一个程序,循环从键盘接收一批学生的某门课的成绩,并依次保存在数组score的相应元素中,直到输入的成绩为999时结束。(1)对成绩按从高到低排序,并按排序后的顺序输出所有学生的成绩,(2)再输入一个学生的成绩,并插入排序后的成绩表中并保持有序,最后再输出所有学生的成绩(3)再输入一个成绩,并从数组中删除与该数相同的所有同学成绩,最后输出最终的成绩表
主要算法和程序清单
#include<stdio.h>
void action1()
{
 int m,n=0,i;
 int a[100];
printf("请输入学生成绩,最后输入999时程序开始工作\n");    
 while(1)
 {
    scanf("%d",&m);

    if(m==999) break;            

    else
    {

    a
=m;
    n++;  

    }   

 }
 action2(a,n);
}
int action2(int a[],int n)
{
   int i,j,t;

   for(i=0;i<n-1;i++)
 {
 for(j=i+1;j<n;j++)
  {
   if(a[i]>a[j])                 

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

         }         

  }                                  

 }
 printf("按从小到大的顺序排列为:\n");
 for(i=0;i<n;i++)
 printf("%d ",a[i]);
 printf("\n");     
 action3(a,n);
 }
int action3(int a[],int n)
{ int i,j,t,m;
 printf("请输入你要插入的数\n");   
scanf("%d",&m);
 a
=m;                
  for(i=0;i<n;i++)
 {
 for(j=i+1;j<n+1;j++)
  {
   if(a[i]>a[j])                 

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

         }         

  }                                  

 }
 printf("按从小到大的顺序排列为:\n");
 for(i=0;i<=n;i++)
 printf("%d ",a[i]);
 printf("\n");
 action4(a,n+1);                      
}
int action4(int a[],int n)
{
 int i,m;
 printf("请输入你想删除的学生成绩\n");
 scanf("%d",&m);
for(i=0;i<n;i++)
{
if(a[i]!=m)               
 printf("%d ",a[i]);              
}   
}
int main()
{
action1();     
getch();   
return 0;   
}
例(7).在主函数中输入一个十进制数,调用转换函数把这个十进制数转换成二、八、十六进制数。
 
 #include<stdio.h>
int action1(int m)
{
 printf("%x\n",m);
}
int action2(int m)
{
 printf("%o\n",m);
}
int action3(int m)
{
 int a[30],n=0,i;
 while(m)
 {
  a
=m%2;
  m=m/2;
 n++;
 }
for(i=n-1;i>=0;i--)
printf("%d ",a[i]);
}
int main()
{
int a=10;
action1(a);
action2(a);
action3(a);
return 0;
}
 
例(8).定义一个函数,判断三个整形边长能否构成三角形,如果是三角形,则判断它是否是直角三角形。
1)声明函数judge;2)
实现函数judge,根据输入的三个边长判断是否可以构成一个三角形;3)
在main中调用judge;4)
在main中根据judge的返回值判断是否是三角形,如果构成三角形则判断是否为直角三角形,并给出结论。
#include<stdio.h>
double action2(double a,double b,double c)
{
 
if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a)
printf("and this is a 直角三角形\n");
else
printf("but this  is not a
直角三角形\n");
}
double action1(double a,double b,double c)
{
 if(a<=0||b<=0||c<=0)
printf("you are wrong\n");
else if(a-b<c&&a+b>c)
{
printf("this is a 三角形");
action2(a,b,c);
}
else
printf("this is not a
三角形");
}
 
int main()
{
double a,b,c;
printf("please input three numbers\n");
scanf("%lf%lf%lf",&a,&b,&c);
action1(a,b,c);
return 0;
}
例(9). 找出一个二维数组中的鞍点,即该位置上的元素在所在行为最大,在所在列为最小。如果没有这样的元素,请打印出相应的信息。(1)
画出此题的流程图。(2) 编写程序求矩阵中所有的鞍点并上机调试。(3)
输入的数据和输出的结果要详细记录。
流程图

 
主要算法和程序清单
#include<stdio.h>
int action1(int i,int j)//找行中最大
{ int m,max,t;
  int b[3][4]={{1,2,13,4},{7,8,10,6},{3,5,9,7}};
  max=b[i][0];
  for(m=0;m<4;m++)
  {
      if(max<b[i][m])
        {
        t=max;
        max=b[i][m];
        b[i][m]=max;
        }                   

  }
  return max;
 }
int action2(int i,int j)//找列中最大
{  int n,min,t;
  int b[3][4]={{1,2,13,4},{7,8,10,6},{3,5,9,7}};
  min=b[0][j];
  for(n=0;n<3;n++)
  {
    if(min>b
[j])
    {
     t=min;
     min=b
[j];
    b
[j]=min;              

    }            

  } 

  return min;
 }
int main()
{
 int i,j,max,min;
for(i=0;i<3;i++)
{
 for(j=0;j<4;j++)
 {
  max=("%d",action1(i,j));
  min=("%d",action2(i,j));
    if(max==min)

    printf("%d",max);                               

 }

                            
}  
getch();   
return 0;   
}
 例(10).统计一个班的学生成绩。要求程序具有如下功能:(1)
每个学生的学号和四门功课的成绩从键盘读入。(2)
计算每个学生的总分和平均分。(3)
按平均成绩进行排序,输出排序后的成绩单(包括学号、四门功课的成绩和平均分),给出名次。如果分数相同,则名次并列,其他学生名次不变。提示:调试程序时,可先输入少量学生的成绩作为实验数据。如可输入3名学生4门课成绩:学号
成绩 9701 67,72,65,80
9702 75,82,94,
#include<stdio.h>
int main()
{
 int num,i,e[3],m,j;
 double a,b,c,f,average,d[3],t;
 for(i=0;i<4;i++)
 {
 printf("请输入该生学号:\n");
 scanf("%d",&num);
 printf("请输入该生课程a的成绩:\n");
 scanf("%lf",&a);
 printf("请输入该生课程b的成绩:\n");
 scanf("%lf",&b);
 printf("请输入该生课程c的成绩:\n");
 scanf("%lf",&c);
 printf("请输入该生课程f的成绩:\n");
 scanf("%lf",&f);
 d[i]=(a+b+c+f)/4.0;

 e[i]=num;              

 printf("d[%d]=%lf 
num=%d\n",i,d[i],e[i]);                                          
 }
 for(i=0;i<3;i++)
 {
 for(j=i+1;j<4;j++)
  {
      if(d[i]>d[j])
      {
        t=d[i],m=e[i];
        d[i]=d[j],e[i]=e[j];
        d[j]=t,e[j]=m;                       

      }                               

  }                            

 }
 for(i=0;i<4;i++)
 printf("num=%d average=%lf\n",e[i],d[i]);   
getch();   
return 0;   
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: