牛客网刷题1

目录

1、BC12 字符圣诞树

2、判断是否为字符(其中有说,判断函数的库函数isalpha(),)

3、一组数字转换为ASCII码

4、2的n次方计算(移位运算


1、BC12 字符圣诞树

描述

输入一个字符,用它构造一个边长为5的三角形圣诞树。

数据范围:保证输入的字符是一个 char 类型的值

输入描述:

输入只有一行,一个字符。

输出描述:

该字符构成的三角形圣诞树。

#include <stdio.h>
int main(){
	char x;
	scanf("%c",&x);
	for(int i=1;i<=5;i++){
		for(int j=5-i;j>0;j--){
			printf(" ");
			
		}
		for(int m=1;m<=i;m++)
			printf("%c ",x);
			printf("\n");
	}
}

我觉得强的就是按照规律,利用了for语句,要小心的就是for语句的大括号应该怎么括内容,这个方法是真的好,一行一行去考虑比整个去考虑要好理解。

2、判断是否为字符(其中有说,判断函数的库函数isalpha(),<ctype.h>)

描述

从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。

输入描述:

输入包括一个字符。

输出描述:

输出该字符是字母(YES)或不是(NO)。

实例:

输入 H

输出 YES

#include<stdio.h>
int main()
{
    int ch = 0;
    while ((ch = getchar()) != EOF)
   {        if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
        {
            printf("YES\n");
       }
       else
        {
           printf("NO\n");
       }
        getchar();
    }
 return 0;
}

 这里getchar()是为了处理\n,如果不加就会出现下面的情况

 因为空格也是字符,在你敲键盘的时候。所以有两个结果。


还可以利用库函数isalpha(),来判断是否为字符,首先看一下isalpha()函数的用法条件

要加头文件<ctype.h> 

#include<stdio.h>
#include<ctype.h>
int main()
{
    int ch = 0;
    while ((ch = getchar()) != EOF)
    {
        if (isalpha(ch))//加头文件ctype.h
        {
            printf("YES\n");
        }
        else
        {
            printf("NO\n");
        }
        getchar();//如果不加的话,那输入字符就带人空格
        //了,也可以读入空格那结果就翻倍了,所以这个要加一个读入空格字符
    }
    return 0;
}

这个的EOF是getchar()函数失败的结果。

3、一组数字转换为ASCII码

描述

给定一组数,73,32,99,97,100,32,100,111.

输出相应的ASCII码。

输入描述:

一组数

输出描述:

ASCII码

实例:

输入 无

输出  I cad do

#include<stdio.h>
int main()
{
	int arr[] = { 73,32,99,97,100,32,100,111 };
	int sc = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i < sc; i++)
	{
		printf("%c", arr[i]);
	}
	return 0;
}

这个巧妙的是利用总字节除于第一个字符的字节得到数组中字符的个数

int sc = sizeof(arr) / sizeof(arr[0]);

4、2的n次方计算(移位运算)

描述:

不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算

数据范围:0 \le n \le 31 \0≤n≤31 

输入描述:

一行输入整数n(0 <= n < 31)。

输出描述:

输出对应的2的n次方的结果。

实例:

输入:2

输出:4

#include<stdio.h>
int main()
{
    int n=0;
    while((scanf("%d",&n))!=EOF)
    {
        printf("%d",1<<n);
        return 0;
    }
}

这里要讲到这个移位运算       

怎么说呢?就是一个让它在位上移动(移动的是2进制的位),用一个例子来说明吧!                                                                                   

 

 开学几天,寒假本来说练题,然后有点玩过头了,我的笔记还没带,年前练的,感觉都忘得差不多了,哎,刚开学,数据库,计组,单片机刚开始让我觉得有点....,罢了 还是慢慢来吧!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白小白,一定发财。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值