cr:经典
题目25
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
思路:
计算位数这个比较好实现,除以十然后计数,直到除完十结果是零的时候停止就可以了;但是逆序打印各位数字的话,首先要把每一位都找出来,然后才能打印。我的想法是用数组或者取余,但是数组的话无法确定要定义一个多大的数组,而且空下的位置是不是零?如果是的话,那怎么保证打印出来自己想要的数字呢?所以我打算先用取余的方法来操作。
先输入这个正整数,然后把这个数字存到另一个新的变量中去;接着除以十,再给计数变量加一,直到除完得到零;然后对那个新变量取10的余数,取出来直接输出,然后一直取余,直到余数为零。
代码:
#include<stdio.h>
main()
{
int a, b, c, d, e, x;
printf("输入一个不多于5位的正整数:");
scanf("%d", &x);
a = x / 10000;
b = x % 10000 / 1000;
c = x % 1000 / 100;
d = x % 100 / 10;
e = x % 10;
printf("\n");
if (a != 0) {
printf("5位数,倒叙输出结果:%d %d %d %d %d\n", e,d,c,b,a);
}else if (b != 0) {
printf("4位数,倒序输出结果:%d %d %d %d\n", e,d,c,b);
}else if (c != 0) {
printf("3位数,倒序输出结果:%d %d %d\n", e,d,c);
}else if (d != 0) {
printf("2位数,倒序输出结果:%d %d\n", e,d);
}else{
printf("1位数,倒序输出结果:%d\n", e);
}
}
对方:
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鸟教程. All rights reserved.
//
#include <stdio.h>
int main( )
{
long a,b,c,d,e,x;
printf("请输入 5 位数字:");
scanf("%ld",&x);
a=x/10000; /*分解出万位*/
b=x%10000/1000; /*分解出千位*/
c=x%1000/100; /*分解出百位*/
d=x%100/10; /*分解出十位*/
e=x%10; /*分解出个位*/
if (a!=0){
printf("为 5 位数,逆序为: %ld %ld %ld %ld %ld\n",e,d,c,b,a);
} else if(b!=0) {
printf("为 4 位数,逆序为: %ld %ld %ld %ld\n",e,d,c,b);
} else if(c!=0) {
printf("为 3 位数,逆序为:%ld %ld %ld\n",e,d,c);
} else if(d!=0) {
printf("为 2 位数,逆序为: %ld %ld\n",e,d);
} else if(e!=0) {
printf("为 1 位数,逆序为:%ld\n",e);
}
}
反思&收获:
没有按照我自己的思路来写,有问题,就直接按照对方的思路来写了。
cr:小林
例25
C语言实现求3*4的矩阵中制最大的那个元素的值,以及其所在的行号列号。
思路:
先定义一个3*4的数组,然后在定义的时候直接输入数值,接着写双层for循环,遍历数组。将第一个元素的值赋给max,有大于max的则直接覆盖,最后输出max。
代码:
#include<stdio.h>
main()
{
int x, y, a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} }, max;
max = a[0][0];
for (x = 0; x < 3; x++) {
for (y = 0; y < 4; y++) {
if (a[x][y] > max) max = a[x][y];
}
}
printf("最大值是 %d\n", max);
}
对方:

反思&收获:
写完才发现少完成了一个题目要求:输出最大值的坐标。
#include<stdio.h>
main()
{
int x, y, a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} }, max, j, k;
max = a[0][0];
printf("矩阵为:\n");
for (x = 0; x < 3; x++) {
for (y = 0; y < 4; y++) {
printf("%-3d", a[x][y]);
if (a[x][y] > max) max = a[x][y];
j = x, k = y;
}printf("\n");
}
printf("\n最大值:%d\n", max);
printf("最大值坐标:第%d行,第%d列\n", j + 1, k + 1);
}
改善了一下,这样看起来就赏心悦目多了~