首页 > 其他分享 >C语言小案例

C语言小案例

时间:2023-10-28 10:03:36浏览次数:34  
标签:case int 31 C语言 break 案例 printf include

1.从键盘输入3个实数,输出其中的最大值、最小值和平均值

#include<stdio.h>
int main(){
	double number[3];
	double max,min,average=0;
	int i;
	printf("Please input three numbers:");
	for(i=0;i<3;i++){
		scanf("%lf",&number[i]);
	}
	max=min=number[0];
	for(i=1;i<3;i++){
		if(number[i]>max){
		    max=number[i];
	    }
		if(number[i]<min){
		    min=number[i];
	    }
	}
	average=(number[0]+number[1]+number[2])/3.0; 
	printf("最大值:%.2lf;最小值:%.2lf;平均值:%.2lf\n",max,min,average);
	return 0;
}

2.输入一个整型数,判断奇偶

#include<stdio.h>
int main(){
	int number;
	printf("Please input number:");
	scanf("%d",&number);
	if(number%2!=0){
		printf("%d是奇数。",number);
	}else{
		printf("%d是偶数。",number);
	}
	return 0;
}

3.输入一个代码ASCII码的整数。如果该整数是某个字母的ASCII码,输出该字符。否则发出一声“嘟”并显示“非法输入”。

#include<stdio.h>
int main(){
	int number;
	printf("Please input number:");
	scanf("%d",&number);
	if(number>=65&number<=90 || number>=97&number<=122 ){
		printf("ASCII字符为:%c",number); 
	}else{
		printf("%c",'\007'); 
		printf("非法输入");
	}
	
	return 0;
}

4.输入2个二维平面上的点,判断哪个点离(0,0)更近。【可借鉴欧几里德距离公式】

#include<stdio.h>
#include<math.h>
int main(){
	double x1,y1,x2,y2;
	double distance1=0,distance2=0;
	printf("Please input two coordinate:");
	scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
	distance1=sqrt(pow(x1,2)+pow(y1,2));
	distance2=sqrt(pow(x2,2)+pow(y2,2));
	if(distance1<distance2){
		printf("点1更近");
	}else{
		printf("点2更近");
	}
	return 0;
}

5.输入一个二维平面上的直线方程,判断该方程与x和y轴是否有交点,输出交点坐标。

#include<stdio.h>
//直线方程可表示为:y=mx+b
int main(){
	double m;  //m为斜率 
	double x,y;
	double b;  //b为截距 
	printf("Please input m,b:");
	scanf("%lf %lf",&m,&b);
	//判断与x轴的交点 
	if(m==0){
		printf("直线与x轴平行,无交点。");
	}else{
		y=0;
		x=(b/m);
		printf("与x轴交点坐标为:(%.2lf,%.2lf)。",x,y);
	}
	//判断与y轴的交点 
	if(m == INFINITY || m == -INFINITY){
		printf("直线与y轴平行,无交点。");
	}else{
		x=0;
		y=b;
		printf("与y轴交点坐标为:(%.2lf,%.2lf)。",x,y);
	}
	return 0;
}

6.输入一个角度,判断它的正弦值是正数还是负数。

#include<stdio.h>
#include<math.h>
int main(){
	double PI=3.14;
	double x,result=0;
	printf("Please input x:");
	scanf("%lf",&x);
	result=sin(x*PI/180);
	if(result>0){
		printf("%2lf的正弦值是正数。",x);
	}else{
		printf("%.2lf的正弦值是负数。",x);
	}
	return 0;
}

7.输入一个字母,判断它是元音字母还是辅音字母。用switch语句实现。

#include<stdio.h>
int main(){
	char s;
	printf("Please input s:");
	switch(s=getchar()){
		case 'a':
			printf("%c是元音字母。",s); 
			break;
		case 'e':
			printf("%c是元音字母。",s);
			break;
		case 'i':
			printf("%c是元音字母。",s); 
			break;
		case 'o':
			printf("%c是元音字母。",s);
			break;
		case 'u':
			printf("%c是元音字母。",s);
			break;
		default:
			printf("%c是辅音字母。",s);
			break; 
	}
	return 0;
}

8.输入3个非0整数,判断三个值是否能构成一个三角形,并判断构成的是什么三角形。

#include<stdio.h>
#include<math.h>
int main(){
	int x,y,z;
	printf("Please input x,y,z:");
	scanf("%d %d %d",&x,&y,&z);
	if(x+y>z&&x+z>y&&y+z>x){
		printf("该三条边可以构成一个三角形。\n");
		if(x==y&&x==z&&y==z){
		    printf("%d、%d、%d构成的是等边三角形。",x,y,z);
	    }else if(x==y||x==z||y==z){
		    printf("%d、%d、%d构成的是等腰三角形。",x,y,z);
        } 
        if(pow(x,2)+pow(y,2)==pow(z,2) || pow(x,2)+pow(z,2)==pow(y,2) || pow(y,2)+pow(z,2)==pow(x,2)){
		    printf("%d、%d、%d构成的是直角三角形。",x,y,z);
        }
	}else{
		printf("该三条边无法构成一个三角形。");
	}
	return 0;
}

9.凯撒密码是将每个字母循环后移3个位置后输出。编一个程序,输入一个字母,输出加密后的密码。

#include<stdio.h>
int main(){
	char s;
	printf("Please input s:");
	scanf("%c",&s);
	s=s+3;
	printf("加密后的字符为:%c\n",s);
	return 0;
}

拓展:如何对一串密码进行加密呢?比如:acdef-->dfghj

#include<stdio.h>
int main(){
	int i,j;
	char s[100];
	printf("Please input s:");
	for(i=0;i<6;i++){
		scanf("%c",&s[i]); 
		s[i]=s[i]+3;
	}
	printf("加密后的字符串为:");
	for(i=0;i<6;i++){
		printf("%c",s[i]);
	}
	return 0;
}

10.已知2017年1月1日是星期日,编一程序计算2017年的某一天是星期几。

思路一:直接输入天数

#include <stdio.h>
#include <string.h>

char* weekname[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

int NOLEAP_MON[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31};
int LEAP_MON[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31};

 isLeap(int year) {
    return (year%400==0) || (year%4==0 && year%100!=0);
}

int countDays(int year,int mon,int day) {
    int i,total = 0,j;
    if (year< 1980) {
        total = 0;
        for(i=1979; i>year; i--) {
            total += 365;
            if(isLeap(i)) total ++;
        }
        if(isLeap(year)) {
            for(i=12; i>mon; i--) total += LEAP_MON[i];
            total += LEAP_MON[mon] - day +1;
        } else {
            for(i=12; i>mon; i--) total += NOLEAP_MON[i];
            total += NOLEAP_MON[mon] - day +1;
        }
        total = - total;
    } else {
        total = 0;
        for(i=1980; i<year; i++) {
            total += 365;
            if(isLeap(i)) total ++;
        }
        if(isLeap(year)) {
            for(i=1; i<mon; i++) total += LEAP_MON[i];
            total += day;
        } else {
            for(i=1; i<mon; i++) total += NOLEAP_MON[i];
            total += day;
        }
    }
    return total;
}

int main() {
    int year = 2017;
    int day;
    printf("Please enter the day of the year: ");
    scanf("%d", &day);
    int total = countDays(year, 1, 1) + day;
    int weekday = total % 7;
    printf("The day is %s.\n", weekname[weekday]);
    return 0;
}

思路二:分别输入年份,月份和天数(这个月的任意一天)

#include <stdio.h>
int main()
{
    int year, month, day;
    int days = 0;
    int week;
    printf("请输入年份:");
    scanf("%d", &year);
    printf("请输入月份:");
    scanf("%d", &month);
    printf("请输入日期:");
    scanf("%d", &day);

    // 计算输入日期与2017年1月1日之间的天数差
    for (int i = 2017; i < year; i++) {
        if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
            days += 366;
        } else {
            days += 365;
        }
    }
    for (int i = 1; i < month; i++) {
        switch (i) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                days += 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days += 30;
                break;
            case 2:
                if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
                    days += 29;
                } else {
                    days += 28;
                }
                break;
        }
    }
    days += day - 1;
    // 计算星期几
    week = (days + 7) % 7;
    switch (week) {
        case 0:
            printf("星期日\n");
            break;
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
    }
    return 0;
}

C语言小案例_#include

标签:case,int,31,C语言,break,案例,printf,include
From: https://blog.51cto.com/u_16174658/8066606

相关文章

  • B站C语言第三课
    1,字符串的结束标志:’\0'//"abcdef";//'\0'-转义字符-0//0->数字0//‘0’->48//'a''b''c''0''1''2'//EOF-endoffile-文件结束标志 -1return0;2,~按(2进制)位取反1010----0101//原码--------......
  • C语言--数组
    数组:一维数组1.一维数组的创建数组是一组相同类型的元素的集合。数组的创建:数组的元素类型数组名常量表达式(指定数组的大小)type_tarr_name[const_n]数组创建的实例:#include<stdio.h>intmain(){chararr1[10];intarr2[10......
  • 软考系列(系统架构师)- 2013年系统架构师软考案例分析考点
    试题一软件架构(根据描述填表、ESB定义和功能)【问题1】(10分)服务建模是对RampCoordination信息系统进行集成的首要工作,公司的架构师首先对RampCoordination信息系统进行服务建模,识别出系统中的两个主要业务服务组件:(1)RampControl:负责RampCoordination信息系统中相关各种......
  • Vsan数据恢复—异常断电Vsan存储上层虚拟机无法启动的数据恢复案例
    Vsan分布式存储故障&检测:异常断电导致一台vsan存储设备上层虚拟机无法启动。将故障Vsan存储上的所有磁盘编号后取出,由北亚企安的硬件工程师对vsan存储上的所有硬盘进行物理故障检测,经过检测没有发现硬盘存在物理故障。vsan存储结构简图:将vsan存储中所有硬盘以只读方式做全盘镜......
  • 数据库设计案例
    CREATETABLEMusic(titleVARCHAR(32),aliasVARCHAR(32),imageVARCHAR(64),idINTPRIMARYKEY);CREATETABLESong(NAMEVARCHAR(32),serial_numberTINYINT,idINTPRIMARYKEY,music_idINT,CONSTRAINTfk_music_songFOREIGNKEY(music_id)REFE......
  • ChatGPT 实用小案例分享——使用Python重命名附件和统计发票合计金额
    大家好,我是皮皮。一、前言前几天在【志军】的星球看到了一个有意思的ChatGPT分享,正好喝Python相关的,一起来看看吧。ChatGPT实用小案例分享。如果你在高德或者滴滴上申请过开票,应该知道它们会给我们发一封邮件,发票和行程单都会放在附件中。由于高德是聚合平台,背后有很多网约车平台,......
  • C语言获取结构体变量地址并且输出结构体变量任意地址的数据
    #include<stdio.h>typedefstructTest{floatItem1;charItem2;intItem3;shortItem4;longItem5;doubleItem6;}TestStr1;intmain(){structTestTestStr;void*Ptr;TestStr.Item1=1.11;TestStr.It......
  • c语言代码练习40
    问:实现两个字符串的比较#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>intmain(){char*p1="abcdefg";char*p2="abcder";intret=strcmp(p1,p2);if(ret==0......
  • c语言代码练习39
    问:实现两个字符串的追加#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>intmain(){chararr1[20]="abcdef";chararr2[]="yue";strcat(arr1,arr2);printf("......
  • c语言代码练习38
    问:实现字符串的拷贝#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<assert.h>#include<string.h>intmain(){chararr1[]="abcdef";chararr2[]="bit";strcpy(arr1,arr2);printf("%s&q......