C语言作业三

物联1234 DX锋

1. 下面程序运行结果为( A )。请解释原因。

void main ( ) 

    char c = 'a';

     if ('a' < c <= 'z')

    {

    printf ("LOW");

     }

    else

    {

    printf ("UP"); 

      }

}

A. LOW        B. UP        C. LOWUP        D. 程序语法错误

#include <stdio.h>

main()
{
	char c = 'a';    //令字符c为字符'a'
	if ('a' < c <= 'z')    /*首先判断c是否大于'a',否,为假命题,取值0;
	        再判断0是否小于或等于'z'(132),是,条件成立,执行if后的语句。*/ 
	{
		printf ("LOW");
	}
	else
	{
		printf ("UP");
	}
 } 



2.请阅读以下程序,该程序( D )。请对选项进行解释。

void main( )

 { 

    int a = 5, b = 0, c = 0; 

    if (a = b + c) printf ("***\n"); 

    else printf ("$$$\n");

 }

 A. 有语法错不能通过编译        B. 可以通过编译但不能通过连接        C. 输出***        D. 输出$$$

#include <stdio.h>

main ()
{
	int a = 5, b = 0, c = 0;
	if (a = b + c)    //赋值表达式,令a的值为b+c即为0,假命题,则执行else后的语句
	{
		printf ("***\n");
	}
	else
	{
		printf ("$$$\n");
	}
}

3.填空:以下程序运行结果是__6__,请解释。

void main( )

 { 

    int m = 5; 

    if (m++ > 5) 

        printf("%d\n", m); 

    else printf("%d\n", m--);

 }

#include <stdio.h>

main ()
{
	int m = 5;    //给变量m赋值为5
	if (m++ > 5)    /*变量m先自增加一为6,再比较是否大于5; 
	        是,条件成立,执行if后的语句,输出m的值6。*/ 
	{
		printf ("%d\n",m);
	}
	else
	{
		printf ("%d\n",m--);
	}
}

4.已知 int x = 10, y = 20, z = 30; 以下语句执行后x =____20____, y=___30___,z=___30___。请解释。

if (x > y) z = x; x = y; y = z;

#include <stdio.h>

main ()
{
	int x = 10;
	int y = 20;
	int z = 30;
	if (x > y)    //判断x是否大于y,否,不执行if后的语句// 
	{
		z = x;
	}
	x = y;    //将y的值赋给x,即x赋值为20// 
	y = z;    //将z的值赋给y,即y赋值为30// 
	printf ("x=%d\ny=%d\nz=%d\n",x,y,z);
 } 

 

 5.下面的程序的功能是根据输入的百分制成绩score,转换成相应的五分制成绩grade并打印输出。

转换的标准为:

当90≦score≦100时,grade为A;

当80≦score<90时,grade为B;

当70≦score<80时,grade为C;

当60≦score<70时,grade为D;

当score<60时,grade为E;

请填空:(1)_____&score_____(2)_____score / 10_____(3)_____break_____ (4)_____9_____(5)_____8_____(6)_____7_____ (7)_____6_____

#include <stdio.h>

void main ( ) {

    int score, mark; 

    scanf ("%d",_____(1)_____);

     mark = _____(2)_____; 

    switch (mark)

    { 

        default: printf ("%d--E", score); _____(3)_____; 

        case 10:

        case_____(4)_____: printf ("%d--A", score); break; 

        case_____(5)_____: printf ("%d--B", score); break;

        case_____(6)_____: printf ("%d--C", score); break; 

        case_____(7)_____: printf ("%d--D", score); break;

    } 

}

#include <stdio.h>

void main()
{
	int score, mark;
	scanf("%d",&score);    //键盘输入score的值
	mark = score / 10;    //令mark的值为score的十位,整形常量相除向下取整,则mark为score除以10向下取整的值
	switch (mark)    //判断mark的值
	{
		default: printf ("%d--E",score);break;    //若不为下面五种情况,则执行default后的语句,并跳转到switch外
		case 10:    //若为10,执行case 10后的语句,无可执行的语句,向下执行case 9后的语句,并跳转到switch外
		case 9: printf("%d--A",score);break;    //若为9,执行case 9后的语句,并跳转到switch外
		case 8: printf("%d--B",score);break;    //若为8,执行case 8后的语句,并跳转到switch外
		case 7: printf("%d--C",score);break;    //若为7,执行case 7后的语句,并跳转到switch外
		case 6: printf("%d--D",score);break;    //若为6,执行case 6后的语句,并跳转到switch外
	}
	return 0;
}

 

 解决了void main()报错的问题:创建项目时选C项目而不是C++项目

6. 程序实现:输入1个年份 year,判断year是否是闰年?
#include <stdio.h>

int main()
{
	int year;
	printf("请输入一个年份\n");
	scanf("%d",&year); 
	if (0 == year % 4 && 0 != year % 100 )     //能被4整除且不能被100整除为闰年// 
	{
		printf("闰年"); 
	}
	else if (0 == year % 400)    //能被400整除为闰年// 
	{
		printf("闰年");
	 
	}
	else    //其他情况为平年// 
	{
		printf("平年");
	}
	return 0;
}

7. 程序实现:输入3个数 numA, numB, numC,计算这三个数的最大值,最小值。
#include <stdio.h>

main()
{
	float numA, numB, numC, max, min;
	printf ("请输入三个数\n"); 
	scanf ("%f%f%f",&numA,&numB,&numC);
	max = numA, min = numA;    //假设max和min都为numA 
	if (numB > max)    //若numB比max大,则令max为numB;反之max不变 
	{
		max = numB;
	}
	if (numC > max)    //若numC比max大,则令max为numC;反之max不变 
	{
		max = numC;
	}
	if (numB < min)    //若numB比min小,则令min为numB;反之min不变 
	{
		min = numB;
	}
	if (numC < min)    //若numB比min大,则令min为numB;反之min不变 
	{
		min = numC;
	}
	if (fabs(max - min) <= 1e-7)    /*比较浮点数相等时,只要两值的差值小于足够小的值时,即可判断为相等,因此不能用==比较;
		而单精度浮点数的有效位只有6或7位,则若要判断浮点数是否相等,判断它们的差值是否小于或等于10的负7次方即可
        若max与min的差值足够小则可看作max与min相等,即无最大值与最小值*/
	{
		printf ("无最大值与最小值\n");
	}
	else    //若最大值与最小值不等则输出结果 
	{
		printf ("最大值为%f\n最小值为%f\n",max,min);
	}
	return 0;
}

 ​​​​​​​

8. 程序实现:仿照课堂PPT,实现一个简单的计算器程序(只要求计算加减乘除)。

要求:用户从键盘输入如下形式的表达式:操作数1  运算符op  操作数2, 比如:1 + 2, 1 / 2, 1 * 2 等,能够输出对应的结果,比如:1 + 2 = 3,1 / 2 = 0.500000, 1 * 2 = 2. 

#include <stdio.h>

main()
{
	char op;
	float data1, data2;
	printf ("请输入表达式\n");
	scanf ("%f %c%f",&data1,&op,&data2);    //%c前有空格用于输入回车键// 
	
	switch (op)    //判断运算符// 
	{
		case '+':    //加法// 
			printf ("%f + %f = %f\n",data1,data2,data1 + data2);
			break;    //跳转出switch// 
		case '-':    //减法// 
			printf ("%f - %f = %f\n",data1,data2,data1 - data2);
			break;    //跳转出switch// 
		case '*':    //乘法,三种运算符,若case后没有语句则运算下一个case// 
		case 'x':
		case 'X': 
			printf ("%f * %f = %f\n",data1,data2,data1 * data2);
			break;    //跳转出switch// 
		case '/':    //除法// 
			if (fabs(data2) <= 1e-7)    /*判断除数data2是否为零,若为零则输出除零错误。 
		    比较浮点数相等时,只要两值的差值小于足够小的值时,即可判断为相等,因此不能用==比较;
			而单精度浮点数的有效位只有6或7位,则若要判断浮点数是否为零,判断data的绝对值是否小于或等于10的负7次方即可 */
			{
			    printf ("除零错误!\n");
			    break;    //跳转出switch// 
			}
			else    //除数不为零//
			{
				printf ("%f / %f = %f\n",data1,data2,data1 / data2);
				break;    //跳转出switch// 
			}
	default:    //若op不为以上字符,则输出无效运算符// 
		printf ("无效运算符\n");
    }
}

以上三道题的程序实现,请尽可能将核心步骤进行代码注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值