void func1(int i)//对于函数1的提前声明
void func2(int i)//对于函数2的提前声明
char st[]="hello,friend"//定义一个长度为12的字符数组
//c++里所有的数组都是从0开始计数的哦
void func1(int i) { //其实如果提前声明了↑↑(第2行),这个函数还可以写在主函数(main)的后面
printf("%c",st[i])//等于putchar(st[i]) 作用:输出一个字符
if(i<3) {//等于i<=2 判断i是否小于3
i+=2//等于i=i+2,表示i自增2
func2(i)//调用func2函数
}
}
void func2(int i) {
printf("%c",st[i])//一样的
if(i<3) {//还是一样的
i+=2//...
func1(i)//再调用func1函数
}
}
main() {//主函数可以不写"int main()",但在一些比赛中是不允许的。
int i//定义一个局部变量
i=0//把i的值设为0
func1(i)//调用func1(0)
printf("\n")//输出换行
//其实最好要再写一个"return 0"结束程序
}
/*
程序流程:
主函数内调用func1(0):
输出st[0]->h
i<3? (i=0) -> i<3
i+2 i=2 调用func2(2):
输出st[2]->l
i<3? (i=2) -> i<3
i+2 i=4 调用func1(4):
输出st[4]->o
i<3? (i=4) -> i>3
返回!
返回!
返回!
返回!
返回!
返回!
返回!
输出换行
结束程序
*/
你用wintc还是vc?要使用vc的话可以逐条调试你就应该明白了:
#include<conio.h>
#include<stdio.h>
void
main()
{
int
i=0
char
c/*定义字符型变量c*/
while(1)/*当1时,执行循环,因为括号内值为非0,所以循环会一直执行*/
{
c='\0'/*将‘空’字符赋值给c*/
while(c!=13&&c!=27)/*当c不等于ascii码13(也就是回车键)且不等于ascii码27也就是ESC键时*/
{
c=getch()/*从键盘读取一个值并将其赋值给c*/
printf("%c\n",c)/*打印c并换行*/
}
if(c==27)
/*如果c等于27*/
break/*跳出循环*/
i++/*i自增*/
printf("the
no.is%d\n",i)/*打印‘the
no.
is
i的值’*/
}
printf("the
end")/*打印‘the
end’*/
getch()/*暂停屏幕*/
}
main(){
int
i=0
//定义整型变量i,初值为0
char
c
//定义字符型变量c
while(1)
//
判断为条件为真时执行下面的
{
c='\0'
//c赋值'\0'
while(c!=13&&c!=27)
//当条件c不等于13同时c不等于27时执行下面的
{
c=getch()
//调用getch()函数,并把值赋c
printf("%c\n",c)
//打印
c的值
}
if(c==27)
//当条件c等于27
break
//返回
i++
//i的自加1
printf("the
no.is%d\n",i)
//输出为the
no.is空行,打印
i的值
}
printf("the
end")
//打印
the
end字符串
getch()
//调用getch()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)