加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

C语言回顾(二、顺序程序及大数相加)——iOS开发基础

发布时间:2020-12-14 02:31:38 所属栏目:大数据 来源:网络整理
导读:说明: 在学习UI高级知识之前,将利用最近十来天的时间回顾一下C语言,主要按照《C程序设计(谭浩强版)》来回顾。 整理一些知识点( 不是细节,知识个人觉得较重要或易忘的 )以及挑一些课后题目或经典习题编写代码练习。 第3章 最简单的C程序设计——顺序

说明:
在学习UI高级知识之前,将利用最近十来天的时间回顾一下C语言,主要按照《C程序设计(谭浩强版)》来回顾。
整理一些知识点(不是细节,知识个人觉得较重要或易忘的)以及挑一些课后题目或经典习题编写代码练习。


第3章 最简单的C程序设计——顺序程序设计


1、转义字符:将“”后面的字符转变成另外的含义

转义字符 字符值
’; ”; ? 一个单撇号(’);双撇号(“);问号(?)
一个反斜线,若输出两个反斜线那么要输入\
a; b; f; n; r 警告;退格;换页;换行;回车
t; v; 水平制表符;垂直制表符
o,oo,ooo; xh; 八进制对应ASCII字符;十六进制对应ASCII字符

说明:
水平制表符:将当前位置移到下一个tab位置;
垂直制表符:将当前位置移到下一个垂直制表对齐点

2、 整型在存储单元中的存储方式是:用整数的补码形式存放
最左边一位表示符号0为正,1为负

3、 sizeof:各种变量类型所占字节数

4、强制转换类型:(类型名)(表达式)

int)x+y; //表示只将x转换为整型,然后与y相加

5、 控制语句:
break:终止switch语句或循环语句
continue:结束本次循环语句
goto:转向语句,在结构化程序中基本不用
空语句:就一个分好(;),可以用来作为流程的转向点(流程从程序其 他地方转到此语句),也可用来作为循环语句中的循环体

6、赋值过程中的类型转换
赋值运算符两侧类型不一致,但都是算术类型时,系统会自动进行转换,规则如下
(1)int i = 3.56;结果i的类型为3,0.56被舍弃
(2)float f = 23;那么23转为实数23.0存储
(3)float赋给double,数值不变,有效位数扩展到15位
(4)double赋给float,双精数转单,取6-7位有效数字。注意双精数的大小不能超出float变量的数值范围。否则出错
(5)i = ‘A’;即i = 65
(6)多字节整型赋给少字节整型或字符变量时,只将其低字节原封不动地送到被赋值的变量(发生截断
总结:整型数据之间的赋值,按照存储单元中的存储形式直接传送。实型数据之间以及整型与实型之间的赋值,是先转换后赋值。

7、初始化:一般变量初始化不是在编译阶段完成的(只有在静态存储和外部变量的初始化是在编译阶段完成)
expint a = 3;
相当于int a;a = 3

8、C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中得函数来实现的。

9、规范化的额指数形式:把小数部分中小数点前的数字为0,小数点后第1位数不为0的表示形式成为规范化的指数形式。
0.12345*10^1就是1.2345的规范化,程序中表示0.12345e001

9、printf输出函数
(1)%m.nf 指定数据宽度和小数位数
(2)%-m.nf输出的数据向左对齐,右端不空格
(3)%e,指数形式输出,VC++中自动给数字部分小数位6位,指数部分占5列,如e+002,e占1列,指数符号占1列,指数占3列
printf("%e",123.456);
输出1.234560e+02
不同系统不同,以上结果是Xcode6.3结果
(4)%u 无符号十进制输出
(5)%g/%G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出,指数以大写表示

10、getchar() 没有参数,只接收一个字符

char a,b,c;
    a = getchar();
    b = getchar();
    c = getchar();
    putchar(a);
    putchar(b);
    putchar(c);
输入 abc
输出 abc

若输入a后按Enter,那么会导致换行符赋值给b,b复制给c

输入
a
b
输出
a
b

在用键盘输入信息时,并不是在键盘上敲一个字符,该字符就立即送到计算机的,而是先暂存在键盘的缓冲器中,只有按了Enter以后才一起送到计算机中,然后按照先后顺序赋给变量。

11、putchar函数是输出字符的函数,不能输出整数;
例如putchar(66)->结果是B

12、练习:
大数相加
求 123456789123456789123456+12345678901234567890
利用数组

#include <stdio.h>
#include <string.h>
#define N 200

int main()
{
    char s1[N],s2[N];
    int a[N]={0},b[N]={0},i = 0;
    unsigned long l1 = 0,l2 = 0,k,c;
    puts("请输入两个较大的数字(Note:输完一个按一次回车):");
    gets(s1);                     //输入字符串
    gets(s2);
    l1=strlen(s1);
    l2=strlen(s2);
    if(l1<l2) {
        k=l2;
    }
    else {
        k=l1;
    }
    c=k;
    for(i=0;i<l1;k--,i++)
    {
        a[k]=s1[l1-1-i]-'0';
    }
    for(k=c,i=0;i<l2;k--,i++)
    {
        b[k]=s2[l2-1-i]-'0';
    }
    printf("n");
    for(i=(int)c;i>=0;i--)
    {
        a[i]+=b[i];
        if(a[i]>=10)
        {
            a[i]-=10;
            a[i-1]++;
        }
    }   //相加
    printf("此两数相加之和为:");
    if(a[0]!=0) 
    {
        for(i=0;i<=c;i++)
            printf("%d",a[i]);
    }
    else 
    {
        for(i=1;i<=c;i++) 
            printf("%d",a[i]);
    } 
    printf("n");
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读