C语言刷题训练营-第二讲

BC6-小飞机

https://www.nowcoder.com/practice/5cd9598f28f74521805d2069ce4a108a?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

输出描述:

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include 
int main()
{
    printf("     **\n");
    printf("     **\n");
    printf("************\n");
    printf("************\n");
    printf("    *  *\n");
    printf("    *  *\n");
    return 0;
}

答案解析:

严格按照合适去打印就行了
 


BC8-十六进制转十进制

 https://www.nowcoder.com/practice/33e148570d5c4e728116e2f861638c9c?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking
题目描述
BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。

输入描述:

输出描述:

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

备注:

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

参考代码:

#include 
int main()
{
   printf("%15d\n", 0XABCDEF);
   return 0;
}

答案解析:

用于存放输出数据的宽度称为“域宽”。如果域宽小于被打印数据的宽度,数据通常会在域内右对齐。如果输出值的宽度大于域宽时,域宽是自动增长的

本题考查的就是%d的格式控制域宽指定。
 

BC9-printf函数的返回值

https://www.nowcoder.com/practice/a19ef1d8e55c4cc786f11cbf6b2fde61?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

输出描述:

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

参考代码:

#include 
int main()
{
	int ret = printf("Hello world!");
	printf("\n%d\n",ret);
	return 0;
}
#include 
int main()
{
	printf("\n%d\n", printf("Hello world!"));
	return 0;
}

答案解析:

printf()打印的是输出字符的个数,错误返回负数

本题的重点是要严格按照题目要求的格式,输出2行,先打印字符串,再打印字符串长度。

这里就要控制好格式,写法比较多。
 

BC11-学生基本信息输入输出

https://www.nowcoder.com/practice/58b6a69b4bf943b49d2cd3c15770b9fd?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

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

输出描述:

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

示例1
输入

17140216;80.845,90.55,100.00

输出
The each subject score of  No. 17140216 is 80.85, 90.55, 100.00.
参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include 
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);
	//The each subject score of  No. 17140216 is 80.85, 90.55, 100.00.
	printf("The each subject score of  No. %d is %.2f, %.2f, %.2f.\n", num, c_score, math_score, eng_score);
	return 0;
}

答案解析:

这个题的最大坑,也是格式的指定,还有空格的控制,必须和题目要求的输出结果一致,比如:of 的后边有2个空格。
浮点数打印要指定小数点后边的位数为2位。
 

BC35-判断字母

https://www.nowcoder.com/practice/44d2d63103664913bc243d3836b4f341?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

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

输出描述:

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

示例1
输入

H
9

输出

YES
NO

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include 
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;
}
#define _CRT_SECURE_NO_WARNINGS
#include 
int main()
{
	int ch = 0;
	while ((ch = getchar()) != EOF)
	{
		//判断是不是字母
		if (isalpha(ch))
			printf("YES\n");
		else
			printf("NO\n");
		getchar();
	}
	return 0;
}

代码解析:
1. 本地是多组输入,一定要注意循环输入的问题
2. 字符的判断可以自己写,也可以借助于库函数,要熟悉库函数都有哪些。

BC12-字符金字塔

https://www.nowcoder.com/practice/0fae60c3b5c64699b7c0f031c2187dde?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

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

输出描述:

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

示例1
输入

1

输出

    1
   1 1
  1 1 1
 1 1 1 1
1 1 1 1 1

参考代码:

#define _CRT_SECURE_NO_WARNINGS
#include 
int main()
{
	char num = 0;
	scanf("%c",&num);
	printf("    %c\n",num);
	printf("   %c %c\n", num, num);
	printf("  %c %c %c\n", num, num, num);
	printf(" %c %c %c %c\n", num, num, num, num);
	printf("%c %c %c %c %c\n", num, num, num, num, num);
	return 0;
}

 

答案解析:

每一行的输出是前边空格,后边1
本题的难点就是精确的控制空格的个数和1的个数。
 

BC13-ASCII码

https://www.nowcoder.com/practice/4280d330fe314e8f98cd5c593e3e9190?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述
BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,
转换以下ASCII码为对应字符并输出他们。
73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33

输入描述:

输出描述:

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

参考代码:

#include 
int main()
{
    char arr[] = { 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33 };
    int i = 0;
    //计算数组的元素个数
    int sz = sizeof(arr) / sizeof(arr[0]);
    //循环遍历输出每一个元素
    for (i = 0; i < sz; i++)
    {
        //%c 控制打印字符
        printf("%c", arr[i]);//每个字符不要隔开
    }
    return 0;
}

 
答案解析:
这里得了解清楚ASCII编码,如果采用ASCII编码,每个字符都有一个对应的数字,

这个数字被称为这个字符的ASCII码,如果把这个数字按照%c打印,打印的就是字符。
 

BC14-出生日期输入输出

https://www.nowcoder.com/practice/4a4a9dd1edb6453ba4a0432319200743?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

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

输出描述:

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

示例1
输入

20130225

输出

year=2013
month=02
date=25

备注:

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

参考代码:

#include 
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;
}

答案解析:

本地的难点在于如何按照指定域宽读取数据,如何按照指定格式打印数据。
 

BC29-2的n次方计算

https://www.nowcoder.com/practice/35a1e8b18658411388bc1672439de1d9?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

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

输出描述:

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

示例1
输入

2
10

输出

4
1024

参考代码:

 

#define _CRT_SECURE_NO_WARNINGS
#include 
int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        printf("%d\n", 1 << n);
    }
    return 0;
}

答案解析:

本题为多组输入,要使用循环输入
注意<<(左移操作符的使用,左移一位有乘2的效果)
 

BC15-按照格式输入并交换输出

https://www.nowcoder.com/practice/95eb723a3e854376a7eb6d116cc7d875?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

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

输出描述:

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

示例1
输入

a=1,b=2

输出

a=2,b=1

备注:

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

参考答案:

#include 

int main()
{
   int a = 0;
   int b = 0;
   scanf("a=%d,b=%d", &a, &b);
   int c = a;
   a = b;
   b = c;
   printf("a=%d,b=%d\n",a, b);
}

答案解析:

输入和输出格式的控制,如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
 

BC16-字符转ASCII码

https://www.nowcoder.com/practice/93f4d05a02d9468db424ed4316bfc8fd?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

一行,一个字符。

输出描述:

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

示例1
输入

c

输出

99

参考代码:

#include 
int main()
{
   char ch = 0;
   scanf("%c", &ch);
   printf("%d\n",ch);
   return 0;
}


答案解析:

直接按照%d打印,就是字符对应的ascii码值

 

BC17-计算机表达式的值

https://www.nowcoder.com/practice/58457d27f91043edaf95b6591bb64fd6?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

无。

输出描述:

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

参考代码:

#include 
int main()
{
   int a = 40;
   int c = 212;
   int ret = (-8+22)*a-10+c/2;
   printf("%d\n", ret);
   return 0;
}

答案解析:

按照操作符的优先级直接设计表达式,计算输出就行。
 

BC18-计算带余除法

https://www.nowcoder.com/practice/34d3911bf2fd48a285f6396e886a1259?tpId=107&rp=1&ru=%2Fta%2Fbeginner-programmers&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking

题目描述

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

输入描述:

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

输出描述:

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

示例1
输入

15 2

输出

7 1

参考代码:

#include 
int main()
{
   int a = 0;
   int b = 0;
   scanf("%d %d", &a, &b);
   int m = a/b;
   int n = a%b;
   printf("%d %d\n", m, n);
   return 0;
}

答案解析:

掌握 % 和 / 两个操作符的使用,按照格式输出就行。
 

 

你可能感兴趣的:(C语言编程入门之刷题篇)