C++ 数组与结构 编程练习
一 回文判断
题目内容:
回文测试:
输入一个30个字符以内的字符串,判断是否位回文,如果是,则打印true;否则打印false;
像“abc”这样的从左往右读与从右往左读一至就是回文。
输入样式:
ayzya
输出样式1:
true
输入样例2
ayzy
输出样例2:
false
/*
* 像"aba"这样的从左往右读与从右往左读一直的就是回文
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//输入样式ayzya
int main()
{
char str[6];
int left, len, right;
printf("请输入字符串:\n");
fgets(str, sizeof(str), stdin); 使用fgets函数安全地读取用户输入(避免gets带来的缓冲区溢出问题)
len = strlen(str);
if (str[len - 1] == '\n')
{
str[len - 1] = '\0';
len--;//调整字符串有效长度
}
bool Flag = true;//初始化标志,表示是回文字符串
left = 0; right = len - 1;// // 分别设置左右指针,初始指向字符串两端
while (left < right)
{
printf("%c%c \n", str[left], str[right]);
if (str[left] != str[right])
{
Flag = false;
break;
}
left++;//左指针向右移动一位
right--;//右指针向左移动一位
}
puts(Flag ? "是回文字符串:ture" : "不是回文字符串:false");
return 0;
}
二 结构排序
题目内容:
书有书名(字符串长度不超过50字节),价格(单精度实数),分类(正整数).
书的结构定义如下:
struct book
{
char name[50];
float price;
int classification;
};
输入n本书(n<=100),及每本书的书名,价格和分类(空格分隔输入数据),请粉笔根据价格递增顺序排序,如果价格相同,则按照书名(ASCII码)递增排序。最后输出排序后的结果,每行一本书详细信息,按照:书名,价格(保留2位小数),分类由逗号分隔。
例子
输入:
3
program 35 1
history 35 2
cloudy-computing 57 1
输出
histor,35.00,2
program.35.00,1
cloudy-computing,57.00,1
三 排序
题目内容:
接受若干非负整数(数据不重复),当个数超过10个或者遇到负数时停止接受,将这几个正整数按升序排列输出,并且奇数在前,偶数在后。输出要求,每个数字后输出空格与其他数字隔开,最后一个数字后也有空格。
输入样例1:
10 9 8 7 6 5 4 3 2 1
输出样例2:
1 3 5 7 9 2 4 6 8 10
输入样例2
2 3 4 5 -1
输出样例2:
3 5 2 4 回车