输入两个字符,若这两个字符之差是偶数,则输出它们的后继字符,否则输出它们的前驱字符。这里的前驱后继是指输入的两个字符中,较小字符前面的和较大字符后面的那个字符。输出时,若前驱字符或后继字符超过“可印刷字符”的范围,则以整数格式输出,并输出该字符没有可印刷形式的信息。用VC2010工具完成设计、编辑、编译和调式工作。
我的思路是:
1、从输入获取两个字符;
2、将字符较小的存入第一个变量,字符较大的存入第二个变量;
3、判断两个字符之差,如果是偶数,并且后继字符是打印字符,则输出较大字符的后继字符,如果不是可打印字符,则输出后继字符的整数形式,并输出其为无可打印形式;
4、如果不是偶数,并且前驱字符是可打印字符,则输出较小字符的前驱字符,如果不是打印字符,则输出前驱字符的整数形式,并输出其无可打印形式。
代码如下:
参考链接:
#include <stdio.h>
int main(void){
int ch1,ch2;
printf("请输入两个字符:\n");
scanf("%c%c",&ch1,&ch2); // 从输入获取两个字符
// ch1=129;
// ch2=128;
// 将较小字符放置到ch1中,将较大字符放置到ch2中
if(ch1>ch2){
char temp = ch1;
ch1=ch2;
ch2=temp;
}
if((ch1-ch2)%2==0){ // 如果字符之差是偶数
// prhttps://www.cnblogs.com/hyserendipity/p/7376103.html
// http://ascii.wjccx.com/
if(ch2>=31&&ch2<126){ // 并且后继字符是可打印字符,则输出后继字符
printf("%c",ch2+1);
}else{ // 如果后继字符不是可打印字符,则输出其整数形式,并打印没有可打印形式
printf("%d, 该字符没有可印刷形式。\n",ch2+1);
}
}else{ // 如果字符之差不是偶数
if(ch1>=33&&ch1<=127){ // 并且前置字符是可打印字符,则输出前置字符
printf("%c",ch1-1);
}else{ // 如果前驱不是可打印字符,则输出整数形式 ,并打印没有可打印形式
printf("%d, 该字符没有可印刷形式。\n",ch1-1);
}
}
return 0;
}
#include <stdio.h>
#include <ctype.h>
int main() {
char c1, c2;
printf("请输入两个字符:");
scanf("%c%c", &c1, &c2);
if ((c1 - c2) % 2) {
printf("%c", c2 > c1 ? : c2 + 1 : c1 + 1);
} else {
printf("%c", c2 > c1 : c1 - 1 : c2 - 1);
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
void fun(int arr[], int L) {
int temp;
for (int i = 0; i < L; ++i) {
for (int j = i; j < L; ++j) {
if (j == i && arr[i] % 2 == 1) {
break;
}
if (arr[j] % 2 == 1) {
temp = arr[j];
for (int k = j; k > i;--k) {
arr[k] = arr[k - 1];
}
arr[i] = temp;
break;
}
}
}
}
int main() {
int arr[10] = { 1,2,3,4,5,8,9,6,7,10 };
printf("原数组为:\n");
for (int i = 0; i < 10; ++i) {
printf("%d\t", arr[i]);
}
printf("\n");
printf("转换后数组为:\n");
fun(arr, sizeof(arr) / sizeof(arr[0]));
for (int i = 0; i < 10; ++i) {
printf("%d\t", arr[i]);
}
printf("\n");
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
void fun(char c1, char c2) {
char temp;
int differ = c2 - c1;
if (differ < 0) { // 如果c2在c1之前,交换二者的位置
temp = c1;
c1 = c2;
c2 = temp;
differ = -differ;
}
if (differ % 2 == 0) { // 如果差为偶数,输出后继字符
printf("前驱字符是%c,后继字符是%c\n", c1 - 1, c2 + 1);
}
else { // 如果差为奇数,输出前驱字符
printf("前驱字符是%c,后继字符是%c\n", c1 - 1, c2 + 1);
}
}
int main() {
char c1, c2;
printf("请输入两个字符:\n");
scanf("%c %c", &c1, &c2);
fun(c1, c2);
system("pause");
return 0;
}