《程序设计基础2021》题目集1 题解一

目录

引言

5-3 数字译码(字符->整数)

5-1 小写转大写(高级版)

tip:

5-2 大写转小写(基础版)

5-4 数字译码(整数->字符)

5-5 学英语(按序号读字母)

5-6

5-7 写出满足下列条件的C表达式。

5-8 写出满足下列条件的C表达式。

5-9

5-10实数的运算*

5-11 实数的运算*

tips:

5-12

5-13

5-14

5-15

5-16

5-17

5-18

5-19

5-20

5-21

5-22

篇尾


引言

为了代码美观,可读性强,注意代码的缩进

5-3 数字译码(字符->整数)

下面的程序输入数字字符 ( '0' ~ '9' ),输出对应的整数 ( 0 ~ 9 )。

请在空白处填写适当内容完成该程序。

#include 
int main(){
    char symbol;
    int number;
    scanf("%c",&symbol);
    number=(int)symbol-48;
    printf("%d\n",number);
    return 0;
}

5-1 小写转大写(高级版)

下面的程序输入小写字母,输出对应的大写字母。请在空白处填写表达式完成该程序。

#include 
#include 
int main(){
    char lower, upper;
    lower=getchar();
    upper=toupper(lower);
    putchar(upper);
    putchar('\n');
    return 0;
}

tip:

ctype.h 这个库我也不太了解,但是后面有提示用 toupper() 函数 

总之,就是一个处理字符的函数库的头文件(书上附录D.2有介绍)

5-2 大写转小写(基础版)

下面的程序输入大写字母,输出对应的小写字母。请在空白处填写表达式完成该程序。

#include 
int main(){
    char lower, upper;
    upper=getchar();
    lower=upper+32;
    putchar(lower);
    putchar('\n');
    return 0;
}

5-4 数字译码(整数->字符)

下面的程序输入整数 ( 0 ~ 9 ),输出对应的数字字符 ( '0' ~ '9' )。

请在空白处填写适当内容完成该程序。

#include 
int main(){
    int number;
    char symbol;
    scanf("%d",&number);
    symbol=(char)number+48;
    printf("%c\n",symbol);
    return 0;
}

5-5 学英语(按序号读字母)

为教会大家念英文字母,老师做了一张字母表,给字母编上序号。老师随机报出序号,让大家读出对应的字母。

《程序设计基础2021》题目集1 题解一_第1张图片

下面的程序输入序号(1 ~ 26),输出对应的大、小写字母。

#include 
int main(){
    int number;
    char upper, lower;
    scanf("%d", &number);
    upper=(char)number+64;
    lower=(char)number+96;
    printf("%c%c\n",upper,lower);
    return 0;
}

5-6

输入一个正整型数n,计算并输出n以内(包括n)最大的最多不超过10个能被11或19整除的正整数之和。

#include 
int main(){
    int i,n;
    int sum=0;
    scanf("%d",&n);
    i=0;
    while(n>0){
        if(n%11==0||n%19==0){
            sum=sum+n;
            i++;
        }
        if(i==10) break;
        n=n-1;
    }
    printf("%d\n",sum);
    return 0;
}

5-7 写出满足下列条件的C表达式。

① ch是大写英文字母。

ch>='A'&&ch<='z'

② ch不是小写英文字母。

ch<'a'||ch>'z'

③ ch是数字字符。

ch>='0'&&ch<='9'

④ ch是英文字母。

ch>='A'&&<='Z'||ch>='a'&&ch<='z'

5-8 写出满足下列条件的C表达式。

① -1x1

x<=1&&x>=-1

② x<-1或者x>1

x<-1||x>1

③ -1<x<1

x<1&&x>-1

④ x≤-1或者x≥1

x<=-1||x>=1

⑤ -1<x≤1

x<=1&&x>-1

5-9

写出满足条件10 < x < 100或者x < 0的C表达式。

x>10&&x<100||x<0

注意优先级结合方向,不知道就用括号 

5-10实数的运算*

假设有以下实型变量定义

double a;

已知 a 为非负实数,若希望完成下面的计算\sqrt{a}

则计算的表达式为(注:不考虑误差。)

sqrt(a)

5-11 实数的运算*

假设有以下实型变量定义

double a,b;

已知 a 为非负实数,若希望完成下面的计算a^b

则计算的表达式为(注:不考虑误差。)

pow(a,b)

tips:

这两题考的是 math.h 函数库,书附录 D.2 也有介绍

5-12

下面这段程序打印输入的整数num的各位数字之和(例如,输入123,则打印6;输入-12则打印3)。请填写空缺的代码。

#include 
int main(){
    int num;
    scanf("%d",&num);
    int sum;
    sum=0;
    if(num<0) num=-num;
    while(num>0){
        sum+=num%10;
        num=num/10;
    }
    printf("%d\n", sum);
    return 0;
}

5-13

输入2个整数a和b,交换其值,然后输出a和b的值。

#include
int main(void){    
    int a,b,temp;
    scanf("%d%d",&a,&b);
    temp=a;
    a=b; 
    b=temp;
    printf("%d %d\n",a,b);  
    return 0;
}

tips: 

注意,这到题是后面指针中swap那道题的原型,就是把交换的过程定义成了函数

5-14

某程序运行后,几组输入样例和相应的输出样例如下:

  • 输入1:-4 -0
  • 输出1:Error
  • 输入2:6 4
  • 输出2:6 = 1 * 4 + (2)
  • 输入3:-19 3
  • 输出3:-19 = -6 * 3 + (-1)

请填空完成该程序,使之正常运行能匹配上述用例。

#include 
int main(){
    int int1, int2;
    scanf("%d %d", &int1, &int2);
    if(int2 == 0)
        printf("Error\n");
    else
        printf("%d = %d * %d + (%d)\n",int1,int1/int2,int2,int1%int2);
    return 0;
}

考思维,找关系

5-15

用整数 1 表示”星期一“……整数 6 表示”星期六“,整数 0 表示”星期天“,下列程序根据用户输入的年份和该年 1 月 1 日所属的”星期几“,输出该年 12 月 31 日所属”星期几“。请完成补充下列程序。

【提示】某年份满足以下任一条件时,该年是闰年:1. 该年份能被 4 整除,但不能被 100 整除;2. 该年份能被 400 整除。

#include 
int main(){
    int year, firstWeekday;
    scanf("%d %d",&year,&firstWeekday);
    int lastWeekday=(year%4==0&&year%100!=0||year%400==0)?(firstWeekday+365)%7:(firstWeekday+364)%7;
    printf("31, December in %d is Weekday No.%d\n", year, lastWeekday);
    return 0;
}

有规律,闰年+1,平年不变

5-16

假设变量已正确定义并赋值,写出满足下列条件的C表达式。

取number的十位数字:

number/10%10

5-17

假设变量已正确定义并赋值,写出满足下列条件的C表达式。

取number的百位数字:

number/100%10

5-18

假设变量已正确定义并赋值,写出满足下列条件的C表达式。

number是奇数:

number%2==1

5-19

假设变量已正确定义并赋值,写出满足下列条件的C表达式。

number是5的倍数:

number%5==0

5-20

程序每次读入两个整数,第一个整数表示今天的星期(星期日,星期一……星期六对应:0,1,.……6),第二个整数表示偏移量(正数向后偏移:多少天以后,负数向前偏移:多少天以前),要求打印现偏移后的星期。如:3+(4):0,6+(-89):1。你可以假定输入的星期x在【0,6】内,测试偏移量确保在整数的范围内。

#include
int main(){
    int x,y,i;
    for(i=0;i<4;i++){
        scanf("%d%d",&x,&y);
        printf("%d+(%d):%d\n",x,y,(x+y%7+7)%7);
    }
    return 0;
}

 我不知道 (x+y%7 )%7) (x+y%7+7)%7) 有什么区别,但没有+7就是错了

5-21

所有三位数中十位数与个位数之和是偶数的数字有多少个?

请补充下面程序来实现。

#include
int main(){ 
    int count,i,g,s;
    count=0;
    for(i=100;i<=999;i++){    
        g=i%10;
        s=i/10%10;
        if((g+s)%2==0)
            count++;
        }
    printf("%d",count);
}

5-22

写出满足下列条件的C表达式。

① x 为零。

x==0

② x 和 y 不同时为零。

x==0||!x(!(x==0&&y==0))||(x!=0||y!=0)||(x||y)

篇尾

考了很多数据类型的知识,多看看 ASCII码表

你可能感兴趣的:(《程序设计基础2021》题目集,c语言)