C语言王道练习题第五周两题

发布时间:2024年01月21日

第一题

Description
输入一个整型数,存入变量i,通过子函数change把主函数的变量i除2,然后打印i
例如如果输入的为10,打印出5,如果输入的为7,打印出3
Input
一个整型数
Output
对应整型数除2后的商

代码

#include<stdio.h>
#include<string.h> //外部的头文件
void change(int *j){
    *j = *j / 2;
}
int main()
{
//Description
//输入一个整型数,存入变量i,通过子函数change把主函数的变量i除2,然后
//打印i,例如如果输入的为10,打印出5,如果输入的为7,打印出3
//Input
//一个整型数
//Output
//对应整型数除2后的商
    int i;
    scanf("%d",&i);
    change(&i);
    printf("%d\n",i);
    return 0;
}

第二题

Description
输入一个整型数,然后申请对应大小空间内存,然后读取一个字符串,字符串的输入长度小于最初输入的整型数大小,最后输出输入的字符串即可(无需考虑输入的字符串过长,超过了内存大小);
注意下面问题:
    char *p;
    scanf("%d",&n);
    p = malloc(n);
    scanf("%c",&c);//注意在scanf和gets中间使用scanf("%c",&c),去除换行
    gets(p);
Input
一个整型数和一个字符串,例如
10
hello
Output
一输出输入的字符串,上面输入的是hello,那么输出hello

代码

#include<stdio.h>
//#include<string.h>
#include<stdlib.h>
int main()
{
    int n;
    scanf("%d",&n);
    char c;
    scanf("%c",&c);//清除标准输入缓冲区中的\n
    char *p;
    p = (char*)malloc(n);//申请n个字节大小的空间,强制类型转换为char*
    gets(p);
    puts(p);
    return 0;
}

注意:

在读取字符之前没有清除输入缓冲区中的换行符,那么scanf("%c", &c)会直接读取到换行符,并将其赋值给变量c,而不会等待用户输入一个字符。这可能导致程序的逻辑错误。

文章来源:https://blog.csdn.net/m0_74343360/article/details/135723760
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。