1、选择法排序
题目: 本题要求将给定的n个整数从大到小排序后输出。
输入格式: 输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
输出格式: 在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
输入样例:
4
5 1 7 6
输出样例:
7 6 5 1
代码
#include<stdio.h>
int main()
{
int i,n,b,j;
int a[10];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
for(j=0;j<n-1;j++){
if(a[j]>a[j+1]){
b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
}
}
printf("%d",a[n-1]);
for(i=n-2;i>=0;i--){
printf(" %d",a[i]);
}
return 0;
}
2、求一批整数中出现最多的个位数字
题目: 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。
输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。
输出格式: 在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。
输入样例:
3
1234 2345 3456
输出样例:
3: 3 4
代码1
#include<stdio.h>
int main()
{
int i,N,digit=0,sum,number,j;
int a[10];
scanf("%d",&N);
for(i=0;i<10;i++){
a[i]=0;
}
for(j=1;j<=N;j++){
scanf("%d",&number);
while(number){
digit=number%10;
a[digit]++;
number=number/10;
for(i=1;i<10;i++){
if(digit==i){
a[i]++;}}
}
}
if(number==0){
a[0]++;
}
sum=0;
for(i=1;i<10;i++){
if(a[i]>sum){
sum=a[i];
}
}
printf("%d:",sum/2);
for(i=0;i<10;i++){
if(sum==a[i]){
printf(" %d",i);
}
}
return 0;
}
代码2
#include<stdio.h>
int main() {
int n,i;
int number[10]={0};
int max = 0;
scanf("%d", &n);
for (i=0; i 0) {
number[a%10]++;
a /= 10;
}
}
for (i=0; i<10; i++) {
if (max < number[i]) {
max = number[i];
}
}
printf("%d:", max);
for (i=0; i<10; i++) {
if (max == number[i]) {
printf(" %d",i);
}
}
return 0;
}
3、判断上三角矩阵
题目: 上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵。
输入格式: 输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。
输出格式: 每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。
输入样例:
2
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2
输出样例:
YES
NO
代码
#include<stdio.h>
int main()
{
int i,n,T,j,k,flag;
int a[10][10];
scanf("%d",&T);
for(i=1;i<=T;i++){
flag=0;
scanf("%d",&n);
for(j=0;j<n;j++){
for(k=0;k<n;k++){
scanf("%d",&a[j][k]);
if(j>k){
if(a[j][k]!=0){
flag=1;
}
}
}
}
if(flag==0){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}