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

来源:互联网 发布:linux 两台机器复制 编辑:程序博客网 时间:2024/05/29 02:50

求各位大神指点评论啊!联系电话15839957877   QQ   :592003516

例(111.用scanf函数输入一个年份year,计算这一年2月份的天数days,然后用输出函数printf输出days(1)有变量定义为整型。(2)输入前要加提示语句。(3)输出结果前要有必要的文字说明。说明:(1)闰年的条件是:year能被4整除但不能被100整除,或者year能被400整除。(2)如果year是闰年,则2月份的天数为29天,不是闰年则为28天。

#include<stdio.h>

int main()

{

 int  year;

 printf("请输入你想计算的年份\n");

 scanf("%d",&year);

 if(year%4==0&&year%100!=0)

 printf("%d年为闰年,二月份的天数为29\n",year);

 else if(year%400==0)                          

  printf("%d年为闰年,二月份的天数为29\n",year);                         

 else

 printf("%d年为平年,二月份的天数为28\n",year); 

   

getch();   

return 0;   

}

例(12)编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。奖金税率a500 0.00 500a1000 0.05 1000a2000 0.08 2000a5000 0.10 5000a 0.15 (1)if语句编程,自变量和函数值均为双精度类型(2) scanf函数输入奖金数a,输出结果采用以下形式:a=具体值rate=税率值tax=应缴税款profit=实得奖金数(3) 分别输入a=280512100042505100,运行该程序(4) if-else if语句和switch语句编程,其它同上。

#include<stdio.h>

int main()

{

   double  a;

 printf("请输入奖金数\n");  

 scanf("%lf",&a);

 if(a<500)

 {

 printf("税率为0.00\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.00);

 printf("实得奖金数为:%lf",a-a*0.00);

 } 

 else if(a>=500&&a<1000)

 {

 printf("税率为0.05\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.05);

 printf("实得奖金数为:%lf",a-a*0.05);

 }

 else if(a>=1000&&a<2000)

 {

 printf("税率为0.08\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.08);

 printf("实得奖金数为:%lf",a-a*0.08);

 }

 else if(a>=2000&&a<5000)

 {

 printf("税率为0.10\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.10);

 printf("实得奖金数为:%lf",a-a*0.10);

 } 

 else

 {

 printf("税率为0.15\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.15);

 printf("实得奖金数为:%lf",a-a*0.15);

 }

getch();   

return 0;   

}

#include<stdio.h>

int main()

{

  double  a;

  int m;

 printf("请输入奖金数\n");  

 scanf("%lf",&a);

 if(a<500)

 m=1;

 else if(a>=500&&a<1000)

 m=2;

 else if(a>=1000&&a<2000)

 m=3;

 else if(a>=2000&&a<5000)

  m=4;

 else if(a>5000)

 m=5;

 switch(m)

 {

 case 1:

 {

 printf("税率为0.00\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.00);

 printf("实得奖金数为:%lf",a-a*0.00);

 break;

 } 

 case 2:

 {

 printf("税率为0.05\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.05);

 printf("实得奖金数为:%lf",a-a*0.05);

 break;

 }

 case 3:

 {

 printf("税率为0.08\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.08);

 printf("实得奖金数为:%lf",a-a*0.08);

 break;

 }

 case 4:

 {

 printf("税率为0.10\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.10);

 printf("实得奖金数为:%lf",a-a*0.10);

 break;

 } 

 case 5:

 {

 printf("税率为0.15\n");

 printf("应缴税款为:\n");

 printf("%lf\n",a*0.15);

 printf("实得奖金数为:%lf",a-a*0.15);

 break;

 }

}

getch();   

return 0;   

}

 

 

 例(13).百分制转等级制输入一个成绩score,要求输出等级ABCDE90分以上为A80-90B60-69D,其它为E。循环从键盘接收一班学生的某门课的成绩score,并根据成绩所在分数区间给该生评定等级level并输出,直到输入999时结束,求出该班该门课的平均成绩。

#include<stdio.h>

int main()

{

 double n=0.0, score,sum=0.0,average;

 char m;

 while(1)

 {

 printf("请输入学生成绩\n");

 scanf("%lf",&score);

 if(score==999)

 break;

 else if(score>90)

 printf("该生成绩等级为:A\n");

 else if(score>=80&&score<=90)

 printf("该生成绩等级为:B\n");

 else if(score>=70&&score<80)

 printf("该生成绩等级为:C\n");

 else if(score>=60&&score<70)

 printf("该生成绩等级为:D\n");

 else

  printf("该生成绩等级为:E\n");

 sum=sum+score;

 n++;

}

average=sum/n;

printf("平均成绩为:%lf",average);  

getch();   

return 0;   

}

例(14). 编写程序:定义一个变量,一个指针,建立该变量的引用。对变量进行初始化,并将指针指向该变量,分别通过指针和引用改变该变量的值,并输出结果进行比较分析。

#include<stdio.h>

int main()

{

 int a=3,*q;   

  q=&a;

  printf("%d",*q); 

getch();   

return 0;   

}

#include<stdio.h>

int main()

{

 int a=3,*q;

 q=&a;

 a=4;   

 printf("a=%d",*q);  

getch();   

return 0;   

}

 

 例(15). 编写程序:任意输入10个整数放于数组中,利用指针访问数组,求出该数组中的最大数max以及最小数min

#include<stdio.h>

int main()

{

 int a[]={9,6,3,8,5,2,7,4,1,0};

 int *p,max=-1,min=20,i;

 p=a;

 for(i=0;p+i<p+10;i++)

 {

   if(max<*(p+i))

   max=*(p+i);

   else

   min=*(p+i) ;                                       

 }

 printf("max=%d min=%d",max,min);

getch();   

return 0;   

}

 

 

 例(16). 编写程序:定义字符串,删掉字符串中的数字字符。

主要算法和程序清单

#include<stdio.h>

int main()

{

 char a[]="qw5ert6yu8";  

 char *p;

 p=a; 

 for(;*p!='\0';p++)

 {

 if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z'))

 printf("%c ",*p);                                

 }  

 getch();  

return 0;   

}

例(17. 写一函数,求一个字符串的长度。(1) 本部分要求全部用指针完成;(2) main函数中输入字符串,并输出其长度;(3) 本题不能使用strlen()函数;方法说明:在主函数中定义一个指向字符串的指针变量pstr,并将输入的字符串的首地址赋值给pstr,然后调用求字符串长度的函数strlenth(char *p),得到字符串的长度。在函数strlenth(char *p)中,判断*p是否为’\0’,如果不为’\0’,则进行len++的操作,直到遇到’\0’为止。然后返回len值。

#include<stdio.h>

int  length(char *p)

{

     int i=0;

 for(;*p!='\0';p++)

 i++;

 return i;         

}

 

int main()

{

   char a[]="qwertyuiop";

   char *p;

   p=a;

 printf("length=%d",length(p)); 

getch();   

return 0;   

}

 例(18). 编写一个函数,将数组中n个数按反序存放。(1) 在主函数中输入10个数,并输出排好序的数。(2) 编写函数invert()10个数按反序存放。

主要算法和程序清单

#include<stdio.h>

void swap(int a[],int n)

 {

 int b[n],i;

 for(i=0;i<10;i++)

 b[9-i]=a[i];

 printf("交换后的数为\n");

 for(i=0;i<10;i++)

 printf("%d ",b[i]);    

 }

int main()

{

int a[10] ;

int *p,i;

p=a;

printf("请输入10个数:\n");

for(;p<(a+10);p++)

scanf("%d",p);  

swap(a,10);    

getch();   

return 0;   

}

 

 例(19). 设一个函数,调用它时,每次实现不同的功能:(1)求两个数之和;(2)求两个数之差;(3)求两个数之积。实验步骤与要求:(1)在主函数中输入2个数a,b,并输出a,b的和、差和乘积。(2)分别编写函数add()sub()mul()计算两个数的和、差、积。(3) 编写函数process(),分别调用函数add()sub()mul()

#include<stdio.h>

double add(double *a,double *b)

{

 double z;

 z=*a+*b;   

 return z;    

}

 

double sub(double *a,double *b)

{

 double z;

 z=*a-*b;   

 return z;    

}

 

double mul(double *a,double *b)

{

 double z;

 z=(*a)*(*b);   

 return z;    

}

 

int main()

{

 double a=3,b=3;

 double *p,*q;

 p=&a,q=&b;

 printf("=%lf\n",add(p,q));

 printf("=%lf\n",sub(p,q));

 printf("=%lf\n",mul(p,q));  

getch();   

return 0;   

} 

例(20.从键盘输入一个字符串,,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串以“!”结束。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

 FILE *fp;

 char a[5],ch;

 int i=0;

 printf("enter string:\n");

 do{

   ch=getchar();

      a[i]=ch;

      i++;

 }while(ch!='!');

 

 

  for(i=0;a[i]!='\0';i++)

  {

         if(a[i]>='a'&&a[i]<='z')

         a[i]=a[i]-32;

  }

 

 if((fp=fopen("d:\\q.txt","wb+"))==NULL)

 {

   printf("cannot open file\n");

      exit(0);

 }

 printf("\n the new sequence:\n");

 {

              fputs(a,fp);

           printf("%s",a);

       

 }

  return 0;

}

 

 

例(21)求阶乘的几种方法

1循环求阶乘

#include<stdio.h>

int main()

{

 int i,m=0,sum=0,x=1;

 printf("请你输入一个数\n");

 scanf("%d",&m);

 for(i=1;i<=m;i++)

 {

   x=i*x;

   sum=sum+x;                  

 } 

 printf("%d",sum);

 getch();

 return 0;   

}

2递归阶乘

#include<stdio.h>

int are(int n)

{

 int f;

 if(n<0)

 printf(" you are wrong\n");

 else if(n==0||n==1)

  f=1;

  else

  f=are(n-1)*n;  

 return f;  

}

int main()

{

 int n;

 printf("请输入一个数\n");

 scanf("%d",&n);

 printf("%d",are(n));    

getch();   

return 0;   

}

3:静态变量求阶乘

#include<stdio.h>

int fac(int n)

{

 static int f=1;

 f=f*n;  

   

return f;  

}

int main()

{

 int i;

 for(i=1;i<=5;i++)

 printf("%d\n",fac(i));  

getch();   

return 0;   

}

原创粉丝点击