第三次作业

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

void main ( )
{
char c = ‘a’;
if (‘a’ < c <= ‘z’)
{
printf (“LOW”);
}
else
{
printf (“UP”);
}
}
A. LOW
B. UP
C. LOWUP
D. 程序语法错误

A。在if条件中‘a’<c <= ‘z’,优先比较’a’与c的大小,由于c=‘a’=97,所以‘a’<c 的结果为0,然后‘a’<c 的结果0与‘z’比较,而‘z’=122>0,满足if条件,最终输出LOW。

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

void main( )
{
int a = 5, b = 0, c = 0;
if (a = b + c)
printf (“***\n”);
else
printf ("$KaTeX parse error: Undefined control sequence: \n at position 1: \̲n̲"); } A. 有语法错…$

D。在if(a=b+c)的判断中,若b+c的结果为0,则为假,不满足if条件,执行else;若为非0,则为真,执行if。因为b+c=0所以执行else,输出$$$。

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

void main( )
{
int m = 5;
if (m++ > 5)
printf(“%d\n”, m);
else printf(“%d\n”, m–);
}

6。在if(m++>5)的判定中,先进行m与5的判断,m再++。而m=5,不满足if条件,所以执行else。
此时m经过++运算等于6,m–先输出6,再进行–运算。所以最终输出6,但最后m的值为5。

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

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

20,20,30.在该if语句中,并没有用{}为if提供执行范围,则与if在同一语句的z=x为if的执行内容。由于x=10<y=20,所以不满足if条件,不执行z=x,仅执行后面两条语句,所以x=20,y=30,z=30.

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;
}
}

6. 程序实现:输入1个年份 year,判断year是否是闰年?

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int year;
	int a = 0;
	printf("输入年份:");
	scanf("%d", &year);
	if (year % 400==0) {
		a = 1;
	}
	if (year % 4 == 0 && year % 100 != 0) {
		a = 1;
	}
	switch (a)
	{
	case 1:printf("%d是闰年。", year); break;
	default:printf("%d不是闰年。", year);
		break;
	}
	return 0;
}

在这里插入图片描述

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

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	float numA,numB,numC,n,m;
	scanf("%f %f %f", &numA, &numB, &numC);
	m = (numA > numB) ? numA : numB;
	m = (m > numC) ? m : numC;
	n = (numA < numB) ? numA : numB;
	n = (n < numC) ? n : numC;
	printf("最大值为:%f",m);
	printf("最小值为:%f",n);
	return 0;
}

在这里插入图片描述

8. 程序实现:仿照课堂PPT,实现一个简单的计算器程序(只要求计算加减乘除)。要求:用户从键盘输入如下形式的表达式:操作数1 运算符op 操作数2, 比如:1 + 2, 1 / 2, 1 * 2 等,能够输出对应的结果,比如:1 + 2 = 3,1 / 2 = 0.500000, 1 * 2 = 2.

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
    float x, y, s, i;
    char op;
    printf("请按(操作数1运算符op操作数2)的表达式输入(运算符仅限加减乘除):\n");
    i = scanf("%f%c%f", &x, &op, &y);
    if (x > 0 && y > 0 || x > 0 && y < 0 || x < 0 && y>0 || x < 0 && y < 0)
    {
        switch (op)
        {
        case '+':
            s = x + y;
            printf("x+y=%f", s);
            break;
        case '-':
            s = x - y;
            printf("x-y=%f", s);
            break;
        case '*':
            s = x * y;
            printf("x*y=%f", s);
            break;
        case '/':
            if (y == 0)
            {
                printf("数据输入类型错误,请重新输入:\n");
            }
            else
            {
                s = x / y;
                printf("x/y=%f", s);
            }
            break;
        defaul:
            printf("输入数据类型错误,请重新输入:\n");
        }
    }
    else
    {
        printf("输入数据类型错误,请重新输入:\n");
    }
    return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值