《程序设计基础》课堂自测
A卷
17.对用户输入的字母进行大小写转换。
法一:
#include \"stdio.h\"
void main( )
{ char ch;
printf(\"please input a letter:\");
scanf(\"%c\
if (ch>='A' && ch<='Z') ch=ch+32;
else if (ch>='a' && ch<='z') ch=ch-32;
printf( \" the converted letter is: %c\\n\
}
19. 计算20n!n1 ( 即求:1!+2!+3!+4!+5!+...+20!
1
)结果:
法一:
#include int main() {double s=0,t=1; int n; for (n=1;n<=20;n++) { t=t*n; s=s+t; } printf(\"1!+2!+...+20!=% e\\n\ return 0; } 答案:【1】ch>='A' && ch<='Z' 2 【2】ch=ch-32 【3】s=0 【4】n<=20 【5】s=s+t 18.求100~499之间的所有水仙花数, 所谓“水仙花数”:即各位数字的立方和恰好等于该数本身。法一: #include \"stdio.h\" void main( ) {int i, j, k, m, n; for(i=1;i<=4;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) { m=i*100+j*10+k; n=i*i*i+j*j*j+k*k*k; 3 if(m==n) printf(\"%5d\ } 21. 计算:m=1-2+3-4+…+9-10 法二: #include main() { int f=1,n,s=0; for(n=1;n<=10;n++) { if(n%2==0) f=-1; else f=1; s=s+n*f; 4 } printf(\"%d\ } 答案:【6】i<=4 【7】i*100+j*10+k 【8】m==n 【9】n%2==0 【10】s+n*f B卷 17.对用户输入的字母进行大小写转换。 法二: #include \"stdio.h\" void main( ) { char ch; 5 ch=getchar(); if((ch>='A' && ch<='Z')||(ch>='a' && ch<='z')) { if (ch>='A' && ch<='Z') ch=ch+32; else ch=ch-32; } printf( \" the converted letter is: %c\\n\ } 19. 计算20n!n1 ( 即求:1!+2!+3!+4!+5!+...+20! 法二: #include double J(int n) {int j; double i=1; 6 ) for(j=1;j<=n;j++) i=i*j; return (i);} main() { int i; double s=0; for(i=1;i<=20;i++) s=s+J(i); printf(\"%e\\n\ } 答案:【1】ch>='A' && ch<='Z')||(ch>='a' && ch<='z') 【2】ch=ch+32 【3】j<=n 7 【4】i<=20 【5】s=s+J(i) 18.求100~499之间的所有水仙花数, 所谓“水仙花数”:即各位数字的立方和恰好等于该数本身。 法二: #include main() { int ge,shi,bai,n; for(n=100;n<500;n++) {bai=n/100; shi=(n-bai*100)/10; ge=n-bai*100-shi*10; if(n==bai*bai*bai+shi*shi*shi+ge*ge*ge) printf(\"%d\\n\ 8 } } 21. 计算:m=1-2+3-4+…+9-10 法一: #include ”stdio.h” void main( ) { int m=0, f=1, i ; for (i=1;i <=10;i++) { m+=i*f; f=-f;} printf(\"m=%d\\n\ } 答案:【6】n-bai*100-shi*10 9 【7】bai*bai*bai+shi*shi*shi+ge*ge*ge 【8】i <=10 【9】i*f 【10】-f C卷 17.对用户输入的字母进行大小写转换。 法三: #include \"stdio.h\" void main( ) { char ch; while((ch=getchar())!='\\n') {if (ch>='A' && ch<='Z') ch=ch+32; else if (ch>='a' && ch<='z') ch=ch-32; putchar(ch);} 10 } 19. 计算20n!n1 ( 即求:1!+2!+3!+4!+5!+...+20! ) 法三: #include main() { int i=1,c; double sum=0,t; for(c=1;c<=20;c++) {for(t=1,i=1;i<=c;i++) t=t*i; sum=sum+t;} printf(\"sum=%e\\n\ } 答案:【1】ch=getchar() 11 【2】else 【3】c<=20 【4】i<=c 【5】sum=sum+t 18.求100~499之间的所有水仙花数, 所谓“水仙花数”:即各位数字的立方和恰好等于该数本身。 法一: #include \"stdio.h\" void main( ) {int i, j, k, m, n; for(i=1;i<=4;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) { m=i*100+j*10+k; n=i*i*i+j*j*j+k*k*k; 12 if(m==n) printf(\"%5d\ } 21. 计算:m=1-2+3-4+…+9-10 法二: #include main() { int f=1,n,s=0; for(n=1;n<=10;n++) { if(n%2==0) f=-1; else f=1; s=s+n*f; 13 } printf(\"%d\ } 答案:【6】i<=4 【7】i*100+j*10+k 【8】m==n 【9】n%2==0 【10】s+n*f 选做题 20. 输入两个正整数m和n,求其最大公约数和最小公倍数。 #include int main() { int p,r,n,m,temp; 14 printf(\"请输入两个正整数n,m:\"); scanf(\"%d,%d,\ if (n temp=n; n=m; m=temp; } p=n*m; while(m!=0) { r=n%m; n=m; m=r; 15 } printf(\"它们的最大公约数为:%d\\n\ printf(\"它们的最小公倍数为:%d\\n\p/n); return 0; } 22. 从键盘输入10个学生成绩,输出其最高分、最低分和平均分。 #include \"stdio.h\" int main( ) { int i,t=0,max,min; float avg; int a[10]; 16 for(i=0;i<=9;i++) scanf(\"%d\ max=min=a[0]; for(i=0;i<=9;i++)