R7-1 查找整数
本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。
输入格式:
输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。
输出格式:
在一行中输出X的位置,或者“Not Found”。
#include<stdio.h>intmain(){intN,X;scanf("%d %d",&N,&X);inta[N];for(inti=0;i<N;i++)scanf("%d",&a[i]);intpos=0;for(intj=0;j<N;j++){if(a[j]==X){printf("%d",j);pos=1;break;}}if(pos==0)printf("Not Found");return0;}总结:这里用的pos可以看成一种状态的表示,0和1,和红绿灯挺像的吧
R7-6 输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area= s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。(这里area等式右边是根号
输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
如果输入的边能构成一个三角形,则在一行内,按照area = 面积; perimeter = 周长的格式输出,保留两位小数。否则,输出These sides do not correspond to a valid triangle
#include<stdio.h>#include<math.h>intmain(){inta,b,c;doubles;scanf("%d %d %d",&a,&b,&c);s=(a+b+c)/2.00;if(a+b>c&&a+c>b&&b+c>a)printf("area = %.2f; perimeter = %.2f",sqrt(s*(s-a)*(s-b)*(s-c)),(a+b+c)*1.00);elseprintf("These sides do not correspond to a valid triangle");return0;}总结:用数学公式要加头文件#include<math.h>
R7-7 三天打鱼两天晒网
中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?
输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
#include<stdio.h>intmain(){intN;scanf("%d",&N);if(N%5!=0&&N%5<4)printf("Fishing in day %d",N);elseprintf("Drying in day %d",N);return0;}R7-8 计算分段函数[2]
本题目要求计算下列分段函数f(x)的值。注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂。
输入格式:
输入在一行中给出实数x。
输出格式:
在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。
#include<stdio.h>#include<math.h>intmain(){doublex;scanf("%lf",&x);if(x>=0)printf("f(%.2f) = %.2f",x,sqrt(x));elseprintf("f(%.2f) = %.2f",x,pow(x+1,2)+2*x+1/x);return0;}R7-9 成绩转换
本题要求编写程序将一个百分制成绩转换为五分制成绩。转换规则:大于等于90分为A;小于90且大于等于80为B;小于80且大于等于70为C;小于70且大于等于60为D;小于60为E。
输入格式:
输入在一行中给出一个整数的百分制成绩。
输出格式:
在一行中输出对应的五分制成绩。
#include<stdio.h>intmain(){intx;scanf("%d",&x);if(x>=90)printf("A");elseif(x>=80&&x<90)printf("B");elseif(x>=70&&x<80)printf("C");elseif(x>=60&&x<70)printf("D");elseprintf("E");return0;}R7-10 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
planA
#include<stdio.h>intmain(){inty,m,d;scanf("%d/%d/%d",&y,&m,&d);if((y%4==0&&y/100!=0)||y%400==0){if(m==1)printf("%d",d);elseif(m==2)printf("%d",31+d);elseif(m==3)printf("%d",31+29+d);elseif(m==4)printf("%d",31+29+31+d);elseif(m==5)printf("%d",31+29+31+30+d);elseif(m==6)printf("%d",31+29+31+30+31+d);elseif(m==7)printf("%d",31+29+31+30+31+30+d);elseif(m==8)printf("%d",31+29+31+30+31+30+31+d);elseif(m==9)printf("%d",31+29+31+30+31+30+31+31+d);elseif(m==10)printf("%d",31+29+31+30+31+30+31+31+30+d);elseif(m==11)printf("%d",31+29+31+30+31+30+31+31+30+31+d);elseif(m==12)printf("%d",31+29+31+30+31+30+31+31+30+31+30+d);}else{if(m==1)printf("%d",d);elseif(m==2)printf("%d",31+d);elseif(m==3)printf("%d",31+28+d);elseif(m==4)printf("%d",31+28+31+d);elseif(m==5)printf("%d",31+28+31+30+d);elseif(m==6)printf("%d",31+28+31+30+31+d);elseif(m==7)printf("%d",31+28+31+30+31+30+d);elseif(m==8)printf("%d",31+28+31+30+31+30+31+d);elseif(m==9)printf("%d",31+28+31+30+31+30+31+31+d);elseif(m==10)printf("%d",31+28+31+30+31+30+31+31+30+d);elseif(m==11)printf("%d",31+28+31+30+31+30+31+31+30+31+d);elseif(m==12)printf("%d",31+28+31+30+31+30+31+31+30+31+30+d);}return0;}planB
#include<stdio.h>intmain(){inty,m,d;scanf("%d/%d/%d",&y,&m,&d);inta[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};intsum=d;if((y%4==0&&y/100!=0)||y%400==0)a[2]=29;elsea[2]=28;for(inti=1;i<m;i++)sum+=a[i];printf("%d",sum);return0;}