✨✨✨【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(二)✨✨✨

🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷


🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷🐷


💚BC6、小飞机

描述:

KiKi学会了printf在屏幕输出信息,他想输出一架小飞机。请帮他编写程序输出这架小飞机

输入描述:

输出描述:

     ** 
     **    
************
************
    *  *    
    *  *    

代码:

//方法一
#include <stdio.h>
int main()
{
	printf("     **     \n");
	printf("     **     \n");
	printf("************\n");
	printf("************\n");
	printf("    *  *    \n");
	printf("    *  *    \n");

	return 0;
}

//方法二
#include <stdio.h>
int main()
{
	printf("     **     \n     **     \n************\n************\n    *  *    \n    *  *    \n");

	return 0;
}

结果:

🧡BC8、十六进制转十进制

描述:

BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少

输入描述:

输出描述:

十六进制整数ABCDEF对应的十进制整数,所占域宽为15

备注:

printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数

代码:

#include <stdio.h>
int main()
{
	printf("%15d\n", 0xABCDEF);

	return 0;
}

结果:

💛BC9、printf的返回值

描述:

KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出printf(“Hello world!)的返回值吗?

输入描述:

输出描述:

包括两行:
第一行为“Hello world!”
第二行为printf(“Hello world!)调用后的返回值

代码:

//printf函数 返回值为打印的字符数,如果发生错误,则返回负值
#include <stdio.h>
int main()
{
	int ret = printf("Hello world!\n"); 
	printf("%d\n", ret);

	return 0;
}
//如果这样去写,那么\n也作为一个字符,返回值就在原来的基础上多加了1

//方法一
#include <stdio.h>
int main()
{
	int ret = printf("Hello world!"); 
	printf("\n");
	printf("%d\n", ret);

	return 0;
}

//方法二
#include <stdio.h>
int main()
{
	int ret = printf("Hello world!"); 
	printf("\n%d\n", ret);

	return 0;
}

//方法三
#include <stdio.h>
int main()
{
	printf("\n%d\n", printf("Hello world!"));

	return 0;
}

结果:

扩展:

#include <stdio.h>
int main()
{
	printf("%d", printf("%d", printf("%d", 43)));

	return 0;
}

💙BC11、学生基本信息输入输出

描述:

依次输入一个学生的学号,以及3科(C语言,数学,英语)成绩,在屏幕上输出该学生的学号,3科成绩

输入描述:

学号以及3科成绩,学号和成绩之间用英文分号隔开,成绩之间用英文逗号隔开

输出描述:

学号,3科成绩,输出格式详见输出样例

示例:

输入:
17140216;80.845,90.55,100.00
复制
输出:
The each subject score of  No. 17140216 is 80.85, 90.55, 100.00.

代码:

//小数在内存中有可能不能精确保存,四舍五入的精度不一样
//这里我们为了题目要求改为float
//用.2指定小数点后面位数为2位
#include <stdio.h>
int main()
{
	int num = 0;
	float c_score = 0.0;
	float math_score = 0.0;
	float eng_score = 0.0;
	scanf("%d;%f,%f,%f", &num, &(c_score), &(math_score), &(eng_score));
	printf("The each subject score of  No. %d is %.2f, %.2f, %.2f.\n", num, c_score, math_score, eng_score);

	return 0;
}

结果:

💜BC35、判断字母

描述:

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

输入描述:

多组输入,每行输入包括一个字符

输出描述:

针对每行输入,输出该字符是字母(YES)或不是(NO)

示例:

输入:
H
9

输出:
YES
NO

代码:

//int getchar( void ); getchar返回类型位int 所以定义一个int类型的数据
#include <stdio.h>
int main()
{
    int ch = 0;
    
    while ((ch = getchar()) != EOF)
    {
        getchar();//处理\n(回车)
        if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
        {
            printf("YES\n");
        }
        else
        {
            printf("NO\n");
        }
    }

    return 0;
}

//利用库函数
//isalpha库函数用来专门判断一个字符是不是字母的
//是字母返回非0的值
//不是字母返回0
#include <stdio.h>
#include <ctype.h>
int main()
{
    int ch = 0;
    
    while ((ch = getchar()) != EOF)
    {
        getchar();//处理\n(回车)
        if (isalpha(ch))
        {
            printf("YES\n");
        }
        else
        {
            printf("NO\n");
        }
    }

    return 0;
}

结果:

扩展:

注意点:

  • 循环输入多组数据
  • 需要用getchar()吃掉\n(回车),不然会将回车读入“ch”中从而显示NO


🤎BC12、字符金子塔

描述:

输入一个字符,用它构造一个三角形金字塔

输入描述:

输入只有一行,一个字符

输出描述:

该字符构成的三角形金字塔

示例:

输入:
1

输出:
    1
   1 1
  1 1 1
 1 1 1 1
1 1 1 1 1

代码:

#include <stdio.h>
int main()
{
    //输入一个字符
    int ch = 0;
    ch = getchar();
    //确定打印几行
    int i = 0;
    for (i = 0; i < 5; i++)
    {
        //每行打印的内容
        int j = 0;
        //打印空格
        for (j = 0; j < 4 - i; j++)
        {
            printf(" ");
        }
        //打印字符
        for (j = 0; j <= i; j++)
        {
            printf("%c ", ch);
        }
        printf("\n");
    }

    return 0;
}

结果:

🖤BC13、ASCII码

描述:

BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,转换以下ASCII码为对应字符并输出他们。

73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33

输入描述:

输出描述:

转换输出题目中给出的所有ASCII到对应的字符

代码:

#include <stdio.h>
int main()
{
	char arr[] = { 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33 };
	//通过计算得出元素的个数
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	//遍历整个数组
	for (i = 0; i < sz; i++)
	{
		printf("%c", *(arr + i));
	}

	return 0;
}

结果:

💚BC14、出生日期输入输出

描述:

输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出

输入描述:

输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符

输出描述:

三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0

示例:

输入:20130225 

输出:year=2013
     month=02
     date=25    

备注:

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

代码:

#include <stdio.h>
int main()
{
	int year = 0;
	int mouth = 0;
	int date = 0;
	scanf("%4d%02d%02d", &year, &mouth, &date);
	printf("year=%4d\n",year);
	printf("month=%02d\n",mouth);
	printf("date=%02d\n",date);

	return 0;
}

结果:

扩展:

  • %m格式控制可以指定输入域宽,输入数据域宽(列数)
  • printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0


🧡BC29、2的二次方计算

描述:

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

输入描述:

多组输入,每一行输入整数n(0 <= n < 31

输出描述:

针对每组输入输出对应的2的n次方的结果

示例:

输入:
    2
    10

输出:
    4
    1024 

代码:

#include <stdio.h>
int main()
{
	int n = 0;
	//整型多组输入
	while (scanf("%d", &n) != EOF)
	{
	//2的n次方计算
		printf("%d\n", 1 << n);
	}

	return 0;
}

结果:

扩展:

💛BC15、按照格式输入并交换输出

描述:

输入两个整数,范围-2^31~2^31-1,交换两个数并输出

输入描述:

输入只有一行,按照格式输入两个整数,范围,中间用“,”分隔

输出描述:

把两个整数按格式输出,中间用“,”分隔

示例:

输入:
a=1,b=2

输出:
a=2,b=1

备注:

如果格式控制串中有非格式字符则输入时也要输入该非格式字符

代码:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int tmp = 0;
	scanf("a=%d,b=%d", &a, &b);
	
	tmp = a;
	a = b;
	b = tmp;
	printf("a=%d,b=%d\n", a, b);

	return 0;
}

结果:

扩展:

💙BC16、字符转ASCII码

描述:

BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,输入一个字符,输出该字符相应的ASCII码

输入描述:

一行,一个字符

输出描述:

一行,输出输入字符对应的ASCII码

示例:

输入:
c

输出:
99

代码:

#include <stdio.h>
int main()
{
	int ch = 0;
	ch = getchar();
	printf("%d\n", ch);

	return 0;
}

结果:

💜BC17、计算机表达式的值

描述:

请计算表达式“(-8+22)×a-10+2”,其中,a = 40,c = 212

输入描述:

输出描述:

(-8+22)×a-10+2计算之后的结果,为一个整数

代码:

#include <stdio.h>
int main()
{
	int a = 40;
	int c = 212;
	printf("%d\n", (-8 + 22) * a - 10 + c / 2);

	return 0;
}

结果:

🤎BC18、计算机带余除法

描述:

给定两个整数a和b (0 < a,b < 10,000),计算a除以b的整数商和余数

输入描述:

一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开

输出描述:

一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开

示例:

输入:
15 2

输出:
7 1

代码:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	scanf("%d%d", &a, &b);
	c = a / b;
	d = a % b;
	printf("%d %d\n", c, d);

	return 0;
}

结果:

离开前,别忘了👍关注💡收藏💖
希望本文能够对大家有帮助~!


🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀 往期刷题文章分享🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀

【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(一)

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
以下是符号三角形回溯算法的C语言代码输入输出和解题思路。 ```c #include <stdio.h> #define MAX_N 15 int N; // 三角形边长 char triangle[MAX_N][MAX_N + 1]; // 存储三角形 // 求解符号三角形最大值 int dfs(int i, int j, int sum) { if (i == N) { // 到达三角形底部,返回和 return sum; } // 往下走,选择左边或右边 int left = dfs(i + 1, j, sum + triangle[i][j]); int right = dfs(i + 1, j + 1, sum + triangle[i][j]); // 返回左右两边的最大值 return left > right ? left : right; } int main() { // 读入三角形 scanf("%d", &N); for (int i = 0; i < N; ++i) { scanf("%s", triangle[i]); } // 求解符号三角形最大值并输出 printf("%d\n", dfs(0, 0, 0)); return 0; } ``` 输入格式: 第一行包含一个整数N,表示三角形的边长。 接下来N行,每行包含一个长度为1到N+1的字符串,表示三角形。 输出格式: 一个整数,表示符号三角形的最大值。 解题思路: 符号三角形是一个类似于数塔的问题,只不过塔上的数字变成了符号。我们可以用类似于数塔的递归算法来求解。 假设我们正在处理第i行第j列的符号,当前已经得到的和为sum。我们可以往下走,选择左边或右边,分别得到左边的最大值left和右边的最大值right。那么当前符号的最大值就是sum加上左右两边的最大值的较大值。 最后,当我们到达三角形的底部时,直接返回sum即可。 完整代码了输入输出,可以直接运行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值