反向字符串模式的 C 程序
给定一个字符串 str,我们的任务是打印其反向模式。该模式将以反向顺序递增,当字符串完成后,用 '*' 填充剩余的位置。
比如我们输入一个字符串 “abcd”,现在在第一行我们将打印 “a”,然后在下一行我们将打印 “cb”,然后在第三行我们将打印 “**d”。
示例
Input: str[] = { “abcd” }
Output: a
c b
* * d解释 −
- 在第一行打印 1 个字符
- 在第二行按反向顺序打印 2 个字符
- 在第三行按反向顺序打印 3 个字符,如果字符串不足 3 个,则打印字符并用 * 填充空格。
Input: str[] = {“tutorialspoint”}
Output:
下面使用的方法是 −
- 我们将从 i=0 开始遍历字符串,并且会检查 i<n && k<(n-i)*2 是否为真
- 然后我们将获取一个变量 k 并将 k 设置为 ((i*(i+1))/2)-1
- 我们将检查 If k >= n-1 是否成立,如果成立,将打印 "* ",否则将按反向顺序打印字符串的值
算法
Start In function int reverse_it(char str[], int n) Step 1-> Declare and Initialize i, j=0 , k=0 Step 2-> Loop For i=0 and i<n && k<(n-i)*2 and i++ Set k as ((i*(i+1))/2)-1 Loop For j=0 and j<i && k<(n-i)*2 and j++ If k >= n-1 then, Print "* " Else Print "%c ",str[k] Decrement k by 1 End loop Print new line End loop In Function int main(int argc, char const *argv[]) Step 1-> Declare and initialize string str[] Step 2-> Declare and Initialize size as sizeof(str)/sizeof(str[0]) Step 3-> Call function reverse_it(str, size); Stop
示例
#include <stdio.h>
int reverse_it(char str[], int n) {
int i, j=0 , k=0;
for(i=0; i<n && k<(n-i)*2; i++) {
//Assigning k
k = ((i*(i+1))/2)-1;
for(j=0; j<i && k<(n-i)*2; j++) {
//will check if k is greater than the total number of characters
//then we will print * for filling the extra characters
if(k >= n-1)
printf("* ");
//print the string in reverse order
else
printf("%c ",str[k]);
k--;
}
//for line break after reverse sequence
printf("
");
}
return 0;
}
//Main Function
int main(int argc, char const *argv[]) {
char str[] = {"tutorialspoint"};
int size = sizeof(str)/sizeof(str[0]);
reverse_it(str, size);
return 0;
}输出
如果运行上述代码,它将生成以下输出 −

广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP