本文目录一览:
C语言:要求使用四重循环解决以下问题:
#include stdio.h
const int M = 4, N = 4;
const int S = 2, T = 2;
int findSubMatrix(int aim[][N], int m, int n, int model[][T], int s, int t) {
int i, j, u, v, flag;
if(m < s || n < t) return 0;
for(i = 0; i <= m - s; ++i) {
for(j = 0; j <= n - t; ++j) {
flag = 1;
for(u = 0; u < s && flag; ++u) {
for(v = 0; v < t && flag; ++v) {
flag = aim[u + i][v + j] == model[u][v];
}
}
if(flag) {
printf("左上角:(%d,%d),右下角:(%d,%d)\n", i, j, i + u - 1, j + v - 1);
return 1;
}
}
}
return 0;
}
int main() {
int a[M][N] = {6,8,9,3,7,4,3,6,5,2,1,7,1,3,6,8};
int b[S][T] = {2,1,3,6};
int i,j;
printf("a[]:\n");
for(i = 0; i < M; ++i) {
for(j = 0; j < N; ++j)
printf("%3d",a[i][j]);
printf("\n");
}
printf("\n");
printf("b[]:\n");
for(i = 0; i < S; ++i) {
for(j = 0; j < T; ++j)
printf("%3d",b[i][j]);
printf("\n");
}
printf("\n");
if(findSubMatrix(a,M,N,b,S,T) == 0) printf("没有\n");
return 0;
}
C语言4种循环语句用法?
C语言循环语句用法有三种主要形式:
for()
循环while()
循环do...while()
循环
for()
循环用法:
for( e1 ; e2 ; e3 ) // 注意三个区域间用分号来分隔,而不是逗号
{
for_statements ; // 多条语句用{}括起来,单条语句可以不用,建议也使用
}
说明:
e1
:变量初始化区,只执行一次e2
:循环控制区,每次都要先检查e2表达式的结果是否为真,为真则进入循环区,否则结束循环e3
:循环变量变化区,每次执行完for_statements
后转到这里,执行e3
,然后转到e2
示例:
int i;
for( i=0; i<10; i++ )
{
printf("%d ", i );
}
while()
循环用法:
循环控制变量初始化
while(e)
{
while_statements ; // 包括循环控制变量变化
}
说明:
e
:循环控制条件,e为真则进入循环区,否则结束循环。执行完while_statements
后转到这里继续判断 示例:
int i;
i=0;
while( i<10 )
{
printf("%d ", i );
i++; // 循环控制变量变化
}
do...while()
循环用法:
do {
do_while_statements ; // 包括循环控制变量变化
} while(e); // 注意尾部有分号
说明:
- 与
while()
不同的是,这里可以没有循环变量的初始化,先进行循环语句的操作,然后,再判断是否继续进行,所以,这种循环,至少要执行一次do_while_statements
;而前两种,有可能一次都不执行循环语句。 示例:
int i;
do {
printf("input number " );
scanf("%d", &i ); // 循环控制变量变化
printf("%d\n", i );
} while ( i<10 );
到这里,一定能得到一个大于10的i
。一般我们在要求输入一个数据必须符合规定时,这样写代码。
C语言循环结构有哪几种
常见就三种:
for
循环while
循环do...while
循环 当然,也可以用goto
做伪循环。 还有用函数实现循环:- 单一函数调用自己实现的循环叫做:递归函数
- 两个或者多个函数首尾互相调用可以实现循环算法
c语言如何跳出多层循环
break
语句退出循环时,它将退出离它最近的那层循环,无法退出多个循环。比如下面的代码,定义一个二维数组,不希望输出第2行。
#include stdio.h
int main()
{
int a[3][3] = { {1,2,3}, // 第一行
{4,5,6}, // 第二行
{7,8,9} // 第三行
};
for (int i=0; i!=3; ++i) {
for (int j=0; j!=3; ++j)
{
if (a[i][j] == 4) break; // 进入第二行时break跳出,只跳出离它最近的for循环
printf("%d\n", a[i][j]);
}
}
return 0;
}
- 要退出多重循环,可以使用
goto
语句。
#include stdio.h
int main()
{
for (; ; ) {
while (1)
{
goto end;
}
}
end:
printf("跳出轮回!\n");
return 0;
}
c语言中的多重循环是怎么运行的
C语言的多层循环是从最内的那个循环开始,最内的循环完成循环一次,表示它的外一层循环只步进了一次,依次类推,直到最外的那一层循环步进完成,整个多层循环就结束了。你可以参考一个二层循环的代码的实际运行来理解这个问题,用二层循环代码来理解就简单多了。