高级语言程序设计作业3

高级语言程序设计作业第三次作业

作业内容

编写并运行第4章4.8编程练习题目中的第2题~第4题, 第6题~第8题。

  • 第二题:编写一个程序,提示用户输入名字,并执行以下操作:
#include <stdio.h>
#include <string.h>
int main(void){
	char name[30];
	printf("请输入姓名: ");
	scanf("%s",name);   
	printf("\"%s\"\n",name);        \\打印名字,包括双引号
	printf("\"%20s\"\n",name);       \\在宽度为20的字段右端打印名字,包括双引号
	printf("\"%-20s\"\n",name);      \\在宽度为20的字段左端打印名字,包括双引号
	int wieth=strlen(name)+3;  
	printf("\"%*s\"\n",wieth,name);   \\在比姓名宽度宽3的字段打印名字
	return 0;
}

屏幕截图 2025-11-02 203751

  • 第三题:编写一个程序,读取一个浮点数,首先以小数点计数法打印,然后以指数级数法打印:
#include <stdio.h>
#include <string.h>
int main(void){
	float num ;
	printf("请输入一个浮点数: ");
	scanf("%f",&num);	
	printf("The input is %.1f or %.1e.\n",num,num);
	printf("The input is %+.3f or %.3E.\n",num,num);	
	return 0;
}

屏幕截图 2025-11-02 212259

  • 第四题:编写一个程序,提示用户输入身高(inch)和姓名,然后以以下格式显示用户输入:
    Dabney,you are 6.028 feet tall.
#include <stdio.h>
#include <string.h>
int main(void){
	float tall ;
	char name[30];
	printf("请输入身高(inch)和姓名: ");
	scanf("%f %s",&tall,name);
	printf("%s,you are %.3f feet tall.\n",name,tall/12);
	return 0;
}

屏幕截图 2025-11-02 213106

  • 第六题:编写一个程序,先提示用户输入名,然后提示用户输入姓。在一行打印用户输入的名和姓,下一行分别打印名和姓的字母数,字母数要与相应名和姓的结尾对齐。在再下一行字母数要与相应名和姓的开头对齐。
#include <stdio.h>
#include <string.h>
int main(void){
	char name1[30] ;
	char name2[30];
	printf("请输入名: ");scanf(" %s",name1);
	printf("请输入姓: ");scanf(" %s",name2);
	printf("%s %s\n",name1,name2); 
    printf("%*d %*d\n",strlen(name1),strlen(name1),strlen(name2),strlen(name2));
	printf("%s %s\n",name1,name2); 
    printf("%-*d %-*d\n",strlen(name1),strlen(name1),strlen(name2),strlen(name2));	
	return 0;
}

屏幕截图 2025-11-02 214144

  • 第七题:编写一个程序,将一个double类型的变量设置为1.0/3.0, 一个float类型的变量设置为1.0/3.0。分别显示两次计算的结果各3次: 一次显示小数点后面6位数字;一次显示小数点后面12位数字;一次显示小数点后面16位数字。程序中要包含float.h 头文件,并显示 FLT_DIG 和DBL DIG的值。1.0/3.0的值与这些值一致吗?
#include <stdio.h>
#include<float.h>
int main(void){
	double num1=1.0/3.0 ;
	float num2=1.0/3.0;
	printf("double: %.6f  %.12f  %.16f\n",num1,num1,num1);
	printf("float:  %.6f  %.12f  %.16f\n",num2,num2,num2);
	printf("FLT_DIG: %d\nDBL_DIG: %d",FLT_DIG,DBL_DIG);
	return 0;
}

屏幕截图 2025-11-02 215731

  • 第八题:编写一个程序, 提示用户输入旅行的里程和消耗的汽油量。然后计算并显示消耗每加仑汽油行驶的英里数,显示小数点后面一位数字。接下来, 使用1加仑大约3.785升,1英里大约为1.609千米,把单位是英里/加仑的值转换为升/100公里(欧洲通用的燃料消耗表示法),并显示结果, 显示小数点后面1位数字。注意,美国采用的方案测量消耗单位燃料的行程(值越大越好), 而欧洲则采用单位距离消耗的燃料测量方案(值越低越好)。使用#define创建符号常量或使用const限定符创建变量来表示两个转换系数。
#include <stdio.h>
#define km 3.785
#define L 1.609
int main(void){
	double a,b;
	printf("请输入旅行的里程(英里)和消耗的汽油量(加仑):"); 
	scanf("%lf %lf",&a,&b); 
	printf("消耗单位燃料的行程:%.1f L/100km",b*L/a/km*100);
	
	return 0;
}

屏幕截图 2025-11-02 235721

编写并运行第5章5.11编程练习题目中的第1题~第9题

  • 第一题:编写一个程序, 把用分钟表示的时间转换成用小时和分钟表示的时间。使用#define或const创建一个表示60的符号常量或const 变量。通过 while循环让用户重复输入值, 直到用户输入小于或等于0的值才停止循环。
#include <stdio.h>
int main(void){
	const int h=60;
	int minute=1;
	while(1){
		printf("请输入分钟数:"); 
	    scanf("%d",&minute); 
	    if(minute>0){printf("%d分钟 = %d小时 %d分钟\n",minute,minute/h,minute%h);}
		else{break;}
	}
	return 0;
}

屏幕截图 2025-11-02 222803

  • 第二题:编写一个程序, 提示用户输入一个整数,然后打印从该数到比该数大10的所有整数(例如,用户输入5,则打印5~15的所有整数, 包括5和15)。要求打印的各值之间用一个空格、制表符或换行符分开。
#include <stdio.h>
int main(void){
	int num;
	printf("请输入一个整数:");
	scanf("%d",&num); 
	for(int i=0;i<=10;i++){
		printf("%d ",num+i); 
	}
	return 0;
}

屏幕截图 2025-11-02 223258

  • 第三题:编写一个程序, 提示用户输入天数,然后将其转换成周数和天数。例如,用户输入18,则转换成2周4天。以下面格式显示结果:
    18 days are weeks, 4 days.
    通过while循环让用户重复输入天数,当用户输入一个非负数时循环结束。
#include <stdio.h>
int main(void){
	const int w=7;
	int days;
	printf("请输入天数:");
	scanf("%d",&days); 
	while(days>0){
		printf("%d 天 = %d 周 %d 天\n",days,days/w,days%w);
		printf("请输入天数:");
	    scanf("%d",&days); 
	}
	return 0;
}

image

屏幕截图 2025-11-02 224147

  • 第四题:编写一个程序,提示用户输入一个身高(单位:厘米),并分别以厘米和英尺、英寸为单位显示该值允许有小数部分。程序应该能让用户重复输入身高,直到用户输入一个非正值。其输出示例如下:
    Enter a height in centimeters: 182
    182.0 cm = 5 feet, 11.7 inches
    Enter a height in centimeters (<=0 to quit): 168.7
    168.7 cm = 5 feet, 6.4 inches
    Enter a height in centineters (<=0 to quit): 0
    bye
#include <stdio.h>
#define feet 30.48
#define inch 2.54
int main(void){
	float tall;
	int f;
	printf("Enter a height in centimeters:");
	scanf("%f",&tall); 
	while(tall>0){
		f=tall/feet;
		printf("%.1f cm = %d feet, %.1f inches\n",tall,f,(tall-f*feet)/inch);
	    printf("Enter a height in centimeters(<=0 to quit):");
	    scanf("%f",&tall); 
	}
	printf("bye");
	return 0;
}

屏幕截图 2025-11-02 230526


  • 第五题: 修改程序addemup.c(程序清单5.13),你可以认为addemup.c是计算20天里赚多少钱的程序(假设第1天赚S1、第2天赚$2、第3天赚$3,以此类推)。修改程序,使其可以与用户交互,根据用户输入的数进行计算(即,用读入的一个变量来代替20)。
#include <stdio.h>
int main(void){
	int count=0,sum=0,days;
	printf("请输入赚钱天数:");
	scanf("%d",&days);
	while(count++<days){
		sum+=count;
	}
	printf("%d天总共赚了$%d\n",days,sum);
	return 0;
}

屏幕截图 2025-11-02 231741


  • 第六题:修改编程练习5的程序, 使其能计算整数的平方和(可以认为第1天赚$1、第2天赚S4、第3天赚$9,以此类推,这看起来很不错)。C没有平方函数,但是可以用n*n来表示n的平方。
#include <stdio.h>
int main(void){
	int count=0,sum=0,days;
	printf("请输入赚钱天数:");
	scanf("%d",&days);
	while(count++<days){
		sum+=count*count;
	}
	printf("%d天总共赚了$%d\n",days,sum);
	return 0;
}

屏幕截图 2025-11-02 231933


  • 第七题:编写一个程序,提示用户输入一个double类型的数,并打印该数的立方值。自己设计一个函数计算并打印立方值。main()函数要把用户输入的值传递给该函数。
#include <stdio.h>
double cube(double num){
	return (num*num*num);
}
int main(void){
	double num;
	printf("请输入一个double型的数:");
	scanf("%lf",&num);
	printf("%f的立方值为:%f",num,cube(num));
	return 0;
}

屏幕截图 2025-11-02 235410


  • 第八题:编写一个程序,显示求模运算的结果。把用户输入的第1个整数作为求模运算符的第2个运算对象,该数在运算过程中保持不变。用户后面输入的数是第1个运算对象。当用输入一个非正值时,程序结束。其输出示例如下:
    This program computes moduli
    Enter an integer to serve as the second operand: 256
    Now enter the first operand: 438
    438 号256 is 182
    Enter next number for first operand (<= 0 to quit): 1234567
    1234567 8 256 is 135
    Enter next number for first operand (<= 0 to quit): 0Done
#include <stdio.h>
int main(void){
	int num1,num2;
	printf("This program computes moduli.\n");
	printf("Enter an integer to serve as the second operand: ");
	scanf("%d",&num1);
	printf("Now enter the first operand: ");
	scanf("%d",&num2);
	while(num2>0){
		printf("%d %% %d is %d\n",num2,num1,num2%num1);
		printf("Enter next number for first operand(<= 0 to quit): ");
	    scanf("%d",&num2);
	}
	printf("Done");
	return 0;
}

屏幕截图 2025-11-03 000839


  • 第九题:编写个程序,要求用户输入一个华氏温度。程序应读取double类型的值作为温度值,并把该值作为参数传递给一个用户自定义的函数Temperatures() 该函数计算摄氏温度和开氏温度,并以小数点后面两位数字的精度显示3种温度。要使用不同的温标来表示这3个温度值。下面是华氏温度转摄氏温度的公式:
    摄氏温度=5.0/9.0(华氏温度-32.0)
    开氏温标常用于科学研究,0表示绝对零,代表最低的温度。下面是摄氏温度转开氏温度的公式:
    开氏温度=摄氏温度+273.16
    Temperatures()函数中用const创建温度转换中使用的变量。在main()函数中使用一个循环让用户重复输入温度,当用户输入q或其他非数字时,循环结束。 scanf()函数返回读取数据的数量,所以如果读取数字则返回1, 如果读取q则不返回1。可以使用一—运算符将scanf ()的返回值和1作比较,测试两值是否相等
#include <stdio.h>
void Temperatures(double F){
	const double C1=5.0/9.0,C2=32.0;
	const double K=273.16;
	double c=C1*(F-C2);
	double k=c+K;
	printf("%.2f ℉ = %.2f ℃ = %.2f K\n",F,c,k);
}
int main(void){
	double F;
	printf("Enter a temperatures(℉): ");
	while(scanf("%lf",&F)==1){
		Temperatures(F);
		printf("Enter a temperatures ℉(q or not number to quit): ");
	}
	printf("Done");
	return 0;
}

屏幕截图 2025-11-03 002755

运行以下程序给出程序结果

  • 1

屏幕截图 2025-11-03 003051

  • 2

屏幕截图 2025-11-03 003317

屏幕截图 2025-11-03 003332

  • 3

屏幕截图 2025-11-03 003513

  • 4
    屏幕截图 2025-11-03 003745

程序设计

  • 设计一个可以将程序运算符优先级展示出来的程序(例如自增或者自减运算与四则运算符混用)
 #include <stdio.h>

int main(void){
    int a=5 ,b=6,c=1;
    int pri[3]={1,1,1};     //'++' '--' 优先级:pri[0]; '*' '/' 优先级:pri[1]; '+' '-' 优先级:pri[2] 
    if((++a-b)==0){pri[2]+=1;}         //++a-b=0 说明'++'的优先级高于'-'    
    else{pri[0]++;}

    if((a*--c)==0){  pri[1]+=1;  }     //a*--b=0 说明'--'的优先级高于'*'   
    else{pri[0]++;}	
	
    if((a*b-b)!=0){  pri[2]+=1;  }    //a*b-b!=0 说明'*'的优先级高于'-'   
    else{pri[1]++;}
	
    printf("'++' '--' 优先级:%d\n",pri[0]);      //pri越小,优先级越高 
    printf("'*' '/' 优先级:%d\n",pri[1]);   
    printf("'+' '-' 优先级:%d\n",pri[2]);
    
    return 0;
      
}

屏幕截图 2025-11-03 213629

  • 设计一个程序将这些运算符的优先级按照从高到低一行行展示出来
#include <stdio.h>

int main(void){
	int pri=1;
    printf("输出运算符,按优先级从高到低:\n");
	printf("优先级%d:'()' '[]' \n",pri++); 
	printf("优先级%d:'++' '--' \n",pri++);      
	printf("优先级%d:'*' '/' '%%' \n",pri++);   
	printf("优先级%d:'+' '-' \n",pri++); 
    return 0;    
}

屏幕截图 2025-11-03 215431

总结&思考

  • 学习了while()循环的用法
  • 学习了用 const限定符创建变量 #define创建符号常量
  • 了解了各个运算符的优先级
  • 掌握了如何自定义函数
posted @ 2025-11-03 22:05  叶银珍  阅读(20)  评论(0)    收藏  举报