| |
C语言上机试题:13 1.题目:编一C程序,其功能是能把读入一串英文单词(以单词end做为结束标记,单个单词字母数≤20),并按字典顺序输出。(注:可执行程序命名为e13_1.exe)
程序设计: #include "string.h" main() {char a[80][20],c[20]; int i=-1,j,k,n=-1; printf("Please enter a word string:\n"); do {i++; n++; scanf("%s",a[i]); } while (strcmp(a[i],"end")!=0); for (k=1;k%26lt;n;k++) for (j=n-1,i=0;i%26lt;n-k;i++,j--) if (strcmp(a[j],a[j-1])%26lt;0) {strcpy(c,a[j]); strcpy(a[j],a[j-1]); strcpy(a[j-1],c); } for (i=0;i%26lt;n;i++) printf("%s ",a[i]); printf("\n"); }
2.题目:编一C程序,它能计算并输出读入的两个无符号整数m与n(m≥n,0%26lt;m%26lt;1050,0%26lt;n%26lt;1050)的差m-n。 (注:可执行程序命名为e13_2.exe)
程序设计: #include "stdio.h" #include "string.h" main() {static char m[20],n[20],mn[20]; int ml,nl,ms,ns,mns,k,i,j,f; printf("Please enter 2 number string:\n"); scanf("%s",m); scanf("%s",n); ml=strlen(m); nl=strlen(n); if ((ml%26lt;nl)||((ml=nl)%26amp;%26amp;(strcmp(m,n),0))) {strcpy(mn,m);k=ml;strcpy(m,n);ml=nl;strcpy(n,mn);nl=k;} printf("%s-%s=",m,n); for (i=ml-1,j=nl-1;i%26gt;=ml-nl-1;i--,j--) n[i]=n[j]; for (i=0;i%26lt;ml-nl;i++) n[i]='0'; for (i=ml-1;i%26gt;=0;i--) {ms=m[i]-48; ns=n[i]-48; if (ms%26gt;=ns) {mns=ms-ns;f=0;} else {mns=ms+10-ns;f=-1;} if (ms%26gt;=ns) m[i]=mns+48; else {m[i]=mns+48; m[i-1]+=f; } } k=0; while (m[k]=='0') k++; for (i=k,j=0;i%26lt;ml;i++,j++) mn[j]=m[i]; printf("%s\n",mn); }
3.题目:编一C程序验证下列结论:任何一个自然数n的立方都等于n个连续奇数之和。例如13=1;23=3+5;33=7+9+11。要求程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。(注:可执行程序命名为e13_3.exe)
程序设计: #include "math.h" main() {int n,k,k1,m,i; printf("Please enter n="); scanf("%d",%26amp;n); printf("\n"); while (n!=0) {k1=1; do {k=k1; m=0; for (i=1;i%26lt;=n;i++) {m+=k; k+=2; } if (m==n*n*n) break; else k1+=2; } while (1); for (i=1;i%26lt;=n;i++) {if (i!=n) printf("%d+",k1); else printf("%d",k1); k1+=2; } printf("\nPlease enter n="); scanf("%d",%26amp;n); } }
|
|