4-1
对于如下嵌套的 if – else 语句,在空格中填上True
或者False
。请注意,直接填单词(区分大小写),前后不要加空格等任何其他字符。
if(表达式1)
if(表达式2)语句1;
else
if(表达式3)语句2;
else 语句3;
当表达式1为True且表达式2为True 时,执行语句1;
当表达式1为True且表达式2为 False且表达式3为True时,执行语句2;
当表达式1为True且表达式2为False且表达式3为False时,执行语句3
4-2
以下程序段的运行结果是9(4分)。请注意,直接填数字,前后不要加空格等任何其他字符。
char c = ’b’;
int k = 4;
switch(c){
case 'a': k = k + 1; break;
case 'b': k = k + 2;
case 'c': k = k + 3;
}
printf("%d",k);
4-3
运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为c1=2,c2=5(4分)。
#include
int main(void)
{
int c1=0,c2=0;
char ch;
while((ch=getchar()) !='#')
switch(ch)
{ case 'a':
case 'h':c1++;
default:c2++;
}
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
4-4
若变量已正确定义,执行以下程序段,并回答下列问题。请注意,直接填数字,前后不要加空格等任何其他字符。
i = 1;
while (i<= 10)
i++; /* 语句① */
printf("%d\n", i); /* 语句② */
语句①执行了(1分)10 次
语句②执行了(1分)1 次
循环体语句共执行了(1分)10 次
当循环结束时,变量i
的值是11(1分)
6-1
自然数各位数字的平方和(*) (10分)
请编写函数,求自然数各位数字之和。
函数原型
int SumSqrDigit(int number);
说明:参数 number
为自然数。函数值为 number
的各位数字的平方和。若 number
为零,则函数值为零。
裁判程序
#include
int SumSqrDigit(int number);
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", SumSqrDigit(n));
return 0;
}
/* 你提交的代码将被嵌在这里 */
输入样例1
2
输出样例1
4
输入样例2
150
输出样例2
26
int SumSqrDigit(int number)
{
int a,n=0,b,sum=0;
a=number;
if(a==0)
n=1;
else{
while(a>0){
a/=10;
n++;
}
}
for(int i=1;i<=n;i++){
b=number%10;
sum+=b*b;
number/=10;
}
return sum;
}
6-2
数字金字塔 (15分)
本题要求实现函数输出n行数字金字塔。
void pyramid( int n );
其中n
是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n
行数字金字塔。注
意每个数字后面跟一个空格。
#include
void pyramid( int n );
int main()
{
int n;
scanf("%d", &n);
pyramid(n);
return 0;
}
/* 你的代码将被嵌在这里 */
5
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
void pyramid( int n )
{
for(int i=1;i<=n;i++){
for(int k=n-i;k>0;k--)
printf(" ");
for(int j=1;j<=i;j++){
printf("%d ",i);
if(j==i) printf("\n");
}
}
}