以题目为打印九九乘法表,有三种形式要求,如图:
例如,输入一个数字666,再把它原样输出。这是按照顺序走的步骤,也就是,先“输入数字”再“输出数字”
代码如下
#include
int main(void)
{
int n;//先定义一个整型变量,保存输入的数字
scanf("%d",&n);//输入数字
printf("%d",n);//输出数字
return 0;
}
运行结果如下:
解释:就是按照从上到下的顺序执行操作,这是C语言最基本的结构。
我将以上的代码做了修改,意思为“输入的数字小于0时才输出数字”
#include
int main(void)
{
int n;//先定义一个整型变量,保存输入的数字
scanf("%d",&n);//输入数字
if(n<0)//输入的数字要小于0才能进行以下的操作
printf("%d",n);//输出数字
return 0;
}
此时if条件语句中,要想输出数字,就要使得条件“n<0”为真命题。
当我输入的n大于0时,结果如下:
当我输入的n小于0时,结果如下:
基于以上的if“是真则行”的状态,if-else语句讲究的就是一种互斥状态——如果if语句的条件不是真命题,那么就执行else的语句。
也就是,如果if条件是假命题,相当于“死”了,那么else的操作就会执行,相当于“活”了;反言之,if“活”了,那么就执行if的操作,else就已经“死”了。
借鉴以上的代码修改如下:
#include
int main(void)
{
int n;//先定义一个整型变量,保存输入的数字
scanf("%d",&n);//输入数字
if(n<0)//输入的数字要小于0才能进行以下的操作
printf("%d",n);//输出数字
else//当输入的数字大于0就做以下操作(或者说,if条件是假命题)
printf("输入的数字是大于零的,我不输出这个数字");
return 0;
}
当输入的n>0,结果如下:
当输入的n<0,结果如下
修改如下:
#include
int main(void)
{
int n;//先定义一个整型变量,保存输入的数字
scanf("%d",&n);//输入数字
if(n<0)//输入的数字要小于0才能进行输出数字
printf("%d",n);//输出数字
else if(n==-1)//当输入的n是-1 时就输出以下文字
printf("太小气了,你只输入一个-1!");
else//当输入的数字大于0就做以下操作(或者说,if条件是假命题)
printf("输入的数字是大于零的,我不输出这个数字");
return 0;
}
当我输入-1,结果如下:
由于最先开始的条件n<0已经被满足了,所以,执行完第一个条件的操作后下一步就不再执行。
所以,要想输入else if中的操作语句,就必须对前面的条件再修改。
修改如下:
#include
int main(void)
{
int n;//先定义一个整型变量,保存输入的数字
scanf("%d",&n);//输入数字
if(n<-1)//输入的数字要小于-1才能进行输出数字
printf("%d",n);//输出数字
else if(n==-1)//当输入的n是-1 时就输出以下文字
printf("太小气了,你只输入一个-1!");
else//当输入的数字大于0就做以下操作(或者说,if条件是假命题)
printf("输入的数字是大于零的,我不输出这个数字");
return 0;
}
swtich 的多路选择结构
#include
int main(void)
{
int n;//先定义一个整型变量,保存输入的数字
scanf("%d",&n);//输入数字
switch(n)
{
case -2://当n为-2, 则执行以下输出数字n的操作
printf("%d",n);
break;//这个分支的操作被执行,break是用来告诉计算机不用在执行以下操作 ,以下同理。
case -1://当n为-1,则执行输出以下文字的操作
printf("太小气了,你只输入一个-1!");
break;
case 666://同理
printf("输入的数字是大于零的,我不输出这个数字");
break;
}
return 0;
}
值得注意的是,case后面一定是一个常量或字符,是一个确定明确的数值或字符,因此,switch语句一般用于设计菜单,或者多选择上,可能不适合用在表示范围的问题。
一般分为两种循环:计数控制循环、条件控制循环
前者是指,知道循环次数的循环;后者是指不知道循环次数的循环。
三者的表现形式一般如下:
for(循环控制变量的初始值;循环条件;循环控制变量的变化)
{操作语句1;操作语句2;.......;操作语句n;}
while(执行循环的条件)
{操作语句1;操作语句2;操作语句3;.......;操作语句n;}
do
{
操作语句1;操作语句2;操作语句3;操作语句4;.......操作语句n;
}while(执行循环的条件);
值得注意的是,这三种循环的执行条件只有在条件为真命题的时候才能执行,三种循环可以相互嵌套使用。
对于while与do-while,区别就在于 : 前者是先判断条件,再执行;后者是先执行,再判断条件。
因此,do-while无论条件是否满足,都至少执行一次。
第一种结果:
代码如下:
#include//九九乘法表的打印思路——行数*列数
int main(void)
{
int n,i,j;//n用作前两行的循环控制变量,i用于从第三行开始的行数表示,j用于表示列数
char p='_';//定义字符变量
for(n=1;n<=2;n++){
if(n==1)//第一行的打印
for(j=1;j<10;j++)
printf("%d\t",j);
if(n==2)//第二行的打印
for(i=1;i<10;i++)
printf("%c\t",p);
printf("\n");
}
for(i=1;i<=9;i++)//这一步是嵌套循环的使用,正式打印九九乘法表
{
for(j=1;j<=9;j++)
{
printf("%d\t",i*j);//水平制表
}
printf("\v");//垂直制表
}
return 0;
}
第二种结果如图:
运行代码只改动一部分即可,采用if-continue;语句
#include
int main(void)
{
int n,i,j;
char p='_',s=' ';
for(n=1;n<=2;n++){
if(n==1)
for(i=1;i<10;i++)
printf("%d\t",i);
if(n==2)
for(i=1;i<10;i++)
printf("%c\t",p);
printf("\n");
}
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
if(j>i)continue;//改动部分if-continue语句的使用
printf("%d\t",i*j);
}
printf("\v");
}
return 0;
}
第三种结果如图:
运行代码如下:
#include
int main(void)
{
int n,i,j;
char p='_',s=' ';//要定义空字符来占用前面未打印的数字位置
for(n=1;n<=2;n++){
if(n==1)
for(i=1;i<10;i++)
printf("%d\t",i);
if(n==2)
for(i=1;i<10;i++)
printf("%c\t",p);
printf("\n");
}
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
if(j