北理工C语言3(2)

2019-04-23 10:14

printf(\ } }

3-12. 编程,按学生的序号输入10名学生的成绩,按照分数由高到低的顺序输出学生的名次、

序号和成绩,要求成绩相同的学生具有相同的名次。 结果:输入:2 4 6 8 9 23 43 21 9 4 输出: 1: 7 43 2: 6 23 3: 8 21 4: 5 9 4: 9 9 5: 4 8 6: 3 6 7: 2 4 7: 10 4 8: 1 2

分析:用选择法排序。a[j][0]--序号,a[j][1]—名次。a[j][2]-- 成绩 main()/* sj1-3-12 */ {int j,k,e,t,a[10][3]; for(j=0;j<10;j++) {scanf(\ for(j=0;j<9;j++) {t=j;

for(k=j+1;k<10;k++) if(a[t][2]

t= a[0][1];

for(k=1;k<10;k++) /* 相同成绩,名次也一样 */ if(a[k-1][2]== a[k][2]) a[k][1]=t; else a[k][1]=++t; for(k=0;k<10;k++)

printf(\ }

3-13. 编程,输出所有不超过n(取n<256)的、其平方具有对称性质的正整数(也称为回文

数)。 结果: 1*1=1 2*2=4 3*3=9 11*11=121 22*22=484 26*26=676 101*101=10201 111*111=12321 121*121=14641

202*202=40804 212*212=44944

分析:对j循环(j=1~255),将j*j的各位数字放入数组,输出具有对称性质的j. main()/* sj1-3-13 */

{int e,f,c,t,n=0,a[10]; long j,k;

for(j=1;j<256;j++) { k=j*j; t=0;

while(k>0) {a[t++]=k;k=k/10;} for(c=0,e=t-1;c=e) {printf(\ } }

3-14. 编程,输入两个已经按从小到大顺序排列好的字符串,将两个字符串合并为一个新的

从小到大排列字符串并输出。 结果:输入:13579 24acf

输出:1234579acf

分析1:先将两个字符串合并成一个字符串,然后按从小到大排序。 #include \ #include \ main( ) /* sj1-3-14 */ { char a[80],b[80]; int i,j=0,k,t; gets(a); gets(b); printf(“a=%s,b=%s\\n”a,b);

while(a[j]!=’\\0’) j++; /* 找a串尾 */ i=0;

while(b[i]!=’\\0’) a[j++]= b[i++]; /* b串接在a串尾 */

k=strlen(a); for(i=0;i

for(j=i+1;j

if(a[t]>a[j]) t=j; p=a[i];a[i]=a[t];a[t]=p; }

printf(“a=a+b=%s\\n”,a); }

分析2:对b串的每个字符b[i]在a串中找插入位置j,将a[j],a[j+1],a[j+2],…均向后移

动1个位置,然后将b[i]存入a[j].直到b串的每个字符均插入完毕为止。 #include \ #include \

main( ) /* sj1-3-14 */ { char a[80],b[80]; int i,j,k; gets(a); gets(b);

for(i=0;b[i]!='\\0';i++) /* a,b合并到a */ {j=0;

while(b[i]>=a[j]&&a[j]!='\\0') j++; /* 找b[i]在a中的插入位置j */ if(a[j]=='\\0') {a[j]=b[i];a[j+1]='\\0';} else {for(k=strlen(a)+1;k>j;k--)

a[k]=a[k-1]; /* 将a[k]向后移1个位置 */ a[j]=b[i]; /* 将b[i]存入a[j] */ }

} puts(a);

}

3-15. 编程,输入两个已经按从小到大顺序排列好的字符串,合并两个字符串,使合并后的

字符串中字符从大到小排列并输出。 结果:输入:13579 24acf

输出:fca9754321

分析:先将两个字符串合并成一个字符串,然后按从大到小排序。 #include \ #include \ main( ) /* sj1-3-15 */ { char a[80],b[80]; int i,j,k,t,p; gets(a); gets(b); printf(\ strcat(a,b); /* b串接在a串尾 */ k=strlen(a);

for(i=0;i

for(j=i+1;j p=a[i];a[i]=a[t];a[t]=p; }

printf(\ }

3-16. 编程,输入两个字符串s1和s2,在s1中删除任何s2中有的字符。例如,s1:“abc123ad”,

s2:“a1”,则输出“bc23d”。 结果:输入:abc123ad a1 输出:bc23d

分析:对s2中每个字符s2[i]到s1中寻找它,将s1中出现的所有s2[i]均删除。若s1[j]

应删除,则用s1[j]后面的字符向前移动的方法覆盖s1[j],达到删除s1[j]的目的。

#include \ #include \ main( ) /* sj1-3-16 */ { char s1[80],s2[80]; int i,j,k;

gets(s1); gets(s2);

for(i=0;s2[i]!='\\0';i++) /* 删除s1中的与s2[i]相同的字符 */ {j=0;

while(s1[j]!='\\0') /* 在s1中找s2[i]并删除 */

{if(s2[i]==s1[j]) /* 找到s1[j],用向前移动的方法覆盖s1[j] */

for(k=j;k

s1[k]=s1[k+1]; /* 将s1[j+1]~s1尾('\\0')向前移1个位置,删除s1[j] */

j++;

} } puts(s1);

}

3-17. 编程,输入一行文字,判断该行文字是否是回文。 例如,读入:MA DAM I MAD AM 输出:YES

读入:ABCDBA. 输出:NO

结果:输入:MA DAM I MAD AM

输出:MA DAM I MAD AM YES 输入:ABCDBA 输出:ABCDBA NO

分析:对字符串S,若s[i]==s[n-i-1](i=0,1,…,n/2)),则为回文。

#include \ main()/* sj1-3-17 */ { char s[80]; int p,n; gets(s); p=0;

n=strlen(s); while(p

if(s[p]!=s[n-p-1]) /*比较对称的两个字符 */ { printf(\ else p++; if(p>=n/2)

printf(\ }

3-18. 编程,输入若干个字符串,当输入字符串的长度为0时停止输入。输出最长的字符串。 结果:输入:china

Beijing

Chongqing Shanhai

输出:max=Chongqing

分析:用循环输入各字符串并求其长度,找最大长度并输出相应字符串。输入空串(长度为0)时结束循环。

#include \#include \main( ) /* sj1-3-18 */ {int i,k,m;

char s[80],max[80]; i=1; gets(s); m=0;

while((k=strlen(s))!=0) /* 输入空串时结束循环 */

{ if(k>m) {m=k;strcpy(max,s);} /* 比较并记录最长字符串 */ gets(s); }

printf(\}

3-19. 编程,输入若干个字符串,当输入字符串的长度为0时停止输入,输出最大字符串。 结果:输入:China

Beijing Chongqing Shanhai

输出:max= Shanhai

分析:用循环输入各字符串并求其长度,找最大字符串并输出。输入空串(长度为0)时结束循环。

#include \#include \main( ) /* sj1-3-19 */ {int i,k,m;

char s[80],max[80];

i=1; gets(s); strcpy(max,s);

while((k=strlen(s))!=0) /* 输入空串时结束循环 */

{ if(strcmp(max,s)<0) strcpy(max,s); /* 比较并记录最大字符串 */ gets(s); }

printf(\}

3-20.“1898─要发就发”。将不超过2004的所有素数从小到大排成第一行,第二行上的每个

数都等于它“右肩”上的素数与“左肩”上的素数之差。编程,输出第二行数中满足下列条件的整数:第二行数中若干个连续整数的和恰好是1898。

第一行:2 3 5 7 11 13 17 ..... 1997 1999 2003 第二行: 1 2 2 4 2 4 ..... 2 4 结果:输出:2,3,。。。,1987,1997,1999,2003 *******results*************

No。1:sum=1898


北理工C语言3(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏维埃的兴亡

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: