c语言1.对一个数是否为回文数进行判断 2.对有符号的整数进行反转 3.生成杨辉三角的方法及原理

  1. 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向
    左)读都是一样的整数。
    方法:先定义两个字符数组,然后输入元素进第一个,第二个将第一个的反向存储,最后用strcmp函数进行判断。
#include<stdio.h>
void main() {
	char a[100]={0},b[100]={0};
	int i=0,j=0,n;
	scanf("%s",a);
	n=strlen(a);
	for (i = strlen(a) - 1; i >= 0; i--) {
		b[j++] = a[i];
	}
if (strcmp(a, b) == 0) {
		printf("是回文数\n");
	}
else {
		printf("不是回文数\n");
	}
}

运行结果:在这里插入图片描述
在这里插入图片描述

2.给出一个 32 位的有符号整数,你需要将这个整数每位上的数字进行反转。
在这里插入图片描述
方法:对于一个有符号的整数进行反转则需要对自己定义的字符数组进行一个是否有负号的判断,再来判断是否要不要保留这个第一项。
为了能够实现将一个数组对半交换,必须得要先输入数字储存进事先定义的数组,再用for循环将该数组定义条件i<n/2,如果i<n则会出现完全逆转。最后再将对半交换的数组输出。
代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char a[32],b[32];
    int i,n,t;
    printf("请输入您要输入的数");
    scanf("%s",a);
    n=strlen(a);
    if(a[0]=='-'||a[0]=='+'){
        for(i=1;i<n;i++){
            t=a[i];
            b[i]=a[n-i];
            a[n-i]=t;
        }
}
else {
    for(i=0;i<n;i++){
            t=a[i];
            b[i]=a[n-i-1];
            a[n-i-1]=t;
    }

}
    if(a[0]=='-'||a[0]=='+')
    {
        printf("%c",a[0]);
        for(i=1;i<n;i++){
           printf("%c",b[i]);
           }}
           else{
            for(i=0;i<n;i++){
           printf("%c",b[i]);}}
    return 0;
}

运行结果:在这里插入图片描述

  1. 给定一个非负整数 numRows,生成杨辉三角的前 numRow 行。
    在这里插入图片描述

首先我们依旧用数组的定义,循环来做。这次要注意的是每一行第一项都事先需要进行定义a[200][200]={1},如果没有定义就不能使用杨辉三角的公式第n列第i项=第n-1列第i项+第n-1列第i-1项。其次要注意的是我们需要让用户进行的是正整数的输入,如果输入的是非正整数的话要告知实现该程序的前提是输入正整数。而且特别是要注意这个是典型的for的双重循环。
代码:

#include<stdio.h>
int main()
{
    int i,j,n,a[200][200]={1},k;
    printf("请输入你要的行数");
    scanf("%d",&n);
    if(n<=0||n>200){
        printf("请输入正确的数");
    }
    else
    {
        for(i=1;i<=n;i++){

        for(k=0;k<=n-i;k++)
            printf(" ");
        printf("[");
            for(j=1;j<=i;j++){
                a[i][j]=a[i-1][j-1]+a[i-1][j];
                printf("%d",a[i][j]);
                if(j<i){
                    printf(",");
                }
            }printf("]\n");
        }
    }
    return 0;
}

运行结果:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值