一、Xmind整理:
二、课上练习:
练习1:输入一个天数,输出星期几?
例如:输入1--->星期一
int day;
printf("please enter day:");
scanf("%d",&day);
switch(day)//1 2 3 4 5 6 7 9>7 <1
{
case 1://printf("星期1\n");
case 2://printf("星期2\n");break;
case 3:printf("星期3\n");break;
case 4:printf("星期4\n");break;
case 5:printf("星期5\n");break;
case 6:printf("星期6\n");break;
case 7:printf("星期日\n");break;
default:printf("ERROR");break;
}
练习2:对学生的考试成绩分级评测,规则为: 成绩1-100之间合法
1、成绩>=90为等级A 90-91 92 93 94 95 96 97 98 99
2、成绩>=80为等级B
3、成绩>=70为等级C
4、成绩>=60为等级D
5、成绩<60为等级E
/判断0--100之间
使用switch判断十位
if(score>=0 && score<=100)
{
switch(score/10)//0-100
{
case 10:case 9:printf("A");break;
case 8:printf("B");break;
case 7:printf("C");break;
case 6:printf("D");break;
default:printf("E");break;
}
}
else
{
printf("ERROR");
}
练习3:输入年月日,计算这是这一年的第几天?
int main(int argc, const char *argv[])
{
printf("please enter year&month&day:");
int year,month,day,sum=0;
int day2;
scanf("%d %d %d",&year,&month,&day);
if(year <=0)
{
printf("year ERROR");
return -1;//结束 -1表示失败 0表示成功
}
else if(month <=0 || month>12)
{
printf("month ERROR");
return -1;
}
else if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&(day>31||day<1))
{
printf("day ERROR");
return -1;
}
else if(month==2 && year%4==0&&year%100!=0||year%400==0 &&(day>29 || day<1))
{
printf("day ERROR");
return -1;
}
else if(month==2 && !(year%4==0&&year%100!=0||year%400==0) &&(day>28 || day<1))
{
printf("day ERROR");
return -1;
}
else if(day>30 || day<1)
{
printf("day ERROR");
return -1;
}
int day30=30,day31=31;
switch(month)
{
case 12:sum+=30;
case 11:sum+=31;
case 10:sum+=30;
case 9:sum+=31;
case 8:sum+=31;
case 7:sum+=30;
case 6:sum+=31;
case 5:sum+=30;
case 4:sum+=31;
case 3:
if(year%4==0&&year%100!=0||year%400==0)
sum+=29;
else
sum+=28;
case 2:
sum+=31;
case 1:sum+=day;
}
printf("this is %d day\n",sum);
return 0;//0表示执行成功
练习4:循环1--5
int i=1;//表达式1
while(i<=5)
{
printf("i=%d\n",i);//循环体
i++;//表达式3
}
练习5:计算起始值到终止值之间的和
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,j;
printf("请输入起始值与终止值:");
scanf("%d%d",&i,&j);
int sum=0;
while(i<=j)
{
sum+=i;
i++;
}
printf("起始值与终止值的和为%d\n",sum);
return 0;
}
练习6:任意输入一个数,计算各个位数字之和
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,a;
printf("请输入一个数:");
scanf("%d",&i);
int sum=0;
while(i>0)
{
a=i%10;
sum+=a;
i=i/10;
}
printf("该数各个数和为%d\n",sum);
return 0;
}
练习7:循环1-5
int i=1;
do
{
printf("i=%d\n",i);
i++;
}while(i<=5);
练习8: 计算起始值到终止之间的乘积
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,j;
printf("请输入起始值和终止值:");
scanf("%d%d",&i,&j);
int mul=1;
do
{
mul*=i;
i++;
}while(i<=j);
printf("起始值到终止值的乘积为:%d\n",mul);
return 0;
}
练习9:循环输入n个值,输入0结束,计算和
int num,sum=0;
do{
printf("please enter a num:");
scanf("%d",&num);
sum+=num;
}while(num!=0);
printf("sum=%d\n",sum);
练习10:计算起始值到终止值之间的偶数和以及平均值
int start,end;
int i,count=0,sum=0;
printf("please enter start&&end:");
scanf("%d %d",&start,&end);//3---10
for(i=start;i<=end;i++)
{
//i:3 4 5 6 7 8 9 10
if(i%2==0)
{
sum+=i;//计算偶数的和
count++;//计算偶数的个数
}
}
float avg=(float)sum/count;
printf("avg=%.2f\n",avg);
练习11: 斐波那契:1 1 2 3 5 8.....
1 2 3 4 5 6.....项数
1 1 2 3 5 8.....值
a b c
a b c
a
int a=1,b=1,c;
printf("%d %d ",a,b);
for(i=3;i<=n;i++)//循环项数
{
c=a+b;
a=b;
b=c;
printf("%d ",c);
}
练习12:goto
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int count=0;
printf("1\n");
printf("2\n");
printf("3\n");
A:
printf("4\n");
printf("5\n");
printf("6\n");
count++;
if(count==3)
goto B;
goto A;
printf("7\n");
printf("8\n");
B:
printf("9\n");
return 0;
}
练习13:break
for(int i=0;i<3;i++)
{
if(i%2!=0)
{
break; //结束本层循环
}
printf("*"); *
}
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
break; //break只可以跳出一层循环,跳出内层循环
}
}
练习14:continue
for(int i=1;i<10;i++)
{
if(i%3==0)
{
continue; //当i=3是执行continue后,跳过后面的语句,直接执行i++,进入下次循环
}
printf("1");
printf("2");
}
练习15:循环1-50,逢7过【尾数是7,7的倍数】,如果不是则输出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
for(int i=0;i<=50;i++)
{
if(i%7==0||i%10==7)
{
continue;
}
printf("%d\t",i);
}
printf("\n");
return 0;
}
三、课后作业:
1.循环输入5个元素,输出最大值
思路:1定义一个变量,循环输入5次
2默认第一次输入的为最值
3依次拿最值进行比较
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int i,a,max;
for(i=1;i<=5;i++)
{
printf("请输入一个数:");
scanf("%d",&a);
if(i==1)
max=a;
if(max<a)
max=a;
}
printf("最大值为:%d\n",max);
return 0;
}
2.任意输入一个数,计算是否是素数
素数:只能被1和本身整除,注意最小的素数是2
思路:只需要计算2- n的根号之间是否存在能整除的数,如果存在则不是素数,不存在则是素数
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,i;
printf("请输入一个数:");
scanf("%d",&a);
if(a==2)
printf("该数是素数\n");
if(a>2)
{
for(i=2;i<a;i++)
if(a%i==0)
{
printf("该数不是素数\n");
return 0;
}
printf("该数是素数\n");
}
return 0;
}