C语言题(关于数组的),求解,能做几题就做几题。解决方法
C语言题(关于数组的),求解,能做几题就做几题。。。
1.【问题描述】
从键盘输入一个正整数(无符号长整型),将该正整数中的每位数字重新排列,分别组成一个最大数和一个最小数并依次输出,两数间用空格分隔。
【输入形式】
从键盘输入一个无符号长整型整数。
【输出形式】
输出最大数和最小数,两数间用空格分隔,最小数左端的0不应输出。
【样例输入】
47091
【样例输出】
97410 1479
2.
【问题描述】
从键盘输入10个整数,输出这10个数中仅出现一次的数。如果没有这样的数,则输出:None。
【输入形式】
从键盘输入10个整数。
【输出形式】
按出现的次序,输出该10个数中仅出现一次的数。如没有这样的数,则输出:None。
【样例输入】
-12 36 72 36 87 99 87 87 -12 -35
【样例输出】
72 99 -35
【样例输入】
-12 36 72 36 87 99 72 87 -12 99
3.
【问题描述】
编程,输入10个互不相等的正整数存入一维整型数组a中,要求对这10个数作相应的处理并按示例格式依次输出下列结果:
⑴ 最大值和最小值及其所在位置下标;
⑵ 平均值(保留1位小数);
⑶ 大于并最接近平均值的数及其所在位置下标;
⑷ 小于平均值的数的个数。
⑸ 10个数按从小到大的顺序排列。
【输入形式】
从键盘输入10个互不相等的正整数存入一维整型数组a中。
【输出形式】
按样例格式依次输出以下各行:
⑴ 最大值和最小值及其所在位置下标;
⑵ 平均值(保留1位小数);
⑶ 大于并最接近平均值的数及其所在位置下标;
⑷ 小于平均值的数的个数;
⑸ 10个数按从小到大的顺序排列。
【样例输入】
50 60 70 80 90 95 85 75 65 55
【样例输出】
Maximum: a[5]=95
Minimum: a[0]=50
Average: 72.5
Closest to: a[7]=75
Less than: 5
Sort: 50 55 60 65 70 75 80 85 90 95
4.
【问题描述】编程,从键盘按行输入4行5列的二维整型数组a的各元,且各元的值都互不相等,先找到并输出数组a中值最大的元素,输出格式为:a[下标1][下标2]=该数值。然后将数组a中值最大的元素所在的行和列分别与最后一行和最后一列互相交换,再按行输出数组a的各元。
【输入形式】
【输出形式】
【样例输入】
56 78 36 4 19
44 95 72 85 67
-3 32 29 21 47
88 7 66 53 40
【样例输出】
a[1][1]=95
56 19 36 4 78
88 40 66 53 7
-3 47 29 21 32
44 67 72 85 95
6.
【问题描述】编程序,依次从键盘输入一个字符串和不大于该字符串长度的正整数n,将该字符串尾部(右边)的n个字符按原顺序移到该字符串的头部(左边),然后输出处理后的该字符串。
【输入形式】
【输出形式】
【样例输入】
shjFfdui#$ AG&fjk*28(ruiXK@
10
【样例输出
*28(ruiXK@shjFfdui#$ AG&fjk
------解决方案--------------------
第一道 菜鸟 写得比较繁琐
1.【问题描述】
从键盘输入一个正整数(无符号长整型),将该正整数中的每位数字重新排列,分别组成一个最大数和一个最小数并依次输出,两数间用空格分隔。
【输入形式】
从键盘输入一个无符号长整型整数。
【输出形式】
输出最大数和最小数,两数间用空格分隔,最小数左端的0不应输出。
【样例输入】
47091
【样例输出】
97410 1479
2.
【问题描述】
从键盘输入10个整数,输出这10个数中仅出现一次的数。如果没有这样的数,则输出:None。
【输入形式】
从键盘输入10个整数。
【输出形式】
按出现的次序,输出该10个数中仅出现一次的数。如没有这样的数,则输出:None。
【样例输入】
-12 36 72 36 87 99 87 87 -12 -35
【样例输出】
72 99 -35
【样例输入】
-12 36 72 36 87 99 72 87 -12 99
3.
【问题描述】
编程,输入10个互不相等的正整数存入一维整型数组a中,要求对这10个数作相应的处理并按示例格式依次输出下列结果:
⑴ 最大值和最小值及其所在位置下标;
⑵ 平均值(保留1位小数);
⑶ 大于并最接近平均值的数及其所在位置下标;
⑷ 小于平均值的数的个数。
⑸ 10个数按从小到大的顺序排列。
【输入形式】
从键盘输入10个互不相等的正整数存入一维整型数组a中。
【输出形式】
按样例格式依次输出以下各行:
⑴ 最大值和最小值及其所在位置下标;
⑵ 平均值(保留1位小数);
⑶ 大于并最接近平均值的数及其所在位置下标;
⑷ 小于平均值的数的个数;
⑸ 10个数按从小到大的顺序排列。
【样例输入】
50 60 70 80 90 95 85 75 65 55
【样例输出】
Maximum: a[5]=95
Minimum: a[0]=50
Average: 72.5
Closest to: a[7]=75
Less than: 5
Sort: 50 55 60 65 70 75 80 85 90 95
4.
【问题描述】编程,从键盘按行输入4行5列的二维整型数组a的各元,且各元的值都互不相等,先找到并输出数组a中值最大的元素,输出格式为:a[下标1][下标2]=该数值。然后将数组a中值最大的元素所在的行和列分别与最后一行和最后一列互相交换,再按行输出数组a的各元。
【输入形式】
【输出形式】
【样例输入】
56 78 36 4 19
44 95 72 85 67
-3 32 29 21 47
88 7 66 53 40
【样例输出】
a[1][1]=95
56 19 36 4 78
88 40 66 53 7
-3 47 29 21 32
44 67 72 85 95
6.
【问题描述】编程序,依次从键盘输入一个字符串和不大于该字符串长度的正整数n,将该字符串尾部(右边)的n个字符按原顺序移到该字符串的头部(左边),然后输出处理后的该字符串。
【输入形式】
【输出形式】
【样例输入】
shjFfdui#$ AG&fjk*28(ruiXK@
10
【样例输出
*28(ruiXK@shjFfdui#$ AG&fjk
------解决方案--------------------
第一道 菜鸟 写得比较繁琐
- C/C++ code
#include <stdio.h> void main () { unsigned long a; int b[20]={0}; int i=0,j,k,t; scanf("%d",&a); while (a) { b[i]=a%10; a/=10; i++; } printf("\n"); for(j=0;j<i;j++) for (k=0;k<i;k++) if (b[k]<b[j]) { t=b[j]; b[j]=b[k]; b[k]=t; } for (j=0;j<i;j++) { printf("%d",b[j]); } printf(" "); for (j=i-1;j>=0;j--) { if (b[j]==0)continue; printf("%d",b[j]); } printf("\n"); }
------解决方案--------------------
- C/C++ code
/*1. 【问题描述】从键盘输入一个正整数(无符号长整型),将该正整数中的每位数字重新排列,分别组成一个最大数和一个最小数并依次输出,两数间用空格分隔。 【输入形式】从键盘输入一个无符号长整型整数。 【输出形式】输出最大数和最小数,两数间用空格分隔,最小数左端的0不应输出。 【样例输入】47091 【样例输出】97410 1479*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define true 1 #define false 0 typedef unsigned int bool; typedef unsigned long ulong; //用最简单的冒泡排序,由小到大排序 void sort(int *datas,int len) { int i,j,temp; bool change = true; for(i = len -1; i>0 && change; --i) { change = false; for(j = 0;j<i; ++j) { if(datas[j] >datas [j+1]) { temp = datas[j]; datas[j] = datas[j+1]; datas[j+1] = temp; change = true; } } } } int main() { ulong data; ulong max = 0,min = 0; int *datas = NULL; char chs[10]; int i,len; printf("输入一个无符号长整型数: "); scanf("%ul",&data); _ultoa(data,chs,10); //将ulong型转化为字符串 len = strlen(chs); datas = (int*)malloc(sizeof(int) * len); //动态分配内存 for(i = 0;chs[i] != '\0';++i) datas[i] = chs[i] - 48; //将字符转化为数字 存到int型数组中 //对数字内部数字进行排序 sort(datas,len); for(i = 0;i<len;++i) min += (datas[i] * (int)pow(10,len-1-i));//min=1479l l表示是long型 for(i=len -1; i>=0;--i) max += (datas[i] * (int)pow(10,i)); //max = 97410l printf("max = %ul \n min= %ul\n",max,min); system("pause"); return 0; }