C语言实验 选择结构
时间:2024.11.2
一、实验
实验一、7-1 计算分段函数[2]
#include<stdio.h>
#include<math.h>
int main(){
float x,r;
scanf("%f",&x);
if(x<0)
{
r=pow((x+1.0),2)+2*x+1.0/x;
}
else r=pow(x,0.5);
printf("f(%.2f) = %.2f",x,r);
return 0;
}
TIPS:
注意幂函数的写法,pow(x,2)
实验二、7-2 三天打鱼两天晒网
#include<stdio.h>
int main(){
int n,y;
scanf("%d",&n);
y=n%5;
if((y<=3)&&(y>0))
{
printf("Fishing in day %d",n);
}
else
printf("Drying in day %d",n);
return 0;
}
TIPS:
注意考虑整除的情况,即判断的条件要考虑清楚
实验三、7-3 计算火车运行时间
#include<stdio.h>
int main(){
int c,d,h,m;
int h1,h2,sum;
scanf("%d %d",&c,&d);
h1=c/100;
h2=d/100;
sum=(h2*60+d%100)-(h1*60+c%100);
h=sum/60;
m=sum%60;
printf("%02d:%02d",h,m);
return 0;
}
TIPS:
考前多看几遍,思路不要太复杂,将时间差算出,再进行时分换算
实验四、7-4 两个数的简单计算器
#include<stdio.h>
int main(){
char c;
int a,b,r;
scanf("%d %c %d",&a,&c,&b);
if(c=='+')
{
r=a+b;
printf("%d",r);
}
else if(c=='-')
{
r=a-b;
printf("%d",r);
}
else if(c=='*')
{
r=a*b;
printf("%d",r);
}
else if(c=='/')
{
r=a/b;
printf("%d",r);
}
else if(c=='%')
{
r=a%b;
printf("%d",r);
}
else printf("ERROR");
return 0;
}
TIPS:
符号的定义用char
if(c=='+') 符号的条件判断
char c; //符号的定义用char
if(c=='+') //符号的条件判断
实验五、7-5 判断输入的字符是哪种类型
#include<stdio.h>
int main(){
char c;
scanf("%c",&c);
if((c>='0')&&(c<='9'))
{
printf("This is a digit.");
}
else if((c>='A')&&(c<='Z'))
{
printf("This is a capital letter.");
}
else if((c>='a')&&(c<='z'))
{
printf("This is a small letter.");
}
else printf("Other character.");
return 0;
}
实验六、7-6 新年倒计时
#include<stdio.h>
int main(){
int y,m,d;
scanf("%d-%d-%d",&y,&m,&d);
if((y%4==0&&y%100!=0)||y%400==0){
if(m==12)
{
printf("还有%d天到新年",32-d);
}
else if(m==11)
{
printf("还有%d天到新年",62-d);
}
else if(m==10)
{
printf("还有%d天到新年",62-d+31);
}
else if(m==9)
{
printf("还有%d天到新年",62-d+31+30);
}
else if(m==8)
{
printf("还有%d天到新年",62-d+31+30+31);
}
else if(m==7)
{
printf("还有%d天到新年",62-d+31+30+31+31);
}
else if(m==6)
{
printf("还有%d天到新年",62-d+31+30+31+31+30);
}
else if(m==5)
{
printf("还有%d天到新年",32+214-d);
}
else if(m==4)
{
printf("还有%d天到新年",32-d+244);
}
else if(m==3)
{
printf("还有%d天到新年",32-d+275);
}
else if(m==2)
{
printf("还有%d天到新年",304-d+32);
}
else if(m==1)
{
printf("还有%d天到新年",367-d);
}
}
else if(m==12)
{
printf("还有%d天到新年",32-d);
}
else if(m==11)
{
printf("还有%d天到新年",62-d);
}
else if(m==10)
{
printf("还有%d天到新年",62-d+31);
}
else if(m==9)
{
printf("还有%d天到新年",62-d+31+30);
}
else if(m==8)
{
printf("还有%d天到新年",62-d+31+30+31);
}
else if(m==7)
{
printf("还有%d天到新年",62-d+31+30+31+31);
}
else if(m==6)
{
printf("还有%d天到新年",62-d+31+30+31+31+30);
}
else if(y==5)
{
printf("还有%d天到新年",32+214-d);
}
else if(m==4)
{
printf("还有%d天到新年",32-d+244);
}
else if(m==3)
{
printf("还有%d天到新年",32-d+275);
}
else if(m==2)
{
printf("还有%d天到新年",304-d+31);
}
else if(m==1)
{
printf("还有%d天到新年",366-d);
}
return 0;
}
TIPS:
代码过于繁琐,需要尝试用循环、数组等方法进行改进。
实验七、7-7 计算运费
#include<stdio.h>
int main(){
float f,p,w,s,d;
scanf("%f %f %f",&p,&w,&s);
if(s<250)
{
d=0;
f=p*w*s*(1.0-d);
}
else if((s>=250)&&(s<500))
{
d=0.02;
f=p*w*s*(1.0-d);
}
else if((s>=500)&&(s<1000))
{
d=0.05;
f=p*w*s*(1.0-d);
}
else if((s>=1000)&&(s<2000))
{
d=0.08;
f=p*w*s*(1.0-d);
}
else if((s>=2000)&&(s<3000))
{
d=0.1;
f=p*w*s*(1.0-d);
}
else if(s>3000)
{
d=0.15;
f=p*w*s*(1.0-d);
}
printf("freight=%.2f",f);
return 0;
}
实验八、7-8 谁能进图书馆
#include<stdio.h>
int main(){
int j,p,w1,w2;
scanf("%d %d %d %d",&j,&p,&w1,&w2);
if(w1>=w2)
{
if((w1>=j)&&(w2>=j)){
printf("%d-Y %d-Y\n",w1,w2);
printf("huan ying ru guan");
}
else if((w1>=j)&&(w2<j)){
if(w1>=p){
printf("%d-Y %d-Y\n",w1,w2);
printf("qing 1 zhao gu hao 2");
}
else{
printf("%d-Y %d-N\n",w1,w2);
printf("1: huan ying ru guan");
}}
else if((w1<j)&&(w2>j)){
if(w2>=p){
printf("%d-Y %d-Y\n",w1,w2);
printf("qing 2 zhao gu hao 1");
}
else{
printf("%d-N %d-Y\n",w1,w2);
printf("2: huan ying ru guan");
}}
else if((w1<j)&&(w2<j)){
printf("%d-N %d-N\n",w1,w2);
printf("zhang da zai lai ba");
}}
else if(w1<w2)
{
if((w1>=j)&&(w2>=j)){
printf("%d-Y %d-Y\n",w1,w2);
printf("huan ying ru guan");
}
else if((w1<j)&&(w2>j)){
if(w2>=p){
printf("%d-Y %d-Y\n",w1,w2);
printf("qing 2 zhao gu hao 1");
}
else{
printf("%d-N %d-Y\n",w1,w2);
printf("2: huan ying ru guan");
}}
else if((w1<j)&&(w2<j)){
printf("%d-N %d-N\n",w1,w2);
printf("zhang da zai lai ba");
}}
return 0;
}
TIPS:
考虑两者年龄大小不同的情况,分类时避免重复,大类分两类的情况下各分三小类。
二、知识点及小技巧
1、幂函数pow
r=pow((x+1.0),2)+2*x+1.0/x;
2.符号的定义用char,if(c=='+') 符号的条件判断
char c; //符号的定义用char
if(c=='+') //符号的条件判断