题目描述
有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。
假设数组长度为10,数组中前9个数(这9个数要求从键盘上输入,输入时要满足自小到大的输入顺序)已经按从小到大进行排序。
然后再从键盘上输入一个整数,将此整数插入到前有序的9个数中,使得最终的10个数依然是从小到大有序的。
输入
第一行输入以空格分隔的9个整数数,要求按从小到大的顺序输入。
第二行输入一个整数。
输出
从小到大输出这10个数,每个数一行。
样例输入
1 11 21 31 41 51 61 71 81 45
样例输出
1 11 21 31 41 45 51 61 71 81
解题思路
1.输入数组中的前九个数
2.再输入一个整数
3.通过冒泡排序 定义中间变量temp 依次比较第二次输入的整数和前九个数
代码实现
#include
int main()
{
int a[10];
for(int i = 0; i < 9; i++){
scanf("%d",&a[i]); //输入数组中的前九个数
}
scanf("%d",&a[9]); //再输入一个整数
for(int i = 9; i > 0; i--){
if(a[i]
题目描述
将一个长度为10的整型数组中的值按逆序重新存放。
如:原来的顺序为1,2,3,4,5,6,7,8,9,0,要求改为0,9,8,7,6,5,4,3,2,1
输入
从键盘上输入以空格分隔的10个整数。
输出
按相反的顺序输出这10个数,每个数占一行。
样例输入
1 2 3 4 5 6 7 8 9 0
样例输出
0 9 8 7 6 5 4 3 2 1
解题思路
这个是逆序输出,不用比较大小,直接定义中间变量,然后从右往左排序
代码实现
#include
int main()
{
int a[10];
for (int i = 0; i < 10; i++){
scanf("%d",&a[i]); //输入10个整数,以空格隔开
}
//定义中间变量逆序输出,注意这里i<5,不是10,如果是10,就变成了从小到大排序
for (int i = 0; i < 5; i++){
int temp = a[i];
a[i] = a[9-i];
a[9-i] = temp;
}
for (int i = 0; i < 10; i++){
printf("%d\n", a[i]);
}
return 0;
}
题目描述
按要求输入如下格式的杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
最多输出10层
输入
输入只包含一个正整数n,表示将要输出的杨辉三角的层数。
输出
对应于该输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开。
样例输入
5
样例输出
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
解题思路
杨辉三角形规则
1.首列和每行最后一个都为1:a[i][j]=1
2.每行的第二个元素都是上一行的前一个和后一个元素之和:
a[i][j]=a[i-1][j]+a[i-1][j-1]
代码实现
#include
int main()
{
int n,a[10][10]; //定义输出层数 和一个最多为10层的数组
scanf("%d",&n);
for (int i = 0; i < 10; i++)
{
for (int j = 0; j <= i; j++)
{
if(j==0 || j==i){ //首列和每行最后一个都为1
a[i][j]=1;
}
else{ //每行的第二个元素都是上一行的前一个和后一个元素之和
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i ; j++)
printf("%d\n",a[i][j]);
}
return 0;
}
题目描述
有一行电文,已按如下规律译成密码:
A-->Z a-->z
B-->Y b-->y
C-->X c-->x
...... ......
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。
输入
输入一行密文。
输出
解密后的原文,单独占一行。
样例输入
ZYX123zyx
样例输出
ABC123abc
解题思路
根据ASCII码表中字母序号的大小关系进行思考,设想:
任何一个字母必处于a和z之间
字母a码值=x+1(1即第一位字母) 97=x+1 x=96
字母z码值=x+26(26即第二十六位字母) 122=x+26 x=96
第i位字母码值=x+i
所求转换后字母码值=x+26-i+1=x+27-i = (x+1)+(x+26)-(x+i)
因此可得 a[i]=‘a’+‘z’-a[i]
同理可得大写也是如此
代码实现
#include
int main()
{
char str[50];
gets(str);
for(int i = 0; i<50 ; i++)
{
if(str[i] <= 'z' && str[i] >= 'a')
str[i] = 'a' + 'z' - str[i];
if(str[i] <= 'Z' && str[i] >= 'A')
str[i] = 'A' + 'Z' - str[i];
}
puts(str);
return 0;
}
题目描述
比较两个字符串s1和s2的大小,如果s1>s2,则输出一个正数;若s1=s2,则输出0;若s1 要求:不用strcpy函数;两个字符串用gets函数读入。 例如:"A"与"C"相比,由于"A"<"C",应输出负数,同时由于"A"与"C"的ASCII码差值为2,因此应输出"-2"。 同理:"And"和"Aid"比较,根据第2个字符比较的结果,"n"比"i"大5,因此应该输出"5" 输入 输入2行字符串。 输出 一个整数,表示这两个字符串 比较的差值,单独占一行。 样例输入 样例输出 解题思路 这个是要输出数值,所以不能用strcmp(),用strlen() 代码实现 题目描述 从键盘上输入10个整数,存储在一个长度为10的整型数组中,要求将输入的10个数逆序输出。 如输入为:0,1,2,3,4,5,6,7,8,9 输出为9,8,7,6,5,4,3,2,1,0 输入 10个整数,以空格分隔 输出 将输入的10个整数逆序输出,每个数占一行。 样例输入 样例输出 代码实现 题目描述 Fibonacci数列的特点:第1,2个数为1,1。从第3个数开始,概述是前面两个数之和。即: 要求输出Fibonacci数列的前20个数。 输入 无 输出 Fibonacci数列的前20个数,每个数占一行。 样例输入 无 样例输出 解题思路 1.第一个和第二个都是1 str1[0]=1,str1[1]=1 2.第三个开始,是前两个数之和:str1[i]=str[i-1]+str[i-2](2<=i<20) 代码实现 题目描述 从键盘上输入10个整数,用冒泡法对这10个数进行排序(由小到大)。 输入 以空格分隔的10个整数。 输出 依次输出排好序的10个整数,每个数占一行。 样例输入 样例输出 解题思路 和逆序输出解题思路相同 代码实现 题目描述 将一个2行3列的矩阵(二维数组)行列互换,存储到另一个3行2列的矩阵中。 要求以整型数据为例来解答。 输入 输入2行数据,每行3个整数,以空格分隔。 输出 行列互换后的矩阵,3行,每行2个数据,以空格分隔。 样例输入 样例输出 代码实现 题目描述 从键盘上输入3个字符串,求出其中最大者。 输入 输入3行,每行均为一个字符串。 输出 一行,输入三个字符串中最大者。 样例输入 样例输出 解题思路 strcpy():将后一个字符串复制给前一个字符串 代码实现
And
Aid
5
#include
问题 F: 例题6-1 逆序输出数组元素
0 1 2 3 4 5 6 7 8 9
9
8
7
6
5
4
3
2
1
0
#include
问题 G: 例题6-2 数组求解Fibonacci数列问题
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
#include
问题 H: 例题6-3 冒泡排序
1 3 5 7 9 2 4 6 8 0
0
1
2
3
4
5
6
7
8
9
#include
问题 I: 例题6-4 矩阵转置
1 2 3
4 5 6
1 4
2 5
3 6
#include
问题 J: 例题6-9 字符串求最大值
England
China
America
England
strcmp():比较字符串大小
#include