#1C OJ练习一#

1.大小写转换

1°题目链接

链接

2°思路

多组输入 要用循环实现 EOF为文件结束标志

大写转小写 相当于大写字母对应的ASCII码值加32就是小写字母的ASCII码值

注意最后回车的时候 回车也算字符 要用getchar()去处理回车

3°实现

#include<stdio.h>
int main()
{
	int ch = 0;//整型 
	while ((ch = getchar()) != EOF)//end of file--文件结束标志 一个文件的末尾 
	{
		printf("%c\n", (ch + 32));
		getchar();//\n处理 
	}
	return 0;//ctrl z 结束程序 
}
//getchar() 接受字符    输入缓冲区(\n把A送入缓冲区)                   键盘 
//                      A\n两个字符 只读一个字符
//                      先拿A 再拿\n 等于\n也会打印

4°运行结果

2.字符金字塔

1°题目链接

链接

2°思路

第一行打印4个空格 一个1 一个空格

第二行打印3个空格 一个1 一个空格 一个1 一个空格

可以看成两部分

前面的空格为第一部分

后面的1和空格为第二部分

第一部分

循环4次 3次 2次 1次 0次

第二部分

循环1次 2次 3次 4次 5次

首先5行要循环5次 我们定义i=0开始循环

在内部的第一部分我们定义j=0开始循环 j<5-i-1

(第一次i=0 循环4次 随后循环次数不断减1 因为i会不断++)

在内部的第二部分j=0开始 j<=i即可

(第一次j=0 i=0循环1次 随后循环次数不断加1 因为i会不断++)

最后打印完换行

3°实现

#include <stdio.h>
int main()
{
    char ch = 0;
    scanf("%c", &ch);
    int i = 0;
    for (i = 0; i < 5; i++)
    {
        //处理一行
        //空格
        int j = 0;
        for (j = 0; j < 5 - i - 1; j++)
        {
            printf(" ");
        }
        //数字
        for (j = 0; j <= i; j++)
        {
            printf("%c ", ch);
        }
        printf("\n");
    }
    return 0;
}

4°运行结果

3.出生日期输入输出

1°题目链接

链接

2°思路

关键在于输入2之后 怎么输出02

备注中写道:

通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0

3°实现

#include <stdio.h>
int main()
{
    int year = 0;
    int month = 0;
    int date = 0;
    scanf("%4d%2d%2d", &year, &month, &date);//%4d就是读取4位整数
    printf("year=%d\n", year);
    printf("month=%02d\n", month);//输出不够2位时,左边拿0填充
    printf("date=%02d\n", date);
    return 0;
}

4°运行结果

4.2的n次方

1°题目链接

链接

2°思路

通过<<操作符

按二进制位移动

移动一位就相当于×2

从1开始往走移动n位

多组输入加上循环就可以实现

3°实现

#include <stdio.h>
int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        printf("%d\n", 1 << n);//1的二进制向左移动n位 
    }
    return 0;
}

4°运行结果

5.变种水仙花数

1°题目链接

链接

2°思路

要得到所有的拆分情况

比如说1234

1234/10=123 1234%10=4

1234/100=12 1234%100=34

1234/1000=1 1234%1000=234

除10和模10

再把除数×10写出循环就可以了

四位数除数最大1000

五位数除数最大10000

用一个变量存起来

最后加上判断条件打印就可以了

3°实现

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 10000; i <= 99999; i++)
	{
		int j = 0;
		int sum = 0;
		for (j = 10; j <= 10000; j *= 10)
		{
			sum += (i / j) * (i % j);
		}
		if (sum == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

4°运行结果

#1C OJ练习一#完

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力的小恒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值