
🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训 🍉学习方向:C/C++方向 ⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平

前言:上一篇博客带大家刷了一些入门的题目,本篇文章我们将继续练习下面的题目。鉴于博主能力有限,本专栏适用于代码小白刷题,大佬们多多包涵(抱拳)!
像本文这样需要刷的题目量较多的时候,文章中就只放题目的截图啦。

这道题不用多想,严格按照合适去打印就行了。值得注意的是*后边的空格可不可以不打印?可以,只要写上"\n",编译器就会默认后面打印空格。
#include <stdio.h>
int main()
{
printf(" ** \n");
printf(" ** \n");
printf("************\n");
printf("************\n");
printf(" * * \n");
printf(" * * \n");
return 0;
}
本题考查的就是%d的格式控制域宽指定,题目指定宽度m为15,我们就严格按照题目要求来:
#include <stdio.h>
int main()
{
printf("%15d\n",0XABCDEF);
return 0;
}
本题重点在于要严格按照题目要求的格式,输出2行,先打印字符串,再打印字符串长度。这里就要控制好格式,写法相对比较多,博主展示两种:
写法(1):
#include <stdio.h>
int main()
{
int ret = printf("%s","Hello world!");
printf("\n");
printf("%d\n",ret);
return 0;
}写法(2):
#include <stdio.h>
int main()
{
printf("\n%d\n", printf("Hello world!"));
return 0;
}关于函数的参数和返回值,大家可以看看博主之前的文章,也可以去我们的老朋友cpprefrence.c那里去看看,传送门大家直接去本文结尾找上篇文章的链接。就能找到老朋友啦。

这个题的最大坑,也是格式的指定,还有空格的控制,必须和题目要求的输出结果一致,比如:of的后边有2个空格。浮点数打印要指定小数点后边的位数为2位。
#include <stdio.h>
int main()
{
int number = 0;
float score_c = 0.0;
float score_math = 0.0;
float score_Eng = 0.0;
scanf("%d;%f,%f,%f", &number, &score_c, &score_math, &score_Eng);
printf("The each subject score of No. %d is %.2f, %.2f, %.2f.\n", \
number, score_c+0.001, score_math, score_Eng);
return 0;
}
1.、本地是多组输入,一定要注意循环输入的问题;
2.、字符的判断可以自己写,也可以借助于库函数,要熟悉库函数都有哪些。
字符串相关的内容,
字符函数和字符串函数(一):字符分类函数、字符转换函数、strlen的使用和模拟实现、strcpy的使用和模拟实现、strcat的使用和模拟实现、strcmp的使用和模拟实现
字符函数和字符串函数(二):strncpy、strncat、strncmp函数的使用、strstr的使用和模拟实现、strtok函数的使用、strerror函数的使用
写法(1) :
#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;
}写法(2):
int main()
{
int ch = 0;
while((ch=getchar()) != EOF)
{
//使用库函数
if(isalpha(ch))
printf("YES\n");
else
printf("NO\n");
getchar();
}
return 0;
}
每一行的输出是前边空格后边1,本题的难点就是精确的控制空格的个数和1的个数 。
#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;
}

这里得了解清楚ASCII编码,如果采用ASCII编码,每个字符都有一个对应的数字,这个数字被称为这个 字符的ASCII码,如果把这个数字按照%c打印,打印的就是字符。ASCII码博主在之前的文章C语言常见概念、数据类型以及变量的一些重要知识点总结中介绍过,大家可以看看。
#include <stdio.h>
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++)
{
printf("%c",arr[i]);
}
return 0;
}
和第二题同理。本地的难点在于如何按照指定域宽读取数据,如何按照指定格式打印数据。
#include <stdio.h>
int main()
{
int year = 0;
int month = 0;
int date = 0;
scanf("%4d%2d%2d\n",&year,&month,&date);
printf("year=%d\n",year);
printf("month=%02d\n",month);
printf("date=%02d\n",date);
return 0;
}
本题要求多组输入,要使用循环输入,需要注意<<这个移位操作符(左移操作符的使用,左移一位有乘2的效果) ,移位操作符博主在之前的C语言专栏也介绍过了,传送门放在下面了:掌握操作符(一):操作符的分类,二进制和进制转换,原码、反码、补码,移位操作符,位操作符:&、| 、^ 、~,单目操作符,逗号表达式,下标访问[ ]、函数调用()
#include <stdio.h>
int main()
{
int num = 0;
int n = 0;
while(scanf("%d\n",&n)!= EOF)
{
printf("%d\n",1<<n);
}
return 0;
}
本题的关键在于输入和输出格式的控制,如果格式控制串中有非格式字符则输入时也要输入该非格式字符。 输入输出格式可以去看这篇文章——单目操作符++、--的前置后置知识点总结,printf函数的一些知识点
#include <stdio.h>
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",a,b);
return 0;
}
本题非常简单,我们直接按照%d打印,就是字符对应的ASCII码值 。
#include <stdio.h>
int main()
{
char ch = 0;
scanf("%c\n",&ch);
printf("%d\n",ch);
return 0;
}
本题我们按照操作符的优先级直接设计表达式,计算输出就行。对操作符的优先级印象不深的友友们可以去看博主的这篇文章:掌握操作符(二):结构成员访问操作符,操作符的属性:优先级、结合性,表达式求值
#include <stdio.h>
int main()
{
int a = 40;
int c = 212;
int num = (-8+22)*a-10+c/2;
printf("%d\n",num);
return 0;
}
本题也很简单,我们只要掌握%和 /两个操作符的使用,严格按照格式输出就行。 介绍这两个操作符我们在前文中也多次引用:变量的一些知识点整理(续)、算术操作符、赋值操作符:=和复合赋值、单目操作符以及强制类型转换的知识点总结
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
int ret = a/b;
int num = a%b;
printf("%d %d",ret,num);
return 0;
}往期回顾:
结语:本篇文章到这里就结束了,希望对友友们有所帮助。本文的代码相对于之后的代码题还是很简单的,小白也能直接上手操作,后面的代码题难度上整体是逐渐递增的,博主控制了难度,这样友友们能比较丝滑地上手敲下去。