c语言的魅力,C语言的"魅力"

相信大家一定对C语言不陌生,但是大家对C语言掌握多少了呢?今天由我带大家通过一道编程习题来检验一下对C语言的掌握程度。【主要涉及到的知识点:循环,二维数组。如果对程序稍加改进,也可以将函数等一系列较难的知识点融入进去】

题目:键盘录入矩阵的行和列,生成对应的螺旋数组。

示例:

请输入矩阵的行:3

请输入矩阵的列:3

对应输出;

1 2 3

8 9 4

7 6 5

【解析】这道题的难点在于循环条件,只要大家仔细观察,就可以发现,最后一个数与矩阵的行和列的积是相等的,因此,这个条件需要作为最外层的判断,判断螺旋矩阵是否生成完毕,完成后需要跳出循环;然后,我们可以将螺旋矩阵分成上下左右四个部分,用四个for循环便可以输出对应的数字,每次循环完一遍上下左右四个部分,就需要将四个循环的判断条件进行修正,即减1。

C语言代码如下:

#include

int main()

{

int a[10][10]={0};//定义数组

int l=0;//控制长度

int i,j;//数组循环下标

int c,k;//矩阵的长和宽

int num=1,z;//定义数字,总的数字

printf("矩阵的行:");

scanf("%d",&c);

printf("矩阵的列:");

scanf("%d",&k);

z = c*k;

while(num<=z){

i=0;

j=0;

//从左到右循环

for(i+=l,j+=l;j

if (num>z){

break;

}else{

a[i][j]=num++;

}

}

//从上到下

for (j--,i=i+1;i

if (num>z){

break;

}else{

a[i][j]=num++;

}

}

//从右到左

for (i--,j=j-1;j>=l;j--){

if (num>z){

break;

}else{

a[i][j]=num++;

}

}

//从下到上

for (j++,i=i-1;i>l;i--){

if (num>z){

break;

}else{

a[i][j]=num++;

}

}

l++;

//break;

}

for(i=0;i

for(j=0;j

printf("%3d",a[i][j]);

}

printf("\n");

}

getchar();

return 0;

}

有任何问题或想法,可以联系我!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值