.
3-17. 编程,输入一行文字,判断该行文字是否是回文。 例如,读入:MA DAM I MAD AM 输出:YES 读入:ABCDBA. 输出:NO ————
#include
char strA[80],strB[80],temp; int i,j; gets(strA);
for(i=0;i if(!strcmp(strA,strB))printf(\ else printf(\} 3-18. 编程,输入若干个字符串,当输入字符串的长度为0时停止输入。输出最长的字符串。 ———— #include char strA[80]=\ int i; do { gets(strA); if(strlen(strA) > strlen(strB) )strcpy(strB,strA); }while( strlen(strA)!=0 ); printf(\ puts(strB); } 3-19. 编程,输入若干个字符串,当输入字符串的长度为0时停止输入,输出最大字符串。 ———— #include . . } gets(strA); if( strcmp(strA,strB)>0 )strcpy(strB,strA); }while( strlen(strA)!=0 ); printf(\puts(strB); 3-20.“1898─要发就发”。将不超过2004的所有素数从小到大排成第一行,第二行上的每个 数都等于它“右肩”上的素数与“左肩”上的素数之差。编程,输出第二行数中满足下列条件的整数:第二行数中若干个连续整数的和恰好是1898。 第一行:2 3 5 7 11 13 17 ..... 1979 1987 1993 第二行: 1 2 2 4 2 4 ..... 8 6 ———— 暂无答案 #include int falg[10000] = {0}; int sum[10000]; int num[10000]; int can[10000][2]; int main(){ int total = 0, i, j, k; for(i = 2; i <= 2004; i ++){ if(!falg[i]) prim[ ++ total] = i; for(j = 1; j <= total; j ++){ if(i * prim[j] > 2004 ) break; falg[i * prim[j]] = 1; if(i % prim[j] == 0) break; } } for(i = 2; i <= total; i ++){ num[i] = prim[i] - prim[i - 1]; sum[i] = sum[i - 1] + prim[i] - prim[i - 1]; } j = 1; k = 1; for(i = 2; i <= total; i ++) while(sum[i] - sum[j] >= 1898){ if(sum[i] - sum[j] == 1898){ can[k][0] = j; can[k ++][1] = i; . . break; } j ++; } for(i = 1; i < k; i ++){ printf(\%d %d\\n\can[i][0], can[i][1], sum[can[i][1]] - sum[can[i][0]]); printf(\ } return 0; } 3-21. 用空格分开的字符串称为单词。输入多行字符串,直到遇到了单词\时才停止。最 后输出单词的数量。 ———— #include 3-22. 编程,输入两个字符串s1、s2和s1中任意字符k,在s1中的指定字符k的位置处插入 字符串s2并输出。 ———— #include . . } { if(strA[i]==ch) { for(j=lenA;j>=i;j--)strA[j+lenB]=strA[j]; for(j=0;j puts(strA); 3-23.任意输入一个4位自然数,输出该自然数的各位数字组成的最大数。例如,输入1593, 则输出为9531。 ———— main() { int a[4],n,m,i,j; printf(\ scanf(\ for(i=0;i<4;i++){a[i]=n;n/=10;} for(i=0;i<4;i++)for(j=i+1;j<4;j++) if(a[i] 3-24. 编程,输入两个已经按从小到大顺序排列好的字符串,将两个字符串合并为一个新的从 小到大排列字符串,并删除重复的字符,然后输出该字符串。 ———— #include . . } if(strA[i] {temp=strA[i];strA[i]=strA[j];strA[j]=temp;} } } for(i=0;i for(j=i+1,k=0;j if(k!=0)for(j=i;j puts(strA); 3-25. 编程,输入五个字符串,请将它们按从小到大的顺序排列后输出。 ———— main() { char a[6][80]; int i,j; for(i=0;i<5;i++){printf(\ for(i=0;i<5;i++)for(j=i+1;j<5;j++) if(strcmp(a[i],a[j])>0) {strcpy(a[5],a[i]);strcpy(a[i],a[j]);strcpy(a[j],a[5]);} for(i=0;i<5;i++)puts(a[i]); } 3-26. 编程,输入五个字符串,请将它们按从大到小的顺序排列后输出。 ———— main() { char a[6][80]; int i,j; for(i=0;i<5;i++){printf(\ for(i=0;i<5;i++)for(j=i+1;j<5;j++) if(strcmp(a[i],a[j])<0) {strcpy(a[5],a[i]);strcpy(a[i],a[j]);strcpy(a[j],a[5]);} for(i=0;i<5;i++)puts(a[i]); } 3-27. 编程,将输入的两行字符串连接后,将新串中全部空格移到串首后输出。 ———— #include .