【C语言】C语言数据类型和变量练习巩固

文章详细讲解了scanf和printf函数的使用技巧,包括格式化、占位符处理以及if语句的分支结构。通过实例展示了如何在C语言中进行整数比较、输出控制和条件判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、关于scanf函数说法正确的是?
A.scanf中也有占位符,占位符和后边的参数提供的地址一一对应。
B.scanf()处理所有占位符时,会自动过滤起首的空白字符,包括空格、制表符、换行符
C.scanf的占位符%s表示读取一个字符串,遇到空白字符也全部读取
D.scanf是库函数,库函数不需要包含头文件

正确答案:A

B:scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符,scanf输出字符占位符的时候,不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。

C:scanf的占位符%s表示读取一个字符串,遇到空白字符就停止读取

D:scanf需要包含stdio.h这个头文件的

2、关于printf函数说法错误的是?

A.printf()的作用是将参数文本输出到屏幕。它名字里面的f代表format(格式化),表示可以定制输出文本的格式。
B.printf()不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。
C.printf()可以在输出文本中指定占位符,“占位符”,就是这个位置可以用其他值代入。
D.printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n个

正确答案:D
printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1个。如果参数个数少于对于的占位符,printf()可能会输出内存中的任意值。(以下为示例)
在这里插入图片描述
3、下面程序输出的结果是?

#include <stdio.h>

int main()
{
    printf("%5d\n", 123456);
    return 0;
}

A.12345
B.123456
C.23456
D.0

正确答案:D

printf()允许限定占位符的最小宽度。%5d表示这个占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。如果超过5位,正常输出就行,5是最少输出5位。

4、关于if语句说法正确是:( )
A.if语句后面只能跟一条语句
B.if语句中0表示假,1表示真
C.if语句是一种分支语句,可以实现单分支,也可以实现多分支
D.else语句总是和它的对齐的if语句匹配

正确答案:C

答案解析:

A:错误,if之后可以跟多条语句,跟多条语句时需要使用{}括起来

B:错误,0表示假,非零表示真

C:正确

D:不一定,要看具体的代码,如果代码不规范,可能没有对齐,比如:


    if()
     if()
    else
     ;

上述else虽然是和外层if对齐,但是会和内部if进行匹配。

因此,选C

5、下面代码执行的结果是:( )

#include <stdio.h>

int main()
{
	int i = 0;
	for (i = 0; i<10; i++)
	{
		if (i = 5)
			printf("%d ", i);
	}
	return 0;
}

A.1 2 3 4 5 6 7 8 9 10
B.5 5 5 5 5 5 5 5 5 5
C.死循环的打印5
D.0 1 2 3 4 5 6 7 8 9

正确答案:C
答案解析:

上述代码本来的想法应该是:循环10次,每次循环时如果i==5则打印i的结果。

但if语句中表达式的==写成了赋值,相当于每次循环尽量都是将i的值设置成了5,5为真,因此每次都会打印5

i每次修改成5打印后,i的值永远不会等于10,因此造成死循环

故:死循环的打印5

因此:选择C

6、BC18 计算带余除法
在这里插入图片描述
参考(答案不唯一):

#include <stdio.h>

int main()
{
    int a = 0;
    int b = 0;
    scanf("%d %d", &a, &b);
    int m = a/b;
    int n = a%b;
    printf("%d %d\n", m, n);
    
    return 0;
}

7、BC41 你是天才吗?

在这里插入图片描述
参考(答案不唯一):

#include <stdio.h>


int main()
{
    int n = 0;
    while(scanf("%d", &n) != EOF)
    {
        if(n>=140)
            printf("Genius");
    }
    return 0;
}

8、BC49 判断两个数的大小关系

在这里插入图片描述
参考(答案不唯一):


```c
#include <stdio.h>


int main()
{
    int num1 = 0;
    int num2 = 0;
    while(scanf("%d%d", &num1, &num2) != EOF)
    {
        if(num1>num2)
            printf("%d>%d\n", num1, num2);
        else if(num1<num2)
            printf("%d<%d\n", num1, num2);
        else
            printf("%d=%d\n", num1, num2);
    }
    return 0;
}

9、BC83 被5整除问题
在这里插入图片描述
参考(答案不唯一):

#include <stdio.h>


int main()
{
    int n = 0;
    scanf("%d", &n);
    if(n%5==0)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}

10、BC56 线段图案
在这里插入图片描述
参考(答案不唯一):

#include <stdio.h>


int main()
{
    int n = 0;
    while(scanf("%d", &n)!=EOF)
    {
        int i = 0;
        for(i=0; i<n; i++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

11、写一个代码打印1-100之间所有3的倍数的数字。
参考(答案不唯一):

/*
解题思路:
1. 3的倍数一定能够被3整除,因此i%3==0表达式成立时,则i一定是3的倍数
2. 要输出1~100之间的3的倍数,那只需要从1~100循环100次即可,每次拿到i之后,用i%3==0检测
   如果成立:i是3的倍数,输出
   如果不成立:i不是3的倍数
*/
#include <stdio.h>
int main()
{
    int i = 0;
    for(i=1; i<=100; i++)
    {
        if(i%3==0)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

12、写代码将三个整数数按从大到小输出。

例如:

输入:2 3 1

输出:3 2 1

参考(答案不唯一):

/*
思路:
该题比较简单,参考代码
*/
#include <stdio.h>
int main()
{
    int a = 2;
    int b = 3;
    int c = 1;
    scanf("%d%d%d",&a, &b,&c);
    if(a<b)
    {
        int tmp = a;
        a = b;
        b = tmp;
    }
    if(a<c)
    {
        int tmp = a;
        a = c;
        c = tmp;
    }
    if(b<c)
    {
        int tmp = b;
        b = c;
        c = tmp;
    }
    printf("a=%d b=%d c=%d\n", a, b, c);
    return 0;
}
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值