c语言习题
1、编写程序,接收用户从键盘输入的日期信息并将其显示出来。其中,输入日期的形式为月/日/年(即mm/dd/yyyy),输出日期的形式为年月日(即yyyymmdd)。格式如下:
Enter a date(mm/dd/yyyy):1/17/2016
You entered the date 20160117
分析:从键盘输入,涉及到输入函数。在对输入的数据进行输出时,为忽略掉/的影响,则使用了%*c。
答案:
#include <stdio.h> main() { int m,d,y; printf("Enter a date(mm/dd/yyyy):"); scanf("%d%*c%d%*c%d,&m,&d,&y"); //%*c表示读入的字符不送给任何变量 printf("You entered the date %4d%02d%02d\n",y,m,d); }
2、从键盘输入圆的半径,编程求该圆的周长和面积
分析:简单题,只需注意读取数据的格式说明符,如下表所示。
| 操作 | 需要的控制字符串 |
| 读取short类型数值 | %hd |
| 读取int型数值 | %d |
| 读取long型数值 | %l |
| 读取float型数值 | %f或%e |
| 读取double型数值 | %lf或%le |
答案:
#include <stdio.h> #include <math.h> #define pi 3.1415926537 float r,c,s; int main(void) { printf("请输入圆的半径:\n"); scanf("%f",&r); c=2*pi*r; s=pi*r*r; printf("您输入的半径是:%.2f,圆的周长c为%.3f,圆的面积为%.3f\n",r,c,s); return 0; }
3、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1 #include <stdio.h> 2 3 int i,j,k; 4 5 int main(void) 6 { 7 for(i=1;i<5;i++) //设置一个三层循环,分别确定百位,十位和个位 8 for(j=1;j<5;j++) 9 for(k=1;k<5;k++) 10 { 11 if(i!=k&&k!=j&&j!=i)//确保百位,十位和个位数字不相等 12 printf("%符合条件的三位数是:%d%d%d\n",i,j,k); 13 } 14 }
4、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
5、编程计算分段函数y=x3(x>0),y=0(x=0),y=sqrt(x)(x>0),输入x,打印出y值。
1 #include <stdio.h> 2 #include <math.h> 3 4 int main(void) 5 { 6 float x,y; 7 printf("Enter x:"); 8 scanf("%f",&x); 9 if(x==0) 10 { 11 y=0; 12 } 13 else if(x<0) 14 { 15 y=x*x*x; 16 } 17 else 18 { 19 y=sqrt(x);/*sqrt为c语言中开平方的函数,使用时必须添加math.h头文件*/ 20 } 21 printf("x=%f,y=%f\n",x,y); 22 }
6、编写一个程序来确定一个数的位数。
1 #include <stdio.h> 2 3 int main(void) 4 { 5 int n,digit=0,x; 6 printf("Enter a number:"); 7 scanf("%d",&n); 8 x=n; 9 do //用循环求n的 10 { 11 x=x/10; 12 digit++; 13 }while(x); 14 printf("The number %d has %d digits.\n",n,digit); 15 }

浙公网安备 33010602011771号