C语言初级练习——编写一个乘法表,呈倒三角形、输入一串字符,要求输出这串字符中的数字最多的那段的位置以及这段数字的个数

一、输入一个数,输出一个反序数:

分析:要得到一个数的反序的数,例如输入123输出321,刚开始有可能会想到,直接把这个数取余,然后再去整,最后循环输出余数,虽然这样能得到一样的结果,但最终是输出若干个数,并不是一个数,所以此方法不通。如果要是一个数,那就得把取的那个余数乘10加上当前余数,最后输出

大致是:j=j*10+i%10;

              i/=10;

最后所写成的代码如下:

#include <stdio.h>

int main()
{
    int i,j=0;
	printf("Enter a number:");
	scanf("%d",&i);
	while(i>0)
	{
		j=j*10+i%10;
        i/=10;
	}
	printf("The number is: %d\n",j);
    return 0;
}
二、编写一个乘法表,呈倒三角形具体如下:

i*j   1  2  3  4   5   6   7   8   9
--------------------------------------
 1|  1  2  3  4   5   6   7   8   9
 2|      4  6  8 10 12 14 16 18
 3|          912 15 18 21 24 27
 4|            16 20 24 28 32 36
 5|                 25 30 35 40 45
 6|                      36 42 48 54
 7|                           49 56 63
 8|                                64 72
 9|                                     81

分析:看到这个图我们可以发现大致分4个部分:1.上半表格2.左边表格3.空格4.数字 首先要对齐,就得保证每个输出所占的字节要一样。代码如下:

#include <stdio.h>

int main()
{
    printf("i*j");
    int i,j;
	for(j=1;j<=9;j++)
		printf("%3d",j);
	printf("\n");
	for(j=1;j<=10;j++)
		printf("---");
	printf("\n");
	for(i=1;i<=9;i++)
	{
		printf("%2d|",i);
		for(j=1;j<=9;j++)
		{
			if(j<i)
				printf("   "); 这一段也可以用个另外的for循环来实现,但我感觉没这个必要
			else
				printf("%3d",i*j);
		}
		printf("\n");
	}
    return 0;
}
三、输入一串字符,要求输出这串字符中的数字最多的那段的位置以及这段数字的个数
分析:输入一段字符用数组保存,然后逐一检查,是否是数字,如果是数字,则记录下位置,并记录数字个数,若不是数字,则继续下一步

#include <stdio.h>
int main()
{
	int i=0,location=0,locationmax=0,lengthmax=0,length=0,b=0;
	char a[100];
	printf("input a length:\n");
	scanf("%s",a);
	while(a[i]!='\0')
	{
		if(a[i]>='0'&&a[i]<='9')
    	        {
			if(b==0)
			{
				lo=i+1;
		    	        b=1;
	    	        }
		    	length++;
		}
		else
		{
			if(length>lengthmax)
			{
			    lengthmax=l;
		    	    locationmax=location;
	    	         }
				b=0;
				length=0;
		}
		i++;
	}
        if(length>lengthmax)
	{
		lengthmax=length;
		locationmax=location;
	}
	printf("the max location is %d,max length a=%d\n",locationmax,lengthmax);

    return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值