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

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

2013-02-15 15:08 435 查看
求各位大神指点评论啊!联系电话15839957877   QQ   :592003516
例(11)1.用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,计算并输出税率、应缴税款和实得奖金数。奖金税率
a<500 0.00 500≤a<1000
0.05 1000≤a<2000 0.08 2000≤a<5000
0.10 5000≤a 0.15 (1)
用if语句编程,自变量和函数值均为双精度类型
(2) 用scanf函数输入奖金数a,输出结果采用以下形式:
a=具体值
rate=税率值
tax=应缴税款
profit=实得奖金数
(3) 分别输入a=280,512,1000,4250,5100,运行该程序
(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,要求输出等级A、B、C、D、E,90分以上为A,80-90为B,60-69为D,其它为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
,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;   

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: