在C语言中,主函数的循环可以通过以下几种方式实现:
死循环
使用`while(1)`或`for(;;)`, `while(TRUE)`等结构可以实现无限循环。这种循环会一直执行,直到遇到`break`语句或程序被外部中断。
```c
int main() {
while(1) {
// 主程序代码
printf("无限循环\n");
}
return 0;
}
```
条件循环
使用`while`循环并结合条件判断,可以实现有条件的循环。当条件不满足时,循环会终止。
```c
int main() {
int flag = 1;
while(flag) {
// 主程序代码
printf("继续-----1\n退出------0\n");
scanf("%d", &flag);
if (flag == 0) {
break;
}
}
return 0;
}
```
菜单驱动循环
在主函数中设置一个菜单,并通过循环来处理用户的选择。
```c
int main() {
int choice;
while(1) {
// 显示菜单
printf("1: 添加\n2: 删除\n3: 返回上一层\n");
scanf("%d", &choice);
// 根据用户选择执行相应操作
switch(choice) {
case 1:
// 添加操作
break;
case 2:
// 删除操作
break;
case 3:
// 返回上一层
break;
default:
printf("无效选择\n");
}
}
return 0;
}
```
事件驱动循环
在Windows编程中,可以使用`while`循环结合消息队列来处理事件驱动的程序。
```c
MSG msg;
BOOL bStop = FALSE;
int main() {
while(!bStop) {
if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
if(!GetMessage(&msg, NULL, 0, 0)) {
return (int)msg.wParam;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
if (bStop) {
break;
}
// 处理其他事件或执行任务
}
}
return 0;
}
```
定时器循环
在特定情况下,可以使用定时器来实现循环。
```c
void main() {
T0_Init(); // 定时器0初始化
while(1) {
if(SJ1==1&&SJ2==1&&SJ3==1) {
// 三个传感器都没有检测到障碍物
count1 = 100;
count2 = 100;
forward(); // 小车前进
} else if(SJ1==1&&SJ2==0&&SJ3==1) {
// 中间传感器检测到障碍物且两侧传感器没有检测到障碍物
count1=20;
count2=50;
back(); // 小车左转
} else if(SJ1==0&&SJ2==0&&SJ3==0) {
// 三个传感器都检测到障碍物
count1=20;
count2=50;
back(); // 小车后退
}
delay1ms(100); // 延时大概100毫秒
}
}
```
根据具体的应用场景和需求,可以选择合适的循环结构来实现主函数的循环。