您的位置:首页 > 编程语言 > C语言/C++

C语言程序设计实验手册--实验四

2012-11-11 22:43 399 查看

实验四  选择结构程序设计

1、运行

#include <stdio.h>

int i=0, j=1, k=2, l=0;

void main()

{

l=(++i || --j && ++k);

printf("%d %d %d %d\n",i,j,k,l);

}

运行后截图:



2、运行

#include <stdio.h>

void main()
{
int a=0, b=2, c=1, d;
d= a++ || ++b && ++c;
printf("%d %d %d %d \n",a,b,c,d);
}

运行后截图



3、有一函数:y=x   (x<1)

y=2x+1(1<= x <10)

y=3x-8 (x>=10)

用scanf函数输入x的值,求y的值。运行程序,输入x的值。检查输入y的值是否正确。

测试数据:输入x:0、1、8、10、11

        y预期输出:0、3、17、22、15。

#include <stdio.h>

void main()
{
int x,y;
printf("请输出x的值: ");
scanf("%d",&x);
if(x<1)
y=x;
else if(x<10)
y=2*x+1;
else
y=3*x-8;
printf("y的值为:%d\n",y);
}


4、给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80-89为B,70-79为为C,60-69为D,60分以下为E。当输入数据大于100或小于0时,显示“输入数据错”。要求分别用if语句和switch语句实现。(此处将0分和100分视为错误数据)

测试输入数据:90、81、70、60、50、0、120、95、85、75、65、30

预期输出数据:A、B、C、D、E、输入数据错、输入数据错、A、B、C、D、E。

if语句实现代码:

#include <stdio.h>

void main()
{
int score;
printf("请输入成绩(0-100):");
scanf("%d",&score);
if(score<=0)
printf("输入数据错误\n");
else if(score<60)
{
putchar('E');
putchar('\n');
}
else if(score<70)
printf("D\n");
else if(score<80)
printf("C\n");
else if(score<90)
printf("B\n");
else if(score<100)
printf("A\n");
else
printf("输入数据错误\n");
}

switch语句实现代码:

#include <stdio.h>

void main()
{
int score, c;
printf("请输入成绩(0-100):");
scanf("%d",&score);
if(score<=0 || score>=100)
printf("输入数据错误。\n");
else
{
c=score/10;
switch(c)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:putchar('E');break;
case 6:putchar('D');break;
case 7:putchar('C');break;
case 8:putchar('B');break;
case 9:
case 10:putchar('A');break;
default:printf("输入数据错误\n");break;
}
}
}


5、给出一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别打印出每一位数字;(3)按逆序打印出各位数字,例如原数为321,应输出123。

测试输入数据:要处理正整数为1位、2位、3位、4位、5位的情况,以及不合法的输入,如负数、超过5位的数的情况。

测试输入数据:1、89、789、6789、12345、-345、345678

预期输出数据:1、98、987、9876、54321、输入数据为负、输入数据超过5位!

代码如下:

#include <stdio.h>

void main()
{
int data;
int a=0,b=0,c=0,d=0,e=0;
printf(" 请输入你要测试的数据: ");
scanf("%d" , &data);
a = data / 10000;
b = data %10000 / 1000;
c = data %1000 / 100;
d = data %100 / 10;
e = data %10;
if(data<0)
printf("输入数据为负!\n");
else if( a > 9 )
printf(" 输入数据超过5位!\n");
else if(a>0)
{
printf("该数字是5位数字!\n");
printf("从左至右,第一位为:%d\n",a);
printf("从左至右,第二位为:%d\n",b);
printf("从左至右,第三位为:%d\n",c);
printf("从左至右,第四位为:%d\n",d);
printf("从左至右,第五位为:%d\n",e);
printf("逆序数字为:%d\n",e*10000+d*1000+c*100+b*10+a);
}
else if(a==0 && b>0)
{
printf("该数字是4位数字!\n");
printf("从左至右,第一位为:%d\n",b);
printf("从左至右,第二位为:%d\n",c);
printf("从左至右,第三位为:%d\n",d);
printf("从左至右,第四位为:%d\n",e);
printf("逆序数字为:%d\n",e*1000+d*100+c*10+b);
}
else if(a==0 && b==0 && c>0)
{
printf("该数字是3位数字!\n");
printf("从左至右,第一位为:%d\n",c);
printf("从左至右,第二位为:%d\n",d);
printf("从左至右,第三位为:%d\n",e);
printf("逆序数字为:%d\n",e*100+d*10+c);
}
else if(a==0 && b==0 && c==0 && d>0)
{
printf("该数字是2位数字!\n");
printf("从左至右,第一位为:%d\n",d);
printf("从左至右,第二位为:%d\n",e);
printf("逆序数字为:%d\n",e*10+d);
}
else if(a==0 && b==0 && c==0 && d==0 && e>=0)
{
printf("该数字是1位数字!\n");
printf("逆序数字为:%d\n",e);
}
}


【注】这个程序过程可能有点复杂,还有其他简单的程序。


6、输入4个整数,要求按由小到大顺序输出。

  测试输入数据:(1)2 1 3  4     (2) 3 2 1 4     (3)  4 3 2 1    (4) 1 2 3 4 

预期输出数据:1 2 3 4 

代码如下:

#include <stdio.h>

void main()
{
int a,b,c,d,t;
printf("请输入4个整数:");
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(c>d)
{
t=c;
c=d;
d=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>d)
{
t=b;
b=d;
d=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("从小到大顺序为:%d %d %d %d\n",a,b,c,d);
}


【注】还有很多种其他算法。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: