PTA4
1.以下程序段( AD)的功能是:输入一批整数,用负数作为输入的结束标志,统计其中大于85的数据个数。
A.
int count = 0, score;
scanf ("%d", &score);
while(score >= 0){
if(score > 85){
count++;
}
scanf ("%d", &score);
}
printf("%dn", count);
B.
int count = 0, score;
scanf ("%d", &score);
while(score >= 0){
scanf ("%d", &score);
if(score > 85){
count++;
}
}
printf("%dn", count);
C.scanf位置不对,放到了while里面。如果有负数它不会结束。
int count = 0, score;
while(score >= 0){
scanf ("%d", &score);
if(score > 85){
count++;
}
}
printf("%dn", count);
D.
int count = 0, score;
while(1){
scanf ("%d", &score);
if(score < 0) break;
if(score > 85){
count++;
}
}
printf("%dn", count);
2.以下程序段( ABE)的功能是:计算1! + 2! + 3! + … + n!。假设变量和函数都已正确定义。
A.
sum = 0;
for(i = 1; i <= n; i++ ){
sum = sum + fact (i); /* 假设函数fact(i)已正确定义 */
}
printf("%.0fn", sum);
B.
sum = 0;
for(i = 1; i <= n; i++){
item = 1;
for (j = 1; j <= i; j++)
item = item * j;
sum = sum + item;
}
printf("%.0fn", sum)
C.
sum = 0;
item = 1;
for(i = 1; i <= n; i++){
for (j = 1; j <= i; j++)
item = item * j;
sum = sum + item;
}
printf("%.0fn", sum)
D.
for(i = 1; i <= n; i++){
sum = 0;
item = 1;
for (j = 1; j <= i; j++)
item = item * j;
sum = sum + item;
}
printf("%.0fn", sum);
E.
sum = 0;
item = 1;
for(i = 1; i <= n; i++){
item = item * i;
sum = sum + item;
}
printf("%.0fn", sum);
1.
scanf("%d", &m);
cnt = 0;
limit = m/2;
for(i = 2; i <= limit; i++){
cnt++;
if(m % i == 0){
break;
}
}
执行程序段C,输入101
,变量cnt
的值是49。
1.输入一个正整数,判断其是否为素数。
scanf ("%d", &m);
if ( m == 1) {
is_prime = 0;
} else if (m == 2) {
is_prime=1;
} else if (m % 2 == 0) {
is_prime = 0;
} else{
is_prime=1;
limit = sqrt(m) + 1;
for(i = 3; i <= limit; i += 2){
if(m % i == 0){
is_prime=0;
break;
}
}
}
if(is_prime==1){
printf("Yesn");
}else{
printf("Non");
}
2.输入一个非负整数,求1+1/2!+...+1/n!。假设变量已正确定义。
scanf("%d", &n);
sum=0;
item=1;
for(i=1;i<n;i++){
item=item/i;
sum = sum + item;
}
printf("%.8fn", sum);
3.输入一个正整数n
(1≤n≤10),输出n×n的简易乘法表。当n=3时,3×3的简易乘法表如下:
1 2 3
4 6
9
int i, j, n;
scanf("%d", &n);
for(i = 1; i <= n; i++){
for(j=1;j<=n;j++) /* 处理每行数字前的空格 */
printf("%4c",' ');
}
for(j=i;j<=n;j++){
printf("%4d", i*j);
}
printf("n");
}
4.水仙花数是指一个n位正整数(n≥3),它的每位数字的n次幂之和等于它本身。三位水仙花数满足各位数字的立方和等于自身的正整数,例如:153=13+53+33。
for(num=100;num<=99;num++){
t_num=num;
s=0;
do{
digit=t_num%10;
s=s+digit*digit*digit;
t_num=t_num/10;
}while(t_num!=0) ;
if(num==s)
printf("%dn",num);
}
}
5.输入一个正整数n(1≤n≤9),打印一个高度为n的、由“*”组成的等腰三角形图案。当n=3时,输出如下等腰三角形图案:
*****
***
*
int i, j, n;
scanf("%d", &n);
for (i = n; i > 0; i--){
for(j=n-i;j>0;j--)
printf(" "); }
for(j=1;j<=2*i-1;j++)
printf("*");}
printf("n");
}
6. 输入一个正的奇数n(1≤n≤9),打印一个高度为n的、由“*”组成的正菱形图案。当n=5时,输出如下正菱形图案:
*
***
*****
***
*
int i, j, m, n;
scanf("%d", &n);
m = n/2;
for (i = 1; i <= m+1; i++){
for(j=m+1-i;j>0;j--)
{
printf (" ");
}
for(j=1;j<=2*i-1;j++)
{
printf ("*");
}
printf ("n");
}
for (i = m; i >= 1; i--){
for(j=m+1-i;j>0;j++)
{
printf (" ");
}
for(j=1;j<=2*i-1;j++)
{
printf ("*");
}
printf ("n");
}
7. 输入一个正整数n(1≤n≤10),打印一个n行n列的方阵。当n=4时,打印如下方阵:
13 14 15 16
9 10 11 12
5 6 7 8
1 2 3 4
int i, j, n;
scanf("%d", &n);
for(i=n-1;i>=0;i--){
for(j=1;j<=n;j++){
printf("%4d",i*n+j)}
printf("n");
}
8.输入一个非负整数,从高位开始逐位分割并输出它的各位数字。例如,输入9837,输出9 8 3 7
int digit, number, pow, t_number;
scanf ("%d", &number);
t_number = number;
pow = 1;
while (t_number/10!=0)
{
pow = pow*10;
t_number = t_number / 10;
}
while ( pow >= 1 ) {
digit = number/pow;
number = number%pow;
pow = pow/10;
printf ("%d ", digit);
}
printf ("n");