19_1_C语言基础_Lab01~04_数据类型/关系&逻辑运算符及表达式/选择结构

大小写转换

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char ch1,ch2;
    scanf("%c",&ch1);
    ch2 = ch1 + 32;
    printf("%c\n",ch1-'A'+'a');//method1
    printf("%c\n",tolower(ch1));//method2
    printf("%c\n",ch2);//method3
    return 0;
}

求个位和十位

用户输入(1-100)之间的数num,请写程序输出num的个位和十位数的值。输入:1-100之间的整数;输出:个位数 十位数
输入:29
输出:9 2

输入:9
输出:9 0

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    int shi;
    int ge;

    scanf("%d",&num);

    shi = num/10;
    ge = num-10*shi;

    printf("%d %d",ge,shi);
    return 0;
}

温度转换

(变量与表达式)输入华氏温度(不超过2位小数),输出对应的摄氏温度(整数)。华氏温度与摄氏温度的转换公式为:c = 5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。
输入输出示例:括号内为说明
输入
150.0 (fahr=150)
输出
celsius = 65

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float fahr;
    int celsius;

    scanf("%f",&fahr);

    celsius = 5*(fahr-32)/9;

    printf("celsius = %d",celsius);

    return 0;
}

数据类型的最值

请编程输出char类型和int型的最大值和最小值。输出格式要求:每行输出一个值,其顺序是char的最大值,char的最小值,int的最大值,int的最小值。

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main()
{
    printf("%d\n%d\n%d\n%d\n",CHAR_MAX,CHAR_MIN,INT_MAX,INT_MIN);

    return 0;
}

无符号类型的最值

请编程输出unsigned int 类型和unsigned long long 类型的最大值。输出格式要求:每行输出一个值,其顺序是unsigned int 类型的最大值,unsigned long long 类型的最大值。

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main()
{
    
    printf("%u\n%llu\n",UINT_MAX,ULLONG_MAX);

    return 0;
}

查找ASCII码表

小明需要你来帮助他查找ASCII码表,小明报出一个整数其范围在0-127之间,你告诉小明该整数在ASCII码表的字符信息。请编程实现上述功能。程序输入为0-127之间的整数,输出为该整数对应的字符信息。
例如:
输入:97
输出:a

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    scanf("%d",&num);
    printf("%c",num);
    return 0;
}

购房还款

购房还款: Description,购房者从银行贷了一笔款d,已知每月还款额为p,月利率为r。请编写程序计算需要几个月才能还清贷款。例如:d=300000,p=6000,r=1%,则需70个月还清。输入三个整数d,p和r,三个整数之间用空格分隔。
上述例子的输入为:300000 6000 1
在一行中输出需要还清的月数(四舍五入到整数)。
Hint:还清月数m的计算公式如下:m=log(p/(p-d*r))/log(1+r)

0<=d<=1000000
0<=p<=20000
0<=r<=5

公式中的log(x)表示以e为底的对数。C语言的标准库函数中有计算以e为底的对数的函数log()。
Note:
(1)、调用库函数log(),在程序开头加上一行: #include <对应头文件>
(2)、库函数和头文件的对应关系可以参考Beginning c或者自己查阅资料。
Input
在一行中输入用空格分隔的三个整数。
Output
在一行中输出需要还清的月数(四舍五入到整数)。注意:需要换行。
Sample Input
300000 6000 1
Sample Output
70

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    float loan,pay,rate,answerf,rate1;
    int answer;

    //0<=loan<=1000000
    //0<=pay<=20000
    //0<=rate<=5


    scanf("%f %f %f%%",&loan,&pay,&rate);

    if(rate==0)
    {
        printf("0");
    }

    else
    {
       rate1=rate/100.0;
       answerf =log(pay/(pay-loan*rate1))/log(1+rate1);
       answer = (int)(answerf+0.5);//四舍五入可用ceil()函数
       printf("%d",answer);
    }
    return 0;
}

输入格式

编写程序读取两组输入数据:
第一组值为:2 3 4回车
第二组值为:2,3,4回车

输出从键盘读入到的信息。

【输入】
2 3 4
7, 8, 9
【输出】
2 3 4
7 8 9

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int no1,no2,no3,no4,no5,no6;
    scanf("%d %d %d %d, %d, %d,",&no1,&no2,&no3,&no4,&no5,&no6);
    printf("%d %d %d\n%d %d %d\n",no1,no2,no3,no4,no5,no6);
    return 0;
}

较大的数

在一行中输入用一个空格分隔的两个整数,输出两个整数中的较大的那个数。

【input】两个整数
【output】两个整数较大的数

【input】 2 3
【output】3

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num1,num2;
    scanf("%d %d",&num1,&num2);

    if(num1>num2)
        printf("%d",num1);
    else
        printf("%d",num2);
    return 0;
}

返回x中第p位开始的n位数

用户输入无符号整数x, p, n的值,请实现返回x中从右边数第p位至第p-n+1位(二进制位)的值。(假设:最右边的二进制位第0位)
【输入】x p n (p的取值在0-31之间)(1<=n<=p+1)
【输出】x中第p位开始的n位数

【输入】 5 1 2(截取5的从第1位开始到第0位的所有信息)
【输出】1

说明:5存储的信息为:0000 0000 0000 0000 0000 0000 0000 0101
返回从右边数的第1位到第0位之间的值:
结果为:
0000 0000 0000 0000 0000 0000 0000 0001

【输入】 106 7 4(截取5的从第7位开始到第4位的所有信息)
【输出】6
说明106的存储信息为:0000 0000 0000 0000 0000 0000 01101010
返回从右边数的第7位到第4位之间的值:
0000 0000 0000 0000 0000 0000 0000 0110

#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned int num,left,length;
    scanf("%u %u %u",&num,&left,&length);
    //char num2[32];
    //printf("original num:%032s\n", itoa(num, num2, 2));
    /*if(length>=31)
        printf("0");
    else
        num = (num>>(left+1-length))&(~(~0<<length));*/
    num = num<<(32-(left+1));
    //char num3[32];
    //printf("left:%032s\n", itoa(num, num3, 2));

    num = num>>(32-length);
    //char num4[32];
    //printf("right:%032s\n", itoa(num, num4, 2));

    printf("%u",num);
    return 0;
}

x中的第p位开始的n个bit求反

用户输入无符号整数x, p, n的值,请实现:将x中的右边数第p位至第p-n+1位的值求反,x的其余各位保持不变。

【输入】x p n
【输出】x中第p位开始的n位数求反,其余不变

【输入】 5 1 2(5的从第1位开始到第0位的所有信息求反)
【输出】6

说明:5存储的信息为:0000 0000 0000 0000 0000 0000 0000 0101
从右边数的第1位到第0位之间的值求反:
结果为:
0000 0000 0000 0000 0000 0000 0000 0110

【输入】 106 7 4(106的从第7位开始到第4位的所有信息取反)
【输出】154
说明106的存储信息为:0000 0000 0000 0000 0000 0000 01101010
从右边数的第7位到第4位之间的值求反:
0000 0000 0000 0000 0000 0000 10011010

#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned int num,left,length;
    scanf("%u %u %u",&num,&left,&length);
    //char num2[32];
    //printf("original num:%032s\n", itoa(num, num2, 2));

    //num = num<<(32-(left+1));
    //char num3[32];
    //printf("left:%032s\n", itoa(num, num3, 2));

    //num = num>>(32-length);
    //char num4[32];
    //printf("right:%032s\n", itoa(num, num4, 2));

    printf("%u",num^((~(~0 << length) << (left-length+1))));



    return 0;
}

任意字符转小写字母

用户从键盘输入任意的字符,请编写程序将大写字母转换成对应的小写字母,如果用户输入的不是大写字母则输出提示信息即可。

【输入】任意字符
【输出】 小写字母/或者错误信息

【输入】B
【输出】b

【输入】3
【输出】error

【输入】t
【输出】error

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char ch1;
    scanf("%c",&ch1);
    if(ch1>=65&&ch1<=90)
        printf("%c",ch1-'A'+'a');
    else
        printf("error");
    return 0;
}

三个数的最大值

编写程序求解3个整数的最大值

【输入】3个整数
【输出】整数的最大值

e.g.
[input] 2 5 1
[output]5

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num1,num2,num3;

    scanf("%d %d %d",&num1,&num2,&num3);

    if(num1>num2&&num1>num3)
        printf("%d",num1);
    else if (num2>num1&&num2>num3)
        printf("%d",num2);
    else if (num3>num1&&num3>num1)
        printf("%d",num3);
    else printf("%d",num1);


    return 0;
}

四个数的最大值

编写程序求解4个数的最大值

【input】4个整数
【output】最大值

e.g.
【input】1 4 6 3
【output】6

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num1,num2,num3,num4;
    scanf("%d %d %d %d",&num1,&num2,&num3,&num4);

    if (num1-num2>=0)
        num1 = num1;
    else num1 = num2;

    if (num3-num4>=0)
        num3 = num3;
    else num3 = num4;

    if (num1-num3>=0)
        printf("%d",num1);
    else printf("%d",num3);
    return 0;
}

三个数的中间值

编写程序求解3个数的中间值;若三个数中存在两个数相等的情况,则任意输出这两个数的值即可;例如:a=5;b=5;c=8;程序输出5;

【输入】3个整数
【输出】处于中间值的数

e.g.
[input] 2 5 1
[output]2

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num1,num2,num3,max,min;

    scanf("%d %d %d",&num1,&num2,&num3);

    max = num1 > num2 ? num1 : num2;
    max = max > num3 ? max : num3;
    min = num1 < num2 ? num1 : num2;
    min = min < num3 ? min : num3;
    num1 = num1+num2+num3-max-min;
    printf("%d",num1);
    return 0;
}

三分支输出

有一函数
y= -1 (x<0)
y= 0 (x=0)
y= 1 (x>0)
编写程序,输入一个x值,输出y值。
【输入】 x值(整数)
【输出】y值

e.g
【输入】 255
【输出】1

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    scanf("%d",&num);
    if (num>0)
        printf("1");
    else if (num==0)
        printf("0");
    else printf("-1");
    return 0;
}

星期的输出

Switch语句:用户输入1-7表示星期的数字,请输出对应的星期说明,如输入1,输出Monday;输入7,输出 Sunday

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int day;
    scanf("%d",&day);
    switch(day)
    {
    case 1:
        printf("Monday");
        break;
    case 2:
        printf("Tuesday");
        break;
    case 3:
        printf("Wednesday");
        break;
    case 4:
        printf("Thursday");
        break;
    case 5:
        printf("Friday");
        break;
    case 6:
        printf("Saturday");
        break;
    case 7:
        printf("Sunday");
        break;
    }

    return 0;
}

元音辅音字母

Switch语句:用户输入小写字母 a,e,i,o,u,则输出原音字母,输入其他的小写字母,则输出辅音字母,小写字母之外的则输出: 输入错误;

【输入】一个字符
【输出】vowel(元音)、consonant(辅音)或者error

e.g.
【输入】a
【输出】vowel

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char letter;
    scanf("%c",&letter);

    if (letter<=122&&letter>=97)
    {
        switch(letter)
        {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            printf("vowel");
            break;
        default:
            printf("consonant");
            break;
        }
    }
    else printf("error");
    return 0;
}

加减乘除

编写简单的计算器执行+,-,,/的操作,例如627 ,3+6等,输出其结果;
【输入】加减乘除表达式(整数)
【输出】预算结果

e.g.
【输入】3+6=
【输出】9

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num1,num2;
    char sym;

    scanf("%d%c%d=",&num1,&sym,&num2);
    //printf("%d%c%d",num1,sym,num2);
    switch(sym)
    {
    case '+':
        printf("%d",num1+num2);
        break;
    case '-':
        printf("%d",num1-num2);
        break;
    case '*':
        printf("%d",num1*num2);
        break;
    case '/':
        printf("%d",num1/num2);
        break;
    default:
        break;
    }
    return 0;
}

日期翻译器

用户输入3个整数值,分别代表日、月、年。例如用户输入31 12 2003,程序就以31st December 2003的格式输出日期。
*必须在日期值的后面加上th、nd、st和rd。例如1st、2nd、3rd、4th、11th、12th、13th、14th、21st、22nd、23rd、24th

【输入】三个整数( 日、月、 年)
【输出】翻译后的日期(日 月 年)

e.g.
【输入】31 12 2003
【输出】31st December 2003

#include <stdio.h>
#include <stdlib.h>

int main()
{

    int day,month,year;
    char* dayc;
    char* monthc;
    //char fst = "st",sec = "nd",thd = "rd";
    scanf("%d %d %d",&day,&month,&year);

    switch(day)
    {
    case 1:
    case 21:
    case 31:
        dayc = "st";
        break;
    case 2:
    case 22:
        dayc = "nd";
        break;
    case 3:
    case 23:
        dayc = "rd";
        break;
    default:
        dayc = "th";
        break;
    }


    //printf("%s\n",dayc);

    switch(month)
    {
    case 1:
        monthc = "January";
        break;
    case 2:
        monthc = "February";
        break;
    case 3:
        monthc = "March";
        break;
    case 4:
        monthc = "April";
        break;
    case 5:
        monthc = "May";
        break;
    case 6:
        monthc = "June";
        break;
    case 7:
        monthc = "July";
        break;
    case 8:
        monthc = "August";
        break;
    case 9:
        monthc = "September";
        break;
    case 10:
        monthc = "October";
        break;
    case 11:
        monthc = "November";
        break;
    case 12:
        monthc = "December";
        break;
    default:
        break;
    }


    //printf("%s\n",monthc);

    printf("%d%s %s %d",day,dayc,monthc,year);

    return 0;
}

闰年

(选择)用户输入年和月,你的程序判断该年是否闰年,并根据给出的月份判断当前的季节和该月有多少天?闰年的条件是年份能够被4整除但不能被100整除,或者能被400整除。3-5月为春季,依此类推。答案间用空格隔开。
样例输入1:
2018 10
样例输出1:
CommonYear Autumn 31
样例输入2:
2008 8
样例输出2:
LeapYear Summer 31

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int year,month;
    scanf("%d %d",&year,&month);

    if((year%4==0&&year%100!=0)||(year%400==0))
        printf("LeapYear ");
    else printf("CommonYear ");

    switch(month)
    {
    case 3:
    case 4:
    case 5:
        printf("Spring ");
        break;
    case 6:
    case 7:
    case 8:
        printf("Summer ");
        break;
    case 9:
    case 10:
    case 11:
        printf("Autumn ");
        break;
    default:
		printf("Winter ");
        break;
    }

    if(((year%4==0&&year%100!=0)||(year%400==0))&&(month==2))
        printf("29");
        else if (month==2)
        printf("28");
        else if (month!=2)
        {
            switch(month)
            {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                printf("31");
                break;
            default:
                printf("30");
                break;
            }
        }



    return 0;
}


剪刀石头布

(选择)Alice 与 Bob 玩剪刀石头布的游戏。请你输出游戏的结果。
【输入】
两个大写字母,以空格隔开。
第一个字母代表 Alice 的选择,第一个字母代表 Bob 的选择。
S 代表剪刀,R 代表石头,C 代表布。输入中不会出现其它字符。
【输出】
一个字符串,为胜利的玩家的名称,行末没有换行。
如果 Alice 获胜,则输出 Alice ;
如果 Bob 获胜,则输出 Bob ;
如果平局,则输出 Tie 。
【样例输入】
S R
【样例输出】
Bob

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char alice,bob;
    int num;
    scanf("%c %c",&alice,&bob);
    //S83 R82 C67 S83>C67 = 16 C67>R82 = -15 R82>S83 = -1
    num = alice - bob;
    //printf("%d",num);
    switch(num)
    {
    case 16:
    case -15:
    case -1:
        printf("Alice");
        break;
    case 0:
        printf("Tie");
        break;
    default:
        printf("Bob");
			break;

    }

    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值