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+c÷2”,其中,a = 40,c = 212
输入描述:
无
输出描述:
(-8+22)×a-10+c÷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;
}
结果:
离开前,别忘了👍关注💡收藏💖
希望本文能够对大家有帮助~!