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;
}