c语言练习题.docx
《c语言练习题.docx》由会员分享,可在线阅读,更多相关《c语言练习题.docx(38页珍藏版)》请在冰豆网上搜索。
![c语言练习题.docx](https://file1.bdocx.com/fileroot1/2022-10/12/66fe6796-c0c7-457a-8388-227e1daa2e6f/66fe6796-c0c7-457a-8388-227e1daa2e6f1.gif)
c语言练习题
1停车场收费问题
一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:
如果输入为3.6小时,则费用为5+(3.6-3)*2=6.2元。
最高收费为40元。
假设任何车辆的停车时间都不超过24小时。
编写程序,计算每辆车的停车费。
(注意输出结果小数点后保留两位)
输入
#include
intmain()
{
doublem,x;
printf("输入停车时间x:
");
scanf("%lf",&x);
if(x<=24)
{
if(x<3.0)
{m=5.0;
printf("%lf\n",m);}
elseif(x>3.0)
{m=5.0+2.0*(x-3.0);
if(m<=40)
printf("%lf\n",m);}
}
else
printf("输出停车费用40元\n");
return0;
2.#include
intmain()
{doublex,m;
printf("输入停车时间(x):
");
scanf("%lf",&x);
if(x<=24)
{
if(x<=3.0)
printf("停车费用5元\n");
if(x>3)
m=5.0+2.0*(x-3.0);
if(m<=40)
printf("%6.2f\n",m);}
else
printf("停车费用40元\n");
}
}
2计算细菌数量
一种细菌的繁殖速度是每天成倍增长。
例如:
第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。
现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。
3计算邮资计算邮资:
用户输入:
的重量,以及是否加快
计算规则:
重量在1克以内(包括1克),基本费0.8元。
超过1克的部分,按照0.5元/克的比例加收超重费。
如果用户选择加快,多收2元。
#include
usingnamespacestd;
intmain()
{doublex,sum;
charexp;
while(cin>>x>>exp)
{
if(x<=1&&exp=='n')
sum=0.8;
if(x<=1&&exp=='y')
sum=2.8;
if(x>1&&exp=='n')
sum=0.8+(x-1)*0.5;
if(x>1&&exp=='y')
sum=0.8+(x-1)*0.5+2;
cout<}
return0;
}
#include
usingnamespacestd;
intmain()
{
intx,y;//变量定义,此处假设需要定义两个变量,均定义为整型
while(cin>>x>>y)
{
你对一组输入的一次处理过程代码
}
return0;
}
C:
#include
usingnamespacestd;
intmain()
{
intx,y;//变量定义,此处假设需要定义两个变量,均定义为整型
while(scanf(%x%y",&x,&y)!
=EOF)
{
你对一组输入的一次处理过程代码
}
return0;
}
注意:
考虑以下几点,然后直接套用模版就行了:
i)变量定义。
ii)有几个变量需要输入,在while中cin相应的变量。
iii)开始考虑主程序代码,在“{}”中写一次处理过程的代码即可。
4学分绩点计算
大学对本科生的成绩施行平均学分绩点制(GPA)。
既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。
公式如下:
实际成绩绩点
90——1004.0
85——893.7
82——843.3
78——813.0
75——772.7
72——742.3
68——712.0
64——671.5
60——631.0
60以下0
1.一门课程的学分绩点=该课绩点*该课学分
2.总评绩点=所有学科绩点之和/所有课程学分之和
现要求你编写程序求出某人A的总评绩点(GPA)
。
#include
intmain()
{
intstr1[10],str2[10],n,i;//定义两个数组分别表示每门课的学分,所得绩点
doubleh,GPA,sum=0,s=0;//定义双精度变量h表示学分,GPA总评绩点,sum表示所有学科绩点之和,s表示所有课程学分之和。
scanf("%d",&n);
for(i=0;i{
scanf("%d",&str1[i]);
s=s+str1[i];
}
for(i=0;i{
scanf("%d",&str2[i]);
if(str2[i]<=100&&str2[i]>=90)
h=4.0;
elseif(str2[i]<=89&&str2[i]>=85)
h=3.7;
elseif(str2[i]<=84&&str2[i]>=82)
h=3.3;
elseif(str2[i]<=81&&str2[i]>=78)
h=3.0;
elseif(str2[i]<=77&&str2[i]>=75)
h=2.7;
elseif(str2[i]<=74&&str2[i]>=72)
h=2.3;
elseif(str2[i]<=71&&str2[i]>=68)
h=2.0;
elseif(str2[i]<=67&&str2[i]>=64)
h=1.5;
elseif(str2[i]<=63&&str2[i]>=60)
h=1.0;
else
h=0;
sum=sum+h*str1[i];
GPA=sum/s;
}
printf("%.2f\n",GPA);
return0;
}
5一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。
已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物
#include
intmain()
{
inta,min,max,s;
scanf("%d",&s);
while(s>=1)
{
scanf("%d",&a);
if(a%2==1)
{
min=0;
max=0;
}
else
if(a%4==0)
{
min=a/4;
max=a/2;
}
else
{
min=(a-2)/4+1;
max=a/2;
}
printf("%d%d\n",min,max);
s--;
}
return0;
}
5
通过指针变量访问整型变量
#include
intmain()
{
inta=100,b=10;//定义整型变量a,b并初始化
int*pointer_1,*pointer_2;//定义指向整型数据的指针变量pointer_1,pointer_2;
pointer_1=&a;//把变量a的地址赋给指针变量pointer_1
pointer_2=&b;//把变量b的地址赋给指针变量pointer_2
printf("a=%d,b=%d\n",a,b);//输出变量a和b的值
printf("*pointer_1=%d,*pointer_2=%d\n",*pointer_1,*pointer_2);//输出变量a和b的值
return0;
}
6输入a和b两个整数,按先大后小的顺序输出a和b
#include
intmain()
{
int*pointer_1,*pointer_2,*pointer_3,a,b;//*pointer_1,*pointer_2的类型是指向整型的指针变量
printf("pleaseentertwointegernumbers:
");
scanf("%d,%d",&a,&b);//输入两个整数
pointer_1=&a;//使p1指向变量a
pointer_2=&b;//使p2指向变量b
if(a
{pointer_3=pointer_1;//将p1,p2的值互换
pointer_1=pointer_2;
pointer_2=pointer_3;
}
printf("a=%d,b=%d\n",a,b);//输出a,b
printf("max=%d,min=%d\n",*pointer_1,*pointer_2);//输出p1,p2所指向变量的值
return0;
}
7,函数嵌套调用
输入3个整数,要求由大到小输出,用函数调用。
#include
intmain()
{
voidexchange(int*q1,int*q2,int*q3);
inta,b,c,*p1,*p2,*p3;
printf("pleaseenterthreenumbers:
");
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;
p2=&b;
p3=&c;
exchange(p1,p2,p3);
printf("theolderis\n:
");
return0;
}
voidexchange(int*q1,int*q2,int*q3)
{
voidswap(int*pt1,int*pt2);
if(*q1<*q2)swap(q1,q2);
if(*q1<*q3)swap(q1,q3);
if(*q2<*q3)swap(q2,q3);
}
voidswap(int*pt1,int*pt2)
{inttemp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
8,改写大小写,要求从键盘输入大写字母,从显示器上输出小写字母
#include
intmain()
{
charc1,c2;
c1=getchar();
c2=c1+32;
putchar(c2);
putchar('\n');
return0;
}
9输入三个数,a,b,c要求按由小到大顺序输出。
#include
intmain()
{
floata,b,c,t;
printf("pleaseenterthreenumbers:
");
scanf("%f,%f,%f",&a,&b,&c);
if(a
{t=a;按由小到大必须是‘a>b’形式交换位置使小的在前,若按由大到小则是‘a
a=b;
b=t;
}
if(a{t=a;
a=c;
c=t;
}
if(b{t=b;
b=c;
c=t;
}
printf("%5.2f,%5.2f,%5.2f",a,b,c);