期中复习2023.12

#include<stdio.h>
/*输入一个字符,输出ASCII码值*/
int main(){ 
	char ascii;//字符型 
	printf("请输入一个字符(我会输出其ASCII码值):"); 
	scanf("%c",&ascii);
	printf("其ascii码值为:%d",ascii);
	return 0;
} 
#include<ttdio.h>
int main(){
	float x,y;
	scanf("%f",&x);//float型数据输入用%f 
	y = pow(x,2);//调用函数在头文件math.h中 
	printf("%.1f",y);//保留一位小数 
	return 0;
}
#include<stdio.h>
int main(){
	char ch,diff;
	diff = 'A' - 'a';//可以用单引号''引单个字符表示其ASCII码值 
	scanf("%c",&ch);
	if(ch >= 'a'&&ch <= 'z'){
		printf("%c",ch + diff);
	}
	else if(ch >= 'A'&&ch <= 'Z'){
		printf("%c",ch - diff);
	}
	else{
		printf("%c",ch);
	}
	return 0;
}
#include<stdio.h>
int main(){
	/*将摄氏度转化为华氏度*/ 
	float f,c;
	scanf("%f",&f);
	c=5.0 / 9 * (f - 32); /*需要加上5.0小数点,因为计算是从右到左计算的,如果不加就会被当作整数*/ 
	printf("%.2f",c);
	return 0;
} 
#include<stdio.h>
int main(){
	/*简单地判断三角形*/ 
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c); 
	if(a + b > c&&a + c > b&&b + c > a){
		if(a == b&&b == c){
			printf("等边三角形");
		}
		else if(a*a + b*b == c*c||a*a + c*c == b*b||b*b + c*c == a*a)
		printf("直角三角形"); 
		else if(a == b&&b != c||a == c&&c != b||b == c&&c != a)
		printf("等腰三角形");
		else if((a == b||a == c||b == c)&&(a == b&&b != c||a == c&&c != b||b == c&&c != a))
		printf("等腰直角三角形");
		else
		printf("一般三角形");
	}
	else
		printf("不能构成三角形");
	return 0;
}
#include<stdio.h>
int main(){
	int a,b,c,d,hour,minute1,minute2,e,f,time;
	scanf("%d %d %d %d",&a,&b,&c,&d);
	minute1 = a * 60 + b;
	minute2 = c * 60 + d;
	time = minute2 - minute1;
	e = time / 60;
	f = time % 60;
	printf("%d %d",e,f);
	return 0;
}
#include<stdio.h>
int main(){
	/*简单的加减乘除运算器*/ 
	float num1,num2,re;
	char ch;
	scanf("%f %f %c",&num1,&num2,&ch);
	if(ch == '+') re = num1 + num2;
	else if(ch == '-') re = num1 - num2;/*应该使用''单引号*/ 
	else if(ch == '*') re = num1 * num2;
	else if(ch == '/') re = num1 / num2;
	printf("%.2f",re);
	return 0;
}
{
	int a,b,c;
	float area,perimeter,s; 
	scanf("%d %d %d",&a,&b,&c);
	if((a+b>c)&&(a+c>b)&&(b+c>a)){
		s=(a+b+c)/2.0;//这里也需要使用小数点
		area=sqrt(s*(s-a)*(s-b)*(s-c));
		perimeter=2*s;
		printf("area: %.2f\nperimeter: %.2f",area,perimeter);
	}
	else{
		printf("These sides do not correspond to a valid triangle");
	}
	return 0;
}

#include<stdio.h>
int main(){
	int sum = 0;
	int n,m;
	scanf("%d",&n);
	int i;
	for(i = 1;i<= n;i++){
		sum += F(i);
	} 
	printf("%d",sum);
	return 0;
}
int F(int n){
	if(n == 1||n == 2) return 0;
	else if(n == 3) return 1;
	else{
		int re = F(n - 1) + F(n - 2) + F(n - 3);
		return re;
	}
} /* 0 0 1 1 2 4 7 13 24 44*/
#include<stdio.h>
int main(){
    /*五分制成绩人数*/
	int n,number,i;
	int A=0, B=0, C=0, D=0, E=0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		scanf("%d", &number);
		if (number >= 90)
			A += 1;
		else if (number >= 80 && number < 90)
			B += 1;
		else if (number >= 70 && number < 80)
			C += 1;
		else if (number >= 60 && number < 70)
			D += 1;
		else E += 1;
	}
	printf("%d %d %d %d %d\n", A, B, C, D, E);
	return 0;
}

这里是一个充分利用位数、除数、余数的例子,可以从根本理解进制转换运算

#include<stdio.h>
#include<math.h>
void narcissistic(int lower,int upper);
int main(){
    int lower,upper;
    scanf("%d %d",&lower,&upper);
    narcissistic(lower,upper);
    return 0; 
}
void narcissistic(int lower,int upper){
    int number,sum,num;
    int n = 0,re = 0;  /*初值化位数,余数 */ 
    for(number = lower;number <= upper;number++){

    	num = number; /*初值化num,只保证number在for循环里变化*/ 
    	sum = 0;   /*重置位数和 */
    	n = 0; /*重置位数n*/ 

        while (num != 0){
           num /= 10;
           n++; /*计算位数*/
        }

        num = number;/*重置num不随计算改变*/ 
        re = 0;/*重置余数 */

        while (num != 0){
           re = num % 10;
           sum += pow(re,n);/*计算每位的和*/
           num /= 10;
        }

        if (sum == number) printf("%d\n",number);
    }
}

 下面的例子也是能够帮助理解,每一位上的运算。

一个整数的“反置数”指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数是5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。

输入格式:输入只有一行,包括两个整数,中间用空格隔开。

输出格式:输出只有一行,即相应的结果。

输入样例: 435 754

输出样例: 199

#include<stdio.h>
#include<math.h>
int opp(int num);
int main(){
/*反置数的计算*/
    int num1,num2,newnum1,newnum2;
    int sum;
    scanf("%d%d",&num1,&num2);
    newnum1 = opp(num1);
    newnum2 = opp(num2);
    sum = newnum1 + newnum2;
    printf("%d",opp(sum));
    return 0;
}
int opp(int num){
    int n = 0,i = 0;
    int newnum = 0;
    int number = num;
    while(number != 0){
        number /= 10;
        n++;
    }
    i = n;
    while(i >= 0){
        for(i = n - 1;i >= 0;i--){
            newnum += (num % 10) * pow (10,i);
            num /= 10;
        }
    }
    return newnum;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

maymemaomao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值