1. 输入一个长整型的数,从低位起取出奇数位组成一个新的数输出。
思路:
定义一个字符串,存这个数,逆置,从0位开始,取模2输出,正好是奇数位。
/**
* 03.03 10:51
*
**/
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main() {
char n[35];
scanf("%s", n);
int len = strlen(n);
//逆置字符串
for (int i = 0; i <= len/2; i++){
char temp = n[i];
n[i] = n[len - i - 1];
n[len - i - 1] = temp;
}
// 取模2输出
for (int i = 0; i < len; i++){
if(i % 2 == 0){
printf("%c", n[i]);
}
}
return 0;
}
2. 字符串排序 浙大版C语言习题8-7
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。
思路:
用二维数组存n个字符串,然后根据冒牌排序算法,一趟一趟的遍历每个字符串,用到了strcmp函数和strcpy函数。
输入格式:
输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。
输出格式:
按照以下格式输出排序后的结果:
After sorted:
每行一个字符串
输入样例:
red yellow blue green white
输出样例:
After sorted:
blue
green
red
white
yellow
/**
* 03.03 11:07
*
**/
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 110;
int main() {
int n = 5;
char str[5][85];
//scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%s", str[i]);
}
// 冒泡排序
for (int i = 1; i < n; i++){
for (int j = 0; j < n - i; j++){
char temp[85];
// 如果strcmp函数的返回值>0,说明前面的比后面的大
if(strcmp(str[j], str[j+1]) > 0){
strcpy(temp, str[j]);
strcpy(str[j], str[j + 1]);
strcpy(str[j + 1], temp);
}
}
}
for (int i = 0; i < n; i++){
printf("%s\n", str[i]);
}
return 0;
}