| |
C语言上机试题:6 1.题目:编一C程序,它能读入一串整数(用空格隔开相邻的两个整数,以-9999为输入结束标记,-9999不算在内),并以与读入次序相反的次序输出。(注:可执行文件名为e6_1.exe)
程序设计: main() {int a[100],i=-1,n; printf("Please enter numbers:\n"); do {i++; scanf("%d",%26amp;a[i]); } while (a[i]!=-9999); n=i-1; for (i=n;i%26gt;=0;i--) printf("%d ",a[i]); printf("\n"); }
2.题目:编一C程序,它能以字符串形式读入两个无符号正整数m和n(两个串各占一行),计算并输出这两个整数的和,其中m和n的值最大可为1000亿。(注:可执行文件名为e6_2.exe)
程序设计: #include "stdio.h" #include "string.h" main() {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) {strcpy(mn,m);k=ml;strcpy(m,n);ml=nl;strcpy(n,mn);nl=k;} 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; mns=ms+ns; if (mns%26lt;10) f=0; else f=1; if (mns%26lt;10) m[i]+=ns; else {m[i]+=ns-10; m[i-1]+=f; } } if (f==0) printf("%s\n",m); else {for (i=ml;i%26gt;0;i--) m[i]=m[i-1];m[0]='1';printf("%s\n",m);} }
3.题目:编一C程序,它能读入10个浮点数(相邻的两个数用空格隔开),计算并输出其中最大数和最小数之差。(注:可执行文件名为e6_3.exe)
程序设计: main() {float f[9],max,min; int i; printf("Please enter 10 float:\n"); for (i=0;i%26lt;10;i++) scanf("%f",%26amp;f[i]); max=min=f[0]; for (i=0;i%26lt;10;i++) {if (max%26lt;f[i]) max=f[i]; if (min%26gt;f[i]) min=f[i]; } printf("max=%f,min=%f,max-min=%f\n",max,min,max-min); }
|
|