电子科大版《C语言上机指导》第四章部分习题参考答案
验证题(第0题):输出五个逻辑值
#include<stdio.h>
int main()
{
int a,b,c,L1,L2,L3,L4,L5,x,y;//"L" means logic type.
a=3;
b=4;
c=5;
L1=a+b>c&&b==c;
L2=a||b+c&&b-c;
L3=!(a>b)&&1||!c;
L4=!(x=a)&&(y=b)&&0;
L5=!(a+b)+c-1&&b+c/2;
printf("%d %d %d %d %d",L1,L2,L3,L4,L5);
return 0;
}
第一题:
第一题存在一点问题,在代码第五行写了if(num=0),这个行为实际上是超出C99标准之外的操作,虽然是合法操作但是非常不建议各位同学这样使用。
初学的同学记得不要将赋值语句作为逻辑值就行了
对于赋值运算符,它的返回值就是赋值操作的右值而非0或1
第四题:
#include<stdio.h>
void main()
{
int min(int x, int y, int z);
int a, b, c;
int check;
printf("请输入三个数并用空格分隔");
scanf("%d %d %d", &a, &b, &c);
check=min(a, b, c);
printf("%d", check);
}
int min(int x, int y, int z)
{
if (x > y)
x = y;
if (x >= z)
x = z;
return x;
}
第五题:
#include<stdio.h>
void main()
{
int piece(int x);
int a, b;
int check;
printf("请输入x\n");
scanf("%d", &a);
check=piece(a);
printf("%d", check);
}
int piece(int x)
{
int y;
if (x < 1)
y = x;
else if (1 <= x <= 10)
y = 2 * x - 1;
else
y = 3 * x - 11;
return y;
}
第六题:
#include<stdio.h>
int main()
{
char choseif(int x);
char choseswitch(int x);
int a, c;
char b;
int check;
printf("输入1选择switch模式,输入2选择if模式\n");
scanf("%d", &a);
printf("请输入学生的成绩:");
scanf("%d", &c);
if (c > 100 || c < 0)
{
printf("学生成绩输入错误");
return 0;
}
switch (a)
{
case 1:
b = choseswitch(c);
break;
case 2:
b = choseif(c);
break;
default:
printf("你输入的序号有问题,请输入1或2");
return 0;
}
printf("学生的成绩是:%c", b);
return 1;
}
char choseif(int x)
{
if (x >= 90)
return 'A';
else if (80 <= x <= 89)
return 'B';
else if (70 <= x <= 79)
return 'C';
else if (60 <= x <= 69)
return 'D';
else
return 'E';
}
char choseswitch(int x)
{
switch (x / 10)
{
case 10:
case 9:
return 'A';
break;
case 8:
return 'B';
break;
case 7:
return 'C';
break;
case 6:
return 'D';
break;
default:
return 'E';
break;
}
}
第七题:
#include<stdio.h>
int main()
{
int a,b,c=0;
scanf("%6d", &a);
if (a/100000>=1)
{
printf("输入的数字超过限制,请输入五位以内的数字。\n");
return 0;
}
for (int i = 10;;)
{
if (a >= 1)
c++;
else
break;
a = a / i;
}
printf("你输入的数字长度为:%d", c);
}