目录
3-4 统计字符
3-5输出闰年
3-6 成绩转换
3-7 查询水果价格
3-8 比较大小
3-9 高速公路超速罚款
3-10 出租车计价
3-11 统计学生成绩
3-12 求给定精度的简单交错序列部分和
4-1找出最小值
4-2统计素数并求和
4-3求奇数和
4-5特殊a串数列求和
输入格式:
输入为10个字符。最后一个回车表示输入结束,不算在内。
输出格式:
在一行内按照
letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。
//统计字符
#include
int main(){
int i;
char a[10];
for(i=0;i<10;i++){
scanf("%c",&a[i]);
}
int letter,blank,digit,other;
letter=blank=digit=other=0;//letter,blank,digit,other=0这样是错误的写法
for(i=0;i<10;i++){
if(a[i]<='9'&&a[i]>='0'){//此时数字也是字符,所以也要加单引号。
digit++; //注意这个代码用的是if else if的语句而不是一直if
}
else if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'){
letter++;
}
else if(a[i]==' '||a[i]=='\n'){
blank++;
}
else{
other++;
}
}
printf("letter=%d,blank=%d,digit=%d,other=%d",letter,blank,digit,other);
return 0;
}
输入格式:
输入在一行中给出21世纪的某个截止年份。
输出格式:
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出"Invalid year!"。若不存在任何闰年,则输出“None”。
//输出闰年
#include
int main(){
int x;
int i;
scanf("%d",&x);
if(x<2100){
for(i=2000;i<=x;i++){
if(i%4==0&&i%100!=0||i%400==0){
printf("%d\n",i);
}
}
}else{
printf("invalid year");
}
return 0;
}
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
#include
int main(){
int x;
scanf("%d",&x);
switch(x/10){
case(9):
printf("A");
break;
case(8):
printf("B");
break;
case(7):
printf("c");
break;
case(6):
printf("D");
break;
default:
printf("E");
}
return 0;
}
给定四种水果,分别是苹果(apple)、梨(pear)、桔子(orange)、葡萄(grape),单价分别对应为3.00元/公斤、2.50元/公斤、4.10元/公斤、10.20元/公斤。
首先在屏幕上显示以下菜单:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
用户可以输入编号1~4查询对应水果的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。
输入格式:
输入在一行中给出用户连续输入的若干个编号。
输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留两位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束。
输入样例1:
3 -1 0 2
输出样例1:
[1] apple
[2] pear
[3] orange
[4] grape
[0] exit
price = 4.10
price = 0.00
#include
int main(){
printf("[1]apple\n[2]pear\n[3]orange\n[4]grape\n[0]exit");
int x;
int i;
for(i=1;;i++){
scanf("%d",&x);
if(i>5){
break;
}
switch(x){
case(1):
printf("price=3.00\n");
continue;
case(2):
printf("price=2.50\n");
continue;
case(3):
printf("price=4.10\n");
continue;
case(4):
printf("price=10.20\n");
continue;
case(0):break;//这里的break和continue都是只针对switch case这个结构
default:
printf("price=0.00\n");
continue;
}
if(x==0){
break;
}
}
return 0;
}
输入格式:
输入在一行中给出3个整数,其间以空格分隔。
输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。
//比较大小:就是两个两个数比较,然后交换位置即可
#include
int main(){
int a,b,c,t;
scanf("%d %d %d",&a,&b,&c);
if(a>b){
t=a;
a=b;
b=t;
}
if(a>c){
t=a;
a=c;
c=t;
}
if(b>c){
t=b;
b=c;
c=t;
}
printf("%d->%d->%d",a,b,c);
return 0;
}
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。
输入格式:
输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。
输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。
#include
int main(){
int v,x;
scanf("%d %d",&v,&x);
double i=x+x*0.1;
double k=x+x*0.5;
if(v=i&&v=k){
printf("exceed %.0f%%.license revoked",1.0*(v-x)/x*100);
}
return 0;
}
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
#include
int main(){
double x;
int y;
int q;
int sum;
int s;
scanf("%lf %d",&x,&y);
if(x<=3){
q=10;
}if(x>3&&x<=10){
q=10+(x-3)*2;
}if(x>10){
q=10+14+(x-10)*3;
}
s=y/5*2;
sum=s+q;
printf("%d",sum);
return 0;
}
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
//统计学生成绩
#include
int main(){
int n;
scanf("%d",&n);
int a[n];
int i,x;
int A,B,C,D,E;
A=B=C=D=E=0;
for(i=0;i
本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最后一项的绝对值不大于给定精度eps。
输入格式:
输入在一行中给出一个正实数eps。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
法一:
#include
#include
int main(){
double eps,p,sum;
int a,k;
a=1;
k=1;
sum=0;
scanf("%lf",&eps);
while(1){
p=1.0/a*k;
a+=3;
k=-k;
sum+=p;
if(fabs(p)
#include
int main(){
double eps,p,sum;
int a,k;
a=1;
k=1;
sum=0;
scanf("%lf",&eps);
do{
p=1.0/a*k;
a+=3;
k=-k;
sum+=p;
}while(fabs(p)>eps);
printf("sum=%f",sum);
return 0;
}
错误示范:
//统计学生成绩
#include
#include
int main(){
double eps,p,sum;
int a,k;
a=1;
k=1;
sum=0;
scanf("%lf",&eps);
while(fabs(p)>eps){ //如果用while循环,则根本进不去这个循环,因为都不知道p的值是多少
p=1.0/a*k; //所以在用循环之前,要先考虑是用while好还是do while好
a+=3;
k=-k;
sum+=p;
}
printf("sum=%f",sum);
return 0;
}
#include
int main(){
int n,i;
scanf("%d",&n);
int a[n];
for(i=0;i
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
#include
int main(){
int n,m;
scanf("%d %d",&n,&m);
int x,i;
int sum=0;
int cnt=0;
for(x=n;x<=m;x++){
int isprime=1; //特别超级要注意!这个isprime每次做完循环都要初始化为1;
for(i=2;i
输入格式:
输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。
输出格式:
在一行中输出正整数序列中奇数的和。
#include
int main(){
int x;
int sum=0;
while(x>0){
scanf("%d",&x);
if(x%2!=0&&x>0){
sum+=x;
}
}
printf("%d",sum);
return 0;
}
4-4求分数序列前n项和
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
#include
int main(){
int n,i;
double p;
double sum=0;
scanf("%d",&n);
int a=2;//这两个可以合并在一起:int a=2,b=1,t;
int b=1;
int t;
for(i=1;i<=n;i++){
sum+=a*1.0/b;//救命!记住这个1.0要加在哪里才可以成功,加在分子的后面!!
//如果实在不知道加哪,又想让最终结果是个有小数点的,那就一开始
t=a; //就定义a,b是个double类型的数
a=a+b;
b=t;
}
printf("%.2f",sum);
return 0;
}
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
输入格式:
输入在一行中给出不超过9的正整数a和n。
输出格式:
在一行中按照“s = 对应的和”的格式输出。
5. //求a+aa+aaa+.....
#include
int main(){
int a,n;
scanf("%d %d",&a,&n);
int i,p=0,sum=0;
for(i=1;i<=n;i++){ //要特别注意!第一次循环后sum的值就是一个a ,所以要特别注意sum
p=p*10+a; //和p的初始化。
sum+=p;
}
printf("x=%d",sum);
return 0;
}