c语言运用的一些要点

本文介绍了C语言中printf和scanf函数的返回值用法,printf返回输出的字符数,而scanf返回成功读取的参数个数。在处理大数时,使用字符数组并注意添加终止符。同时,强调了在类型转换后输出时要匹配相应的格式化字符串,如%lld,%ld和%d。
摘要由CSDN通过智能技术生成

一,printf和scanf函数返回值的运用和其中的注意要点

scanf函数返回值等于scanf中的参数个数,若有n个参数,则返回值为n

printf函数返回值比较特殊,函数的返回值为参数的个数与字符数的和

代码实现如下:

#include <stdio.h>
int main() 
{
    int m, n, a=4, b;
    m = printf("Hello world!\n");//其中有'\n'转义字符,也算上一个字符
    n = printf("Hello world!");
	b = printf("%d", a);
	printf("\n%d\n", b);//数值为1,因为只有a这一个参数
	b = printf("%d\n", a);
	printf("%d", b);//数值为2,因为有a,和'\n'两个参数
    printf("%d %d", m, n);//其中m输出值为13,n输出值为12
    return 0;
}

例题:

用scanf函数作为循环的运用判断三角形的形状 (主要是掌握scanf函数的返回值)

#include <stdio.h>
int main() {
    int a, b, c, x, y, z;
    while (scanf("%d %d %d", &a, &b, &c) == 3)//在键盘上按下Ctrl+c即可终止循环
    {
        if (a + b > c && a + c > b && b + c > a)
        {
            if (a == b && b == c)
                puts("Equilateral triangle!");
            else if (a == b || a == c || c == b)
                puts("Isosceles triangle!");
            else
                puts("Ordinary triangle!");
        }
        else
            puts("Not a triangle!");
    }
    return 0;
}

二,字符与字符串与整形之间的转换的注意要点

对于一些数值过大的数,例如99999999999999999999,长度过大,即便用long long型都不能存储下,这是就要用字符数组进行存储,但要注意,存储完之后要在字符数组的末尾加上'\0'字符,表示结束,否则将会出现错误

例题:

#include <stdio.h>
#include<string.h>
int main()
{
    int age, n = 0, i, j, k,a[100];
    char second[100];
    scanf("%d", &age);
    k = 3156 * age;
    while (k > 0)
    {
        j = k % 10;
        a[n] = j;
        n++;
        k /= 10;
    }
    for (i = n - 1, j = 0; i >= 0; --i, ++j)
        second[j] = a[i] + 48;
    second[j] = '\0';
    //如果没有这一步second[j]里面什么数据都没有,即second中没有结束标识符'\0',second中不会结束,将自动往后取值,产生错误
    strcat(second, "0000");//字符串的添加用此函数,单个字符可直接添加或赋值
    puts(second);
    return 0;
}//注意;对于int n和char arr[100];不可用arr[i]=(char)(n)进行转换,用其ASCII值,即arr[i]=n+48;

三,long long,long,int三个类型的注意

对于long long,long,int,%lld输出的是long long,%ld输出的是long,%d输出的是int

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    long long sec = age * 3.156e7;
    printf("%lld\n", sec);
    return 0;
}

很多人就是将类型转换完之后就忘记了对应的输出类型,若是输出类型没有与之对应,则将会出现错误答案 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值