C语言,练习1

  1. 输入并运行下面的程序:

#include <stdio.h>

void main()

{

         char c1,c2;

         c1='a';

         c2='b';

         printf("%c %c\n",c1,c2);

}

  • 运行此程序。

  • 在上面的printf语句的下面再增加一个printf语句:

   printf("%d %d\n",c1,c2);

   再运行,并分析结果。

  • 将第3行改为:

int c1,c2;

再使之运行,并分析结果。

Char定义字符,而int定义整型,由于输出结果为ASCLL所以结果未变???

  • 再将第4、5行改为:

c1=a;     /*不用单撇号*/

c2=b;

再使之运行,并分析其运行结果。

不加单引号为非定义字符,报错

  • 再将第4、5行改为:

c1=97;  

c2=98;

再使之运行,分析其运行结果。

赋值给了AB,所以打印出数字

  • 再将第4、5行改为:

c1=300;     /*用大于255的整数*/

c2=400;

再使之运行,并分析其运行结果。

大于255无法定义读出

  1. 输入并运行如下程序:

#include <stdio.h>

void main()

{

char c1='a',c2='b',c3='c',c4='\101',c5='\116';

     printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);

     printf("\t\b%c %c\n",c4,c5);

}

在上机前先用人工分析程序,写出相应结果,上机后将二者对照。

  1. 输入并运行下面的程序:

#include <stdio.h>

void main()

{

         short int a,b;

         unsigned  short c,d;

         int e,f;

         a=100;

         b=-100;

         e=50000;

         f=32767;

         c=a;

         d=b;

         printf("%d,%d\n",a,b);

         printf("%u,%u\n",a,b);

         printf("%u,%u\n",c,d);

         c=a=e;

         d=b=f;

         printf("%u,%u\n",a,b);

         printf("%u,%u\n",c,d);

}

请对照程序和运行结果分析:

  • 将一个负整数赋给一个无符号的变量,会得到什么结果。

改后·

  • 将一个大于32767的整数赋给短整型变量(在VC环境下),会得到什么结果。

出错

  • 将一个整数赋给无符号短整型变量,会得到什么结果(分别考虑该长整数的值大于、等于或小于65535的情况)。

将65540赋给短整a所得结果

  • 改程序中各变量的值,再比较。

需注意各变量类型的取值范围,不然会发生报错

  1. 输入并运行教材第3章习题3.10(P67)即:

#include <stdio.h>

void main()

{

         int i,j,m,n;

         i=8;

         j=10;

         m=++i;

         n=j++;

         printf("%d,%d,%d,%d\n",i,j,m,n);

}

  • 运行程序,注意i,j,m,n各变量的值。分别做以下改动并运行:

原输出结果

  • 将第6、7行改为:

     m=i++;

     n=++j;

再运行。

改变后,输出结果i++是先计算后使用,即先加一后将值赋给mj反之同理

  

  • 程序改为:

#include <stdio.h>

void main()

{

      int i,j;

      i=8;

      j=10;

      printf("%d,%d\n",i++,j++);

}

  • 在③的基础上,将printf语句改为:

printf("%d,%d\n",++i,++j);

  • 再将printf语句改为:

printf("%d, %d,%d,%d\n",i,j,i++,j++);

运行结果,即先得到上面的赋值,在进行计算(+1),在输出结果

  • 程序改为

#include <stdio.h>

void main()

{

     int i,j,m=0,n=0;

     i=8;

     j=10;

     m+=++i;

     n-=j--;

     printf("i=%d,i=%d,m=%d,n=%d\n",i,j,m,n);

}

所得结果

这一节的难点在于自增自减运算符的理解与运用,需熟悉a=++x;表示先计算后使用,即先将x的值自加1,再把值赋给a,而x++,则相反,为先试用后计算,即先将x的值赋给变量a,然后再将x的值自加1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请在此处输入你的昵称

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值