1190: 习题6-2 排序
题目描述
从键盘上输入10个整数,按照从小到大的顺序对这10个数排序。
采用选择法进行排序。
输入
输入以空格分隔的10个整数
输出
按从小到大排好序的10个数,每个数一行。
样例输入 Copy
1 8 6 3 4 2 9 0 7 5
样例输出 Copy
0 1 2 3 4 5 6 7 8 9
#include<stdio.h>
int main()
{
int i,j,b[10],t;
for(i=0;i<10;i++)
scanf("%d",&b[i]);
for(i=0;i<10;i++)
for(j=0;j<10;j++)
{
if(b[j]>b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
for(i=0;i<10;i++)
printf("%d\n",b[i]);
}
1191: 习题6-3 求整型矩阵对角线元素之和
时间限制: 1 Sec 内存限制: 12 MB
提交: 41 解决: 35 外部导入
题目描述
求一个3×3的整型矩阵对角线元素之和。
输入
从键盘上输入3×3的整型矩阵,要求输入3行,每行3个整数,每个数之间以空格分隔
输出
对角线元素之和,行尾换行。
样例输入 Copy
1 2 3 4 5 6 9 8 7
样例输出 Copy
13
提示
3×3的整型矩阵用一个3行3列的二维整型数组来描述。
若二维整型数组定义为int a[3][3],则对角线元素即为a[i][i],i=0, 1, 2
#include<stdio.h>
int main()
{
int a[3][3],s,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
s=a[0][0]+a[1][1]+a[2][2];
printf("%d",s);
}
1192: 习题6-4 有序插入
时间限制: 1 Sec 内存限制: 12 MB
提交: 70 解决: 38 外部导入
题目描述
有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入到数组中。
假设数组长度为10,数组中前9个数(这9个数要求从键盘上输入,输入时要满足自小到大的输入顺序)已经按从小到大进行排序。
然后再从键盘上输入一个整数,将此整数插入到前有序的9个数中,使得最终的10个数依然是从小到大有序的。
输入
第一行输入以空格分隔的9个整数数,要求按从小到大的顺序输入。
第二行输入一个整数
输出
从小到大输出这10个数,每个数一行。
样例输入 Copy
1 11 21 31 41 51 61 71 81 45
样例输出 Copy
1 11 21 31 41 45 51 61 71 81
#include<stdio.h>
int main()
{
int a[10],i=0,t,n;
while(i<9)
{
scanf("%d",&a[i]);
i++;
}
scanf("%d",&n);
for(i=0;i<10;i++)
if(a[i]>n)
{
t=a[i];
a[i]=n;
n=t;
}
a[9]=n;
for(i=0;i<10;i++)
printf("%d\n",a[i]);
return 0;
}
1193: 习题6-5 数组元素逆置
时间限制: 1 Sec 内存限制: 12 MB
提交: 37 解决: 35 外部导入
题目描述
将一个长度为10的整型数组中的值按逆序重新存放。
如:原来的顺序为1,2,3,4,5,6,7,8,9,0,要求改为0,9,8,7,6,5,4,3,2,1
输入
从键盘上输入以空格分隔的10个整数。
输出
按相反的顺序输出这10个数,每个数占一行。
样例输入 Copy
1 2 3 4 5 6 7 8 9 0
样例输出 Copy
0 9 8 7 6 5 4 3 2 1
#include<stdio.h>
int main()
{
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=9;i>=0;i--)
printf("%d\n",a[i]);
return 0;
}
1194: 习题6-6 杨辉三角
时间限制: 1 Sec 内存限制: 12 MB
提交: 311 解决: 214 外部导入
题目描述
按要求输出如下格式的杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
最多输出10层。
输入
输入只包含一个正整数n,表示将要输出的杨辉三角的层数。
输出
对应于该输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开。
样例输入 Copy
5
样例输出 Copy
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
#include<stdio.h>
int main()
{
int n,i,j,a[10][10];
scanf("%d",&n);
for(i=0;i<n;i++)
{
a[i][i]=1;
a[i][0]=1;
}
if(n<=10)
{
for(i=2;i<n;i++)
for(j=1;j<i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
if(j<i)
printf("%d ",a[i][j]);
else
printf("%d\n",a[i][j]);
}
}
}
1195: 习题6-9 折半查找
时间限制: 1 Sec 内存限制: 12 MB
提交: 91 解决: 38 外部导入
题目描述
有10个整数已按从小到大的顺序排好序,存储在一个数组中,再输入一个数,要求用折半查找法找出该数是数组中的第几个元素(输出该元素的下标即可)。如果该数不在数组中,则输出"Not exist!"
输入
输入数据共2行
第一行10个整数,按从小到大的顺序输入,中间以空格分隔。
第二行1个整数
输出
折半查找所得该数所在数组中的元素下标,单独占一行。
若该数不存在,则输出一行信息 "Not exist!"
样例输入 Copy
1 2 3 4 5 6 7 8 9 10 3
样例输出 Copy
2
#include<stdio.h>
int main()
{
int a[10],s,i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&s);
for(i=0;i<10;i++)
{
if(a[i]==s)
{printf("%d",i);break;}
else
if(i==9)
printf("Not exist!");
}
}
1196: 习题6-10 字符统计
时间限制: 1 Sec 内存限制: 12 MB
提交: 47 解决: 30 外部导入
题目描述
有一篇文章,共3行文字,每行不到80个字符。要求分别统计每行中字母、数字、空格以及其他字符的个数。
输入
从键盘上输入3行字符,每行不到80个字符。
输出
输出信息占3行
每行输出4个整数,分别表示该行字符中字母、数字、空格以及其他字符的个数,数字之间以空格分隔。
样例输入 Copy
I am a student! I'm 18 years old. One Two Three 1 2 3!@#
样例输出 Copy
11 0 3 1 10 2 3 2 11 3 5 3
#include<stdio.h>
int main()
{
char a[3][80];
int i,j;
int keng=0,shu=0,other=0,zi=0;
gets(a[0]);
gets(a[1]);
gets(a[2]);
for(j=0;j<3;j++)
{
for(i=0;a[j][i]!='\0';i++)
{if(a[j][i]==' ')
keng++;
else
{
if(a[j][i]>='0'&&a[j][i]<='9')
shu++;
else if((a[j][i]>='a'&&a[j][i]<='z')||(a[j][i]>='A'&&a[j][i]<='Z'))
zi++;
else
other++;
}
}
printf("%d %d %d %d\n",zi,shu,keng,other);
zi=0;shu=0;keng=0;other=0;
}
}
1197: 习题6-12 解密
时间限制: 1 Sec 内存限制: 12 MB
提交: 343 解决: 215 外部导入
题目描述
有一行电文,已按如下规律译成密码:
A-->Z a-->z
B-->Y b-->y
C-->X c-->x
...... ......
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求根据密码译回原文,并输出。
输入
输入一行密文
输出
解密后的原文,单独占一行。
样例输入 Copy
ZYX123zyx
样例输出 Copy
ABC123abc
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int i,l;
char a[100];
gets(a);
l=strlen(a);
for(i=0;i<l;i++)
{
if(((int)a[i])>=65&&((int)a[i]<=90))
a[i]=(char)(155-(int)a[i]);
else
if(((int)a[i])>=97&&((int)a[i]<=122))
a[i]=(char)(219-(int)a[i]);
}
puts(a);
}
1198: 习题6-13 字符串比较
时间限制: 1 Sec 内存限制: 12 MB
提交: 47 解决: 30 外部导入
题目描述
比较两个字符串s1和s2的大小,如果s1>s2,则输出一个正数;若s1=s2,则输出0;若s1<s2,则输出一个负数。
要求:不用strcpy函数;两个字符串用gets函数读入。
例如:"A"与"C"相比,由于"A"<"C",应输出负数,同时由于"A"与"C"的ASCII码差值为2,因此应输出"-2"。
同理:"And"和"Aid"比较,根据第2个字符比较的结果,"n"比"i"大5,因此应该输出"5"
输入
输入2行字符串
输出
一个整数,表示这两个字符串 比较的差值,单独占一行。
样例输入 Copy
And Aid
样例输出 Copy
5
#include<stdio.h>
#include<string.h>
int main()
{
int i,num;
char s1[20],s2[20];
gets(s1);
gets(s2);
if(strlen(s1)==strlen(s2))
{
for(i=0;;i++)
if(s1[i]!=s2[i])
break;
}
num=(int)s1[i]-(int)s2[i];
printf("%d",num);
}
1199: 例题6-1 逆序输出数组元素
时间限制: 1 Sec 内存限制: 12 MB
提交: 46 解决: 34 外部导入
题目描述
从键盘上输入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个整数逆序输出,每个数占一行。
样例输入 Copy
0 1 2 3 4 5 6 7 8 9
样例输出 Copy
9 8 7 6 5 4 3 2 1 0
#include<stdio.h>
int main()
{
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=9;i>=0;i--)
printf("%d\n",a[i]);
return 0;
}