输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
在一行中输出逆序后的字符串。
#include <stdio.h>
#include <stdlib.h>
# define MAX 80
int main(int argc, char *argv[])
{
int i, j;
char ch, a[MAX];
i = 0;
while (ch = getchar())
{
if (ch == '\n')
{
break;
}
a[i] = ch;
i++;
}
for (j = i - 1; j >= 0; j--)
{
printf("%c", a[j]);
}
return 0;
}
本题要求编写程序,从给定字符串中查找某指定的字符。
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。
#include <stdio.h>
#include <stdlib.h>
# define MAX 80
int main(int argc, char *argv[])
{
int i, t;
char n, ch, a[MAX];
i = 0;
t = 0;
scanf("%c", &n);
getchar();
while (ch = getchar())
{
a[i] = ch;
i++;
if (ch == '\n')
{
break;
}
}
for (i = 0; a[i] != '\n'; i++)
{
if (a[i] == n)
{
t = i;
}
}
if (t == 0)
{
printf("Not Found");
}
else
{
printf("index = %d", t);
}
return 0;
}
为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。
输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。
输出加密后的结果字符串。
#include <stdio.h>
#include <stdlib.h>
# define MAX 80
int main(int argc, char *argv[])
{
int offset, i;
char a[MAX], ch;
i = 0;
while ((ch = getchar()) != '\n')
{
a[i] = ch;
i++;
}
scanf("%d", &offset);
for (i = 0; a[i] != '\0'; i++)
{
if (a[i] >= 'A' && a[i] <= 'Z')
{
if (offset >= 0)
{
a[i] = 'A' + (a[i] - 'A' + offset) % 26;
}
else
{
a[i] = 'A' + (a[i] - 'A' + offset + 26) % 26;
}
}
else if (a[i] >= 'a' && a[i] <= 'z')
{
if (offset > 0)
{
a[i] = 'a' + (a[i] - 'a' + offset) % 26;
}
else
{
a[i] = 'a' + (a[i] - 'a' + offset + 26) % 26;
}
}
}
for (i = 0; a[i] != '\0'; i++)
{
printf("%c", a[i]);
}
return 0;
}
本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“Not Found”。
输入为一个以回车结束的字符串(少于80个字符)。
按照输入的顺序在一行中输出所出现过的大写英文字母,每个字母只输出一遍。若无大写英文字母则输出“Not Found”。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
# define MAX 80
int main(int argc, char *argv[])
{
int i, j, k, x, y;
char a[MAX], b[MAX], ch;
memset(b, 0, sizeof(b));
i = 0;
j = 0;
k = 0;
x = 0;
y = 0;
while ((ch = getchar()) != '\n')
{
a[i] = ch;
i++;
}
for (i = 0; a[i] != '\0'; i++)
{
if (a[i] >= 'A' && a[i] <= 'Z')
{
for (k = 0; b[k] != '\0'; k++)
{
if (a[i] == b[k])
{
y = 1;
break;
}
}
if (y == 0)
{
b[j] = a[i];
printf("%c", a[i]);
j++;
x = 1;
}
y = 0;
}
}
if (x == 0)
{
printf("Not Found");
}
return 0;
}
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入是一个以回车结束的非空字符串(少于80个字符)。
输出去重排序后的结果字符串。
#include <stdio.h>
#include <stdlib.h>
# define MAX 80
int main(int argc, char *argv[])
{
int i, k, x, y, j;
char a[MAX], b[MAX], ch, min;
x = 0;
for (i = 0; (a[i] = getchar()) != '\n'; i++)
{
;
}
a[i] = '\0';
for (k = 0; a[k] != '\0'; k++)
{
min = 127;
for (i = 0; a[i] != '\0'; i++)
{
y = 0;
for (j = 0; j < x; j++)
{
if (a[i] == b[j])
{
y = 1;
break;
}
}
if (y != 1 && min > a[i])
{
min = a[i];
}
}
if (min != 127)
{
printf("%c", min);
b[x] = min;
x++;
}
}
return 0;
}