【学习练习代码C语言】

目录

0、编写程序注意事项

0.1、运算符的优先级别

0.2、

0.3、

0.4、

0.5、

0.6、

0.7、

0.8、

1、新手第一站,打印“hello world,I am coming!”

2、ASCLL字符表相关

        2.1、ASCLL字符表字符和ASCLL值的转化

        2.2、打印ASCLL字符表

        2.3、字符加密

                2.3.1、判断输入字符的类型:字母、数字、还是其它字符(课本P74)

                2.3.2、字母加密

 3、数据类型处理

3.2、字符常量、字符串常量的注意事项

4、数学相关应用

        4.1、计算圆的面积和周长

        4.2、计算两个数的绝对值之和(其他函数调用类似)

        4.3、针对不同的象限区域数值进行函数调用

        4.4、求二次方程的根

        4.5、输入两个角度值,计算他们绝对值的正弦值

        4.6、键入学号和数学成绩,计算数学平均成绩

        4.7、输入三个数a,b,c,要求按照从小到大的顺序输出(课本P72)

        4.8、键入成绩,输出成绩对应的等级

5、循环的应用

        5.1、用for循环打印多个字符串

        5.2、用while语句、do while语句、for循环求等差数列前n项的和

        5.3、求0-1000中的水仙花数

        5.4、计算π的数值

6、分支结构的应用

        6.1、输入一个无符号整数,判断该数是偶数还是奇数

                6.1.1、用“if……else语句”实现

                  6.1.2、switch与case组合实现

        6.2、利用条件运算符判断学生的成绩水平

        6.3、判断字符类型,实现相应的操作

        6.4、输入年月日,判断这是一年的第几天

        6.5、键入二维点坐标,根据对应函数计算结果

        6.6、根据基本运费、货物重量和距离求总运费

        6.7、输入班号,输出该班学生人数

        6.8、计算三个数字中较大的数字


0、编写程序注意事项

0.1、运算符的优先级别

        在一个逻辑表达式中如果有多个逻辑运算符,则优先顺序为!&& || 

        逻辑运算中的短路原则:当能够得到表达式的结果,就不再继续进行余下的运算

        C语言处理真假的规则:真值为非0值,假值为0;条件表达式的结果为0,则按照假处理,如果是非0,则为真值。        

/*逗号表达式的运用*/
#include<stdio.h>
int main()
{
	int x, y, z, i, j;
	printf("(x=1,y=100,z=(x+y)*5)=%d\n", (x = 1, y = 100, z = (x + y) * 5));
	printf("x=(i=10,j=5,i*j)=%d\n", x = (i = 10, j = 5, i * j));
	printf("(x=i=10,j=5,i*j)=%d\n",(x = i = 10, j = 5, i * j));
	return 0;
}

0.2、

0.3、

0.4、

0.5、

0.6、

0.7、

0.8、

1、新手第一站,打印“hello world,I am coming!”

#include<stdio.h>//预处理命令
int main()
/*函数说明,int说明函数类型,main是函数名称,()内是函数的参数列表,
void表示函数没有定义参数,有的编译器甚至不需要*/
{
	printf("Hello world ,I am coming !");
	return 0;//函数的返回值
}//函数体,包括功能语句和说明语句
//void是用来修饰函数的参数或者返回值,代表函数没有参数或没有返回值

2、ASCLL字符表相关

        2.1、ASCLL字符表字符和ASCLL值的转化

#include<stdio.h>
int main()
{
	int number01=68,number02=320;
	char ch = 'A';
	printf("number01=%c", number01);//数字在0-255之间,和ASCLL字符表一一对应
	printf("number02=%c", number02);//数字溢出,利用周期性T=256去周期
	printf("ch=%d", ch);//字符以十进制输出,可以变成0-255之间的具体数字
	return 0;
}

        2.2、打印ASCLL字符表

#include<stdio.h>
int main()
{
	int i;
	for (i = 0; i < 255; i++)
	{
		printf("字符%c ,序号%d\n", i, i);
	}
	return 0;
}

        2.3、字符加密

                2.3.1、判断输入字符的类型:字母、数字、还是其它字符(课本P74)

                2.3.2、字母加密

#include <stdio.h> 
int main()
{
    char c;
    do
    {
        c = getchar();
        if (c != '\n')
            putchar(c + 4);
    } while (c != '\n');
    return 0;
}

 3、数据类型处理

#include<stdio.h>
int main()
{
	int i=123;
	float f=3.1415;
	double d= 1234.567890;
	long l = 1234567890;
	printf(" %d, %ld, %lo, %lx, %lu\n", l, l, l, l,l);
	printf(" %d, %f, %e, %f, %e\n", i,f,f,d,d);
	printf(" %-d, %-f, %-e, %-f, %-e\n", i, f, f, d, d);
	printf(" %o, %x, %e, %f, %g\n", i,i,f,f,f);
	printf(" %e, %f, %g\n",d,d,d);
	printf(" \n%5d, %10f, %15e\n", i,f,f);
	printf(" \n%-5d, %-10f, %-15e\n", i, f, f);
	printf(" \n%.3f, %.4e, %.5g\n",f,d,d);
	printf(" \n%10.2f, %15.4e, %20.5g\n",f,d,d);
	return 0;
}
/* 1234567890, 1234567890, 11145401322, 499602d2, 1234567890
 123, 3.141500, 3.141500e+00, 1234.567890, 1.234568e+03
 123, 3.141500, 3.141500e+00, 1234.567890, 1.234568e+03
 173, 7b, 3.141500e+00, 3.141500, 3.1415
 1.234568e+03, 1234.567890, 1234.57

  123,   3.141500,    3.141500e+00

123  , 3.141500  , 3.141500e+00

3.141, 1.2346e+03, 1234.6

      3.14,      1.2346e+03,               1234.6
计算机的实数运算存在误差,整数运算应注意是否存在溢出错误
通过printf()函数格式化输出时存在格式转换问题,可能会因为有效位数的限制、
格式符使用不当等原因出现结果不正确*/

3.2、字符常量、字符串常量的注意事项

#include<>
int main()
{
	char a, b;
	printf("set the value of a,b\n");
	scanf_s("%c%c", &a, &b);
	getchar();//ffush(stdin)可以吗?
	printf("\n%c%c\n", a, b);
	printf("请输入两个字符,中间以若干空格分隔:\n");
	scanf_s("%c %c\n", a, b);
	getchar();
	printf("\n%c%c\n", a, b);
/*区别scanf_s中字符之间是否有间隔的区别*/
	char c, d;
	c = 'A';
	d = "100";
	printf("c=%c d=%c", c, d);
	/*单引号定义字符常量;双引号定义字符串常量*/
	return 0;
}

4、数学相关应用

        4.1、计算圆的面积和周长

#include<stdio.h>
int main()
{
	double randius, area;
	double PI=3.1415926;	
	printf("请输入圆的半径:");
	scanf_s(" %lf", &randius);
	area = PI * randius * randius;
	printf("圆的面积是: %lf", area);
	return 0;
}

        4.2、计算两个数的绝对值之和(其他函数调用类似)

#include<stdio.h>
#include<math.h>
float absv(float x)
{
	float y;
	y = x >= 0 ? x : -x;//如果“?”前的“x>=0”为真,y取x的值,否则y取-x的值
	return y;
}
void main()
{
	float a, b, c;
	printf("input a,b:\n");
	scanf_s(" %f %f", &a, &b);//注意,在scanf函数中,%f之前需要添加空格符
	c = absv(a) + absv(b);
	printf("|a|+|b|=%f\n", c);
}
/*思考:为什么输入“3;5”的结果偏差过大呢?——
如果输入两个以上变量,为了避免出现类似错误,是否需要多行输入?
当输入的数据类型为多个数值型数据时,若相邻两个格式指示符之间没有间隔符(冒号、逗号等)
则相应的两个输入项之间可用的分隔符有三种:空格、制表符或换行符
*/

        4.3、针对不同的象限区域数值进行函数调用

        4.4、求二次方程的根

​#include<stdio.h>
#include<math.h>
int main()
{
	float a, b, c, p, disc, q, x1, x2;
	printf("请输入二次方程的三个系数,计算这个方程的根\n");
	scanf_s(" %f, %f ,%f", &a, &b, &c);//最多可以同时输入5个变量
	p = -b / 2 * a;
	q = sqrt(b * b - 4 * a * c) / 2 * a;
	x1 = p + q, x2 = p - q;
	printf("x1=%f.x2=%f", x1, x2);
	return 0;
}

        4.5、输入两个角度值,计算他们绝对值的正弦值

#include<stdio.h>
#include<stdio.h>
#define PI 3.141592
float main()
{
	float x, y,z,m;
	printf("input the value of x and y:");
	scanf_s("%f %f", &x, &y);
	m = exp(abs(x) + abs(y));
	printf("这两个数字绝对值之和的指数为:%f\n", m);
	x = x * PI / 180.0;
	y = y * PI / 180.0;
	z = sin(abs(x) + abs(y));
	printf("这两个角度值的绝对值的正弦值为:%f", z);
	return 0;
}

        4.6、键入学号和数学成绩,计算数学平均成绩

#include<stdio.h>
int main()
{
	int num1, num2, num3;
	float score1, score2, score3, ave;
	printf("请输入三位学生的学号:");
	scanf_s("num1=%d  num2=%d  num3=%d", &num1, &num2, &num3);
	fflush(stdin);//清除输入台数据,避免数据紊乱
	printf("\n请输入三位学生的成绩:\n");
	scanf_s("score1=%d score2=%d score3=%d", &score1, &score2, &score3);
	ave = (score1 + score2 + score3) / 3;
	printf("学号num1的成绩是%3f", score1);
	printf("学号num2的成绩是%3f", score2);
	printf("学号num3的成绩是%3f", score3);
	printf("这三位同学的平均成绩是%.2f", ave);
	return 0;
}

        4.7、输入三个数a,b,c,要求按照从小到大的顺序输出(课本P72)

/*找出a,b,c三个数字中最大的数字*/
#include<stdio.h>
int main(void)
{
    float   a, b, c, max;
    printf("请输入三个整数: % %d % %d % %d\n");
    scanf_s("%d%d%d", &a, &b, &c);
    if (a >= b)
        if (a >= c)  max = a; 
        else  max = c;
    else
        if (b >= c)  max = b;
        else   max = c;
    printf("\n最大数为:% d\n",max);
    return 0;
}

        4.8、键入成绩,输出成绩对应的等级

5、循环的应用

        5.1、用for循环打印多个字符串

#include<stdio.h>
int main()
{
	
	int i;
	for (i = 0; i <= 40;i++)
	{
		printf("*");
	}
	printf("\n");
	printf("      My name is Harry\n");

	int j;
	for (j= 0; j <= 40; j++)
	{
		printf("*");
	}
//等学会了函数模块,再来用函数进行优化
	return 0;

}

        5.2、用while语句、do while语句、for循环求等差数列前n项的和

/*用while循环计算1+2+……+100的结果*/
/*
#include<stdio.h>
int main()
{
	int i = 1, sum = 0;
	while (i <= 100)//循环条件控制语句
	{
		sum += i;
		//针对每一个i,进行表达式运算,就可以适用于任何确定数字的等差数列计算
		i++;//循环条件改变语句,改变循环变量,避免死循环
	}
	//如果循环体中包含一个以上的语句,应该用花括弧括起来,以复合语句的形式出现。
	//如果不加花括弧,则while语句的范围只到while后的第一个分号处。
	printf("sum=%d",sum);
	return 0;
}
*/

/*do while循环计算1+2+……+100的结果*/
/*  
#include<stdio.h>
int main()
{
	int i = 1, sum = 0;
	do {
		sum += i;
		i++;
	} while (i <= 100);
	printf("sum=%d", sum);
	return 0;
}
*/

/*for循环计算1+2+……+100的结果*/
/*
#include<stdio.h>
int main()
{
	int i, sum;
	for (i = 0, sum = 0; i <= 10; i++)
	{
		sum += i;
		printf("i=%d,sum=%d\n", i,sum);
	}
	printf("sum=%d", sum);
	return 0;
}
*/

        5.3、求0-1000中的水仙花数

/*用for循环遍历每一个在0-1000之间的数字,符合的输出*/
#include<stdio.h>
int main()
{
	int i, a, b, c;
	int t = 0;
	for (i = 0; i <= 999; i++)
	{
		a = i / 100;
		b = i % 100 / 10;
		c = i % 10;
		if (i == a * a * a + b * b * b + c * c * c)
		{
			t++;//计数器,计算特定范围内的水仙花的个数
			printf("0-1000中,第%d个水仙花数是%d\n", t, i);
		}
	}
	return 0;
}

        5.4、计算π的数值

                

/*第一种实现方式,调用数学函数库,直接套用公式*/
#include <stdio.h>
#include <math.h>
int main()
{
	int i = 1, num;
	float sum = 0, item;
	printf("请输入计算数列的项数,来确定数据精度");
	scanf_s("%d", &num);
	while (i <= num)
	{
		item= pow(-1, i - 1) / (2 * i - 1);//数列的每一项
		sum += item;//数列前n项的和
		i++;//改变循环变量
	}
	printf("sum = % .3f\n", 4*sum);
	return 0;
}

/*第二种实现方式,利用符号函数来计算不确定正负项问题*/
#include <stdio.h>
int main()
{
	int i = 1, num, sign = 1;
	float sum = 0, item;
    printf("请输入计算数列的项数,来确定数据精度");
    scanf_s("%d", &num);
    while (i <= num) 
    {
        item = 1.0 / (2 * i - 1);
        sum += sign * item;
        sign *= -1;
        i++;
    }
    printf("sum = % .3f\n", 4*sum);
    return 0;
}

/*改进:思考,按照题目设置数据精度,但为什么与实际数据存在偏差*/
#include <stdio.h>
#include<stdio.h>
int main()
{
    int i = 1, num,n, sign = 1;
    float sum = 0, item=0;
    printf("请输入计算数列的项数,来确定数据精度");
    scanf_s("%d", &n);
    num = pow(1.0 / 10.0, n);
    while (item*sign<= num)
    {
        item = 1.0 / (2 * i - 1);
        sum += sign * item;
        sign *= -1;
        i++;
    }
    printf("sum = % .3f\n", 4*sum);
    return 0;
}

         5.5、用三种循环打印九九乘法表

/*for循环*/
#include <stdio.h>
int main(void) 
{
	int i, j;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%d\t", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

        5.6、用for 循环计算泰勒级数相关问题   KP98

        5.7、输出3-100中所有的素数

        素数的数学定义为,“凡是只能被1和自身整除的大于1的整数,就称为质,即素数”因此,根据定义,对于任意个大于1的整数number1,如果不能被从2number- 1中的任一数整除,则该数number为素数

        只需被 2 ~ sqrt(c)之间的每一个整数整除有余数即可(原因:素数是因子为1和本身, 如果数c不是素数,则还有其他因子,其中的因子,假如为a,b.其中必有一个大于sqrt(c) ,一个小于sqrt(c) 。所以m必有一个小于或等于其平方根的因数,那么验证素数时就只需要验证到其平方根就可以了。即一个合数一定含有小于它平方根的质因子。)

#include<stdio.h>
int main(void)
{
	int number, i;
	printf("3 - 100中的所有素数是:\n");
	for (number = 3; number <= 100; number++)
	{
		for (i = 2; i <= number - 1; i++)
			if (number % i == 0)
				break;
		if (i >= number)
			printf("%d\t", number);
	}
	printf("\n");
	return 0;
}

        5.8、猜数字游戏

问题设计个猜数字游戏,游戏规则为由程序产生1 ~ 1000之间的数,由玩家猜这个数,如果猜对了,提示玩家猜对了这个数字,由玩家选择是继续玩还是退出游戏;如果猜的数比生成的数小,则提示玩家数小了,再试一次;如果猜的数比生成的数大,提示玩家数大了,再试次,如果玩家要放弃这次猜数,则输-1

        分析:

        因为玩家至少玩一次游戏,所以循环条件的判断放在循环结束的地方,用do-while语句实现;

         调用rand()函数随机生成一个1~1000之间的数,要得到一个1 ~1000的随机数,可以用取余运算符%,将 rand()的返回值除以1000所得的余数再加1得到。

        为确保每次程序运行时,能得到不同的数,还需要调用srand()函数,以及用time()函数的返回值初始化该数字串。函数rand()和srand()的定义在头文件stdlib.h中,函数 time()的定义在头文件time.h中

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
	int num1, num2;/*numl是生成的数,num2是玩家猜的数*/
	char ch;
	do{
		srand(time(NULL));
		num1 = 1 + (rand() % 1000);
		printf("I have a number between 1 and  1000. \n");
		printf("Can you guess my number ? \nPlease type your first guess. \n");
		scanf_s("%4d", &num2);
		while (num2 != -1)
		{
			if (num2 == num1)
			{	printf("Congratulations!");
				break;}
			else if (num2 <= num1)
			{	printf("Guess bigger!");
				scanf_s("%4d", &num2);
				break;}
			else 
			{	printf("Guess smaller!");
				scanf_s("%4d", &num2);
				break;}
			printf("Would you like to play again(y or n)?");
			fflush(stdin);
			scanf_s("%2c", &ch);
		}
	} while (ch == 'y');
		return 0;
}

6、分支结构的应用

        6.1、输入一个无符号整数,判断该数是偶数还是奇数

                6.1.1、用“if……else语句”实现

#include<stdio.h>
int main()
{
    unsigned int  num,r;
    printf("Input num:\n");
    scanf_s("%u", &num);
    r = num % 2;
    if (r==0)
        printf("%u is an even.\n",num);
    if (r==1)
        printf("%u is an odd.\n", num);
    return 0;
/*‘=’是赋值运算符;‘==’是关系运算符,修改方法是区别运算符和关系运算符*/

                  6.1.2、switch与case组合实现

​
#include<stdio.h>
int main(void)
{
    int x;
    printf("请输入一个0-3的整数:");
    scanf_s("%d", &x);
    switch (x)
    {
     case  0: case 2:
         printf("输入的数字是偶数,数字为%d。\n",x);
     case  1: case 3:
         printf("输入的数字是奇数,数字为%d。\n", x);
     default:  printf("输入错误!\n");
    }
    return 0;
}

​

        6.2、利用条件运算符判断学生的成绩水平

#include<stdio.h>
int main()
{
    int score;
    char grade;
    printf("please input a score:\n");
    scanf_s("%d", &score);
    grade = score >= 90 ? 'A' : (score < 60 ? 'C' : 'B');
    /*此处如果运用逻辑运算符,还可以写成  
grade = score >= 90 ? 'A' : (score >= 60 && score < 90 ? 'B': 'C'); */   
    printf("%dbelongs to %c", score, grade);
    return 0;

        6.3、判断字符类型,实现相应的操作

/*判断输入的字符,如果是字母,则大小写对换,如果是数字,输出数字;
如果是除@、#外的其他字符,则输出other character*/
#include<stdio.h>
int main()
{
    char c;
    printf("请输入一个字符:");
    c = getchar();
    if (c >= 'a' && c <= 'z')//①
    {
        c = c - 32;
        printf("letter %c\n", c);
    }//通过对字符的ASCLL表的序号的运算,可以实现加密
    else if (c >= 'A' && c <= 'Z')
    {
        c = c + 32;
        printf("letter %c\n", c);//②
    }
    else if (c >= '0' && c <= '9') //③
    {
        printf("digit %c\n", c);
    }
    else
    {
        printf("other character \n");
        if (c == '@' || c == '#')//④
            printf("%c\n", c);
    }
    return 0;
}

        6.4、输入年月日,判断这是一年的第几天

#include<stdio.h>
int main()
{
    int day, month, year, sum, leap;
    printf("\n please input year,month,day:\n");
    scanf_s("%d,%d, %d", &year, &month, &day);

    switch (month)
    {
    case 1:sum = 0; break;
    case 2:sum = 31; break;
    case 3:sum = 59; break;
    case 4:sum = 90; break;
    case 5:sum = 120; break;
    case 6:sum = 151; break;
    case 7:sum = 181; break;
    case 8:sum = 212; break;
    case 9:sum = 243; break;
    case 10:sum = 273; break;
    case 11:sum = 304; break;
    case 12:sum = 334; break;
    default:printf("data error\n"); break;
    }
    sum = sum + day;
/*
地球绕太阳运行的周期为365天5小时48分46秒(合365.24219天),即一回归年。公历的平年只有365天,比回归年短约0.2422天,所余下的时间约为每四年累积一天,故在第四年的2月末加1天,使当年的时间长度变为366天,这一年就是闰年。
现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样,每128年就会多算出1天,经过400年就会多算出3天多。因此,每400年中要减少3个闰年。
所以公历规定:年份是整百数时,必须是400的倍数才是闰年;不是400的倍数的世纪年,即使是4的倍数也不是闰年
*/
    if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
        leap = 1;
    else
        leap = 0;
    if (leap == 1 && month >= 2)
        sum++;
    printf("The days are %d.\n", sum);
    return 0;
}

        6.5、键入二维点坐标,根据对应函数计算结果

#include<stdio.h>
#include<math.h>
int main()
{
    double x, y, z;
    printf("请输入两个非0的数字:");
    scanf_s("%lf%lf", &x, &y);
    if ((x > 0) && (y > 0))//第一象限
        printf("z = log(x) + log(y)=%f", z = log(x) + log(y));
    else if ((x < 0) && (y > 0))//第二象限
        printf("z = sin(x) + cos(y)=%f", z = sin(x) + cos(y));
    else if ((x < 0) && (y < 0))//第三象限
        printf("z = exp(2 * x) + exp(3 * y)=%f", z = exp(2 * x) + exp(3 * y));
    else if ((x > 0) && (y < 0))//第四象限
        printf("z = tan(x + y)=%f", z = tan(x + y));
    else if (x == 0 || y == 0)
        printf("Sorry,Points on axes are not included");
    else
        printf("data error! please input again!");
    return 0;
}

        6.6、根据基本运费、货物重量和距离求总运费

/*switch语句的使用要点:
		①遇到第一个相同的case常量分支之后,顺序向下执行,不再进行是否相等的判断,
		因此,除非特别情况,一般情况下break语句必不可少
		②多个case可以共同使用一个语句序列——只需要调整break的位置即可*/
#include<stdio.h>
float p, w, f;
int d,s;
int main()
{
    printf("请输入基本运费(元)、货物重量(吨)、距离(千米):");
    scanf_s("%f%f%d", &p, &w, &s);
    int c ;    c = s / 250;
    switch (c)
    {
    case 0:d = 0; break;
    case 1:d=0.02; break;
    case 2:case 3:d=0.05; break;
    case 4:case 5:case 6:case 7:d=0.08; break;
    case 8:case 9:case 10:case 11:d=0.10; break;
    default:d=0.15; break;
    }//此处d的定义是少支付的单位价格比例
    f = p * w * s * (1 - d);
    printf("总运费为:%f", f);
    return 0;
}//也可以用if ;else if ;else if;else的多分支结构处理,将s的范围作为分支依据
//这种方法特别适合s的范围没有严格的规律性或者case的数值比较多的情况

        6.7、输入班号,输出该班学生人数

#include<stdio.h>
int main()
{
    int codeshare,number;
    printf("请输入班级的班号(21-26):\n");
    scanf_s("%d", &codeshare);
    switch(codeshare)
    {
    case 21:number = 45;
    case 22:number = 51;
    case 23:number = 48;
    case 24:number = 46;
    case 25:number = 48;
    case 26:number = 52;
    }
    printf("班号为%d的班级学生人数为%d", codeshare, number);
    return 0;
}

        6.8、计算三个数字中较大的数字

/*输入三个数,按照从小到大的顺序输出:将最小的数放在a上,最大的数放在c上*/
#include<stdio.h>
int main() 
{	
	float a, b, c, t;
	printf("set the number of a,b,c");
	scanf_s("%f%f%f", &a, &b, &c);
	if (a > b)
	{
		t = a; a = b; b = t;
	}
	if (a > c)
	{
		t = a; a = c; c = t;
	}
	if (b > c)
	{
		t = b; b = c; c = t;
	}
	printf("%5.2f,%5.2f,%5.2f\n", a, b, c);
    return 0;
}

        6.9、银行存贷款利率模型(课本P84)

        6.10、计算器模型

#include<stdio.h>
int main(void){
	float num1 = 0.0, num2 = 0.0;
	char op, ch;
	do {	printf("请按格式%%f    %% c	  %%f 输入计算式:\n");
		scanf_s("%2f %1c %2f", &num1, &op, &num2);
		switch (op)
		{		case'+': printf("=%f\n", num1 + num2); break;
				case'-': printf("=%f\n", num1 - num2); break;
				case'*': printf("=%f\n", num1 * num2); break;
				case'/':{
					if (num2 == 0)
						printf("0不能作为被除数");
					else
						printf("=%f\n", num1 / num2);}
				case'%':{	
					if (num2 == 0)
						printf("0不能作为被除数");
					else
						printf("=%f\n", (long)num1 % (long)num2);
					break; }
				default:
					printf("错误:运算符非法!,运算符仅包括+、-、*、/、%\n");	}
		printf("是否继续练习(	Y/N )?");
		fflush(stdin);
		scanf_s("%1c", &ch);
	} while (ch == 'y' || ch == 'Y');
	return 0;}

        6.11、输入考试成绩,输出成绩的等级


/*给出一百分制成绩,要求输出成绩等级‘A’, ‘B’, ‘C’, ‘D’, ‘E’。
90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
*/
#include<stdio.h>
int main(void)
{
	float score;
	char grade;
	printf("请输入学生成绩:");
	scanf("%f", &score);
	while (score > 100 || score < 0)
	{
		printf("\n 输入有误,请重输");
		scanf("%f", &score);
	}
	switch ((int)(score / 10))
	{
	case 10:	case 9: grade = 'A'; break;
	case 8: grade = 'B'; break;
	case 7: grade = 'C'; break;
	case 6: grade = 'D'; break;
	case 5:	case 4:	case 3:	case 2:	case 1:	case 0: grade = 'E';
	}
	printf("成绩是 %5.1f,相应的等级是%c\n ", score, grade);
	return 0;
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值