程序填空题
整理了一下程序设计基础课程里面的题目,便于复习和查找
一
1-1 交换两个整数的值
输入2个整数a和b,交换其值,然后输出a和b的值。
#include <stdio.h>
int main(void)
{
int a, b, temp;
scanf("%d%d", &a, &b);
temp = a;
a = b;
b = temp;
printf("%d %d\n", a, b);
return 0;
}
1-2 number是奇数
假设变量已正确定义并赋值,写出满足下列条件的C表达式。
number是奇数:
number%2==1
1-3 number是5的倍数
假设变量已正确定义并赋值,写出满足下列条件的C表达式。
number是5的倍数:
number%5==0
1-4 将数字字符转换为对应数字
要求填入一个表达式,可将输入的数字字符转换成对应的数字输出。例如:输入数字字符3,输出数字3。
#include <stdio.h>
int main()
{
char ch;
int value;
scanf("%c",&ch);
value=ch-'0';
printf("%d",value);
return 0;
}
二
2-1 判断某一日是这一年的第几天
输入某年某月某日,判断这一天是这一年的第几天?
#include <stdio.h>
int main(){
int year,month,day;
int sum;
int leap;
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d %d %d", &year, &month, &day);
switch(month)
{
case 1:
sum=0;
break;
case 2:
sum=31;
break;
case 3:
sum=59;
break;
case 4:
sum=89;
break;
case 5:
sum=120;
break;
case 6:
sum=151;
break;
case 7:
sum=181;
break;
case 8:
sum=212;
break;
case 9:
sum=243;
break;
case 10:
sum=273;
break;
case 11:
sum=304;
break;
case 12:
sum=334;
break;
default:
printf("data error");
break;
}
sum += day;
if(year%400==0 || (year%4==0&&year%100!=0))
leap=1;
else
leap=0;
if(leap == 1) sum++;
printf("It is the %dth day.",sum);
}
return 0;
}
2-2 输出三个数中的最大值
以下程序的功能是输入三个数, 输出三个数中的最大值。请填空。
#include <stdio.h>
int main(void)
{
int x, y, z, u, v;
scanf("%d%d%d", &x, &y, &z);
if (x > y)
u = x;
else
u = y;
if (u > z)
v = u;
else
v = z;
printf("%d\n", v);
return 0;
}
三
3-1 计算一个非零整数序列中偶数的平均值
计算并输出一个非零整数序列(序列非空)中偶数的平均值。所有输入数据用空格隔开,用0结束输入。输出数据保留2位小数。
#include <stdio.h>
int main()
{
int number;
int sum,n;
double average;
n = 0;
sum = 0;
scanf("%d",&number);
while(number != 0)
{
if(number%2 == 0)
{
sum += number;
n ++;
}
scanf("%d", &number);
}
average = sum/n;
printf("%.2lf\n",average);
return 0;
}
3-2 求100-999之间的水仙花数之和
求100-999之间的水仙花数之和(水仙花数 是指一个三位数的各位数字的立方和是这个数本身,如:153=13+53+3^3)。
#include <stdio.h>
int main()
{
int d1,d2,d3;
int n;
int sum;
sum = 0;
for(d1 = 1;d1 <= 9;d1++)
{
for(d2 = 0;d2 <= 9;d2++)
{
for(d3 = 0;d3 <= 9;d3++)
{
n = d1*100 + d2*10 + d3;
if(d1*d1*d1 + d2*d2*d2 + d3*d3*d3 == n)
sum += n;
}
}
}
printf("%d\n",sum);
return 0;
}
QZ
QZ-1 计算一个非零整数序列中偶数的平均值
同 3-1
QZ-2 输出100-999之间的水仙花数
所谓水仙花数就是一个三位数,它每一位数字的3次幂之和都是它本身。例如153是水仙花数,各位数字的立方和为13+53+3^3 = 153。 要输出三位水仙花数,需将100~999范围内的所有数都遍历。 for循环结构语句具体语法格式如下: for(初始化 ; 循环条件 ; 增量) { 执行语句; } for语句通常用于循环次数已知的情况。 要判断一个数是否是水仙花数,算法设计如下: 1.用for语句遍历所有三位数 2.对于遍历到的每个三位数 2.1利用之前学习的各种运算符拆分出数据的个位、十位、百位 2.2求各位数字的立方和,判断与本数是否相等,相等则确定是水仙花数,输出该数。 下面,就让我们用上面的思路完成程序。
#include <stdio.h>
int main()
{
int i, gw, sw, bw;
for( i = 100; i <= 999; i ++)
{
gw = i % 10;
sw =(i/10) % 10;
bw = i / 100;
if (i == gw*gw*gw + sw*sw*sw + bw*bw*bw)
printf("%d", i);
}
return 0;
}