第一题:编写一个程序,将用分钟表示的时间转换成用小时和分钟表示的时间。要求用常量来辨识转换值60,用while循环来让用户可以重复运行程序,并当输入小于或等于0的值时终止程序。
解:
代码如下:
#include <stdio.h>
#define RATE 60
int main(void)
{
int n,a,b;
printf("please input a minute number.\n");
scanf("%d",&n);
while(n > 0)
{
a = n / RATE;
b = n % RATE;
printf("%d hour and %d minute.\n",a,b);
scanf("%d",&n);
}
return 0;
}
———————————————分割线—————————————————
第二题:编写一个程序,此程序要求输入一个整数,然后打印出从(包括)输入值到(包括)比输入值大10的所有整数值(输入5,则打印从5到15)。要求在各个输出值之间用空格、制表符或换行符分开。
解:
代码如下:
#include <stdio.h>
#define RATE 10
int main(void)
{
int n,m;
printf("please input a number.\n");
scanf("%d",&n);
m = n + RATE;
while(n < m + 1)
{
printf("\t%d",n);
n++;
}
printf("\n");
return 0;
}
———————————————分割线—————————————————
第三题:编写一个程序,该程序要求用户输入天数,然后将该值转换成周数和天数。例如把18转换成2周4天,现实形式如下:
18 days are 2 weeks,4 days.
并用while实现循环输入,当输入非正数时,程序终止。
解:
代码如下:
#include <stdio.h>
#define RATE 7
int main(void)
{
int n,a,b;
printf("please input a day number.\n");
scanf("%d",&n);
while(n > 0)
{
a = n / RATE;
b = n % RATE;
printf("%d days are %d weeks,%d days.\n",n,a,b);
scanf("%d",&n);
}
return 0;
}
———————————————分割线—————————————————
第四题:编写一个程序,让用户按照厘米输入一个高度值,然后程序按照厘米和英尺英寸现实这个高度值。允许厘米和英寸的值出现小树部分。程序允许用户继续输入,知道用户输入一个非正的数值。程序运行的形式如下:
Enter a height in centimeters:182
182.0 cm = 5 feet,11.7 inches
Enter a height in centimeters(<=0 to quit):168
168.0 cm = 5 feet,6.1 inches
Enter a height in centimeters(<=0 to quit):0
bye
解:1cm 约等于0.3937008 英寸(in);1英尺等于12英寸。
代码如下:
#include <stdio.h>
#define RATE1 0.3937008
#define RATE2 12.0
int main(void)
{
int input,feet_i;
double cm,inches,feet_f,inch;
printf("Enter a height in centimeters:");
scanf("%d",&input);
while(input > 0)
{
cm = (float)input;
inches = cm * RATE1;
feet_f = inches / RATE2;
feet_i = (int)feet_f;
inch = inches - (float)feet_i * RATE2;
printf("%.1f cm = %d feet,%.1f inches\n",cm,feet_i,inch);
scanf("%d",&input);
}
printf("bye\n");
return 0;
}
———————————————分割线—————————————————
第五题:编写一个程序,用户输入结束的正数值,计算求从1开始到这个正数值的所有数值之和。例如从1到3,则计算1+2+3,结果等于6。
解:
代码如下:
#include <stdio.h>
#define START 1
int main(void)
{
int value,end,total;
value = START;
total = 0;
printf("Input a number to the end:");
scanf("%d",&end);
while( value < end +1)
{
total = total + value++;
}
printf("total is %d\n",total);
return 0;
}
———————————————分割线—————————————————
第六题:编写一个程序,用户输入结束的正数值,计算求从1开始到这个正数值的所有数值平方后之和。例如从1到3,则计算1*1+2*2+3*3,结果等于14。
解:
代码如下:
#include <stdio.h>
#define START 1
int main(void)
{
int value,pow,end,total;
value = START;
total = 0;
printf("Input a number to the end:");
scanf("%d",&end);
while( value < end +1)
{
pow = value * value;
total = total + pow;
value++;
}
printf("total is %d\n",total);
return 0;
}
———————————————分割线—————————————————
第七题:编写一个程序,要求使用自定义有参数函数,计算用户输入的float类型的值得立方,并打印出来。main()函数负责传输参数到该自定义函数。
解:
代码如下:
#include <stdio.h>
void cube(float n);
int main(void)
{
float n;
printf("Input a float number:");
scanf("%f",&n);
cube(n);
return 0;
}
void cube(float n)
{
printf("cube is %f\n",n * n *n);
}
———————————————分割线—————————————————
第八题:编写一个程序,要求用户输入一个华氏温度。程序以double类型读入温度值,并将它作为参数传给自定义函数Temperatures()。该自定义函数将计算相应的摄氏温度和绝对温度,并以小数点右侧保留两位数字的格式显示这三种温度。它应该用每个值所代表的温度刻度来标识这三个值。将华氏温度转换为摄氏温度的公式为:
Celsius = 1.8 * Fahrenheit + 32.0
将摄氏温度转换为绝对温度的公式为:
Kelvin = Celsius + 273.16
要求将这两个公式中的三个数字设定为常量,用户可以循环输入数字,直到输入q或其他非数字值,循环结束。
解:这里需要判断scanf()函数输入的是否是double类型,通过判定scanf()函数返回值是否为1来确认。
代码如下:
#include <stdio.h>
#define C1 1.8
#define C2 32.0
#define K1 273.16
void Temperatures(double a);
int main(void)
{
int n;
double a;
printf("Input a Fahrenheit:");
n = scanf("%lf",&a);
while(n > 0)
{
Temperatures(a);
printf("Input again or q to quit.:");
n = scanf("%lf",&a);
}
return 0;
}
void Temperatures(double a)
{
double b,c;
b = C1 * a +C2;
c = b + K1;
printf("Fahrenheit=%.2f,Celsius=%.2f,Kelvin=%.2f\n",a,b,c);
}