欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C和指针(POINTERS ON C) 第二章课后习题答案

程序员文章站 2022-03-11 18:25:53
...
  1. 你需要printf函数打印出下面这段文本(包括两边的双引号)。你应该使用什么样的字符串常量参数。
    答:连续?前加\防止三字母词,"加\ 转义
#include<stdio.h>
int main()
{
	printf( "\"Blunder?\?!?\?\"" );
}
  1. \40的值是多少?\100、\x40、\x100、\0123、\x0123的值分别又是多少?
#include<stdio.h>
int main()
{
	char c1 = '\40';
	char c2 = '\100';
	char c3 = '\x40';
	char c4 = '\0123';
	char c5 = '\x0123';
	printf( "%c%c%c%c%c", c1, c2, c3, c4, c5 );
	
	return 0;
}
输出: (空格)@@3#

\:以8进制表示,\40就是八进制=40,即 0010 0000 表示空格
\x:以16进制表示,\x40就是16进制=40,即0100 0000 表示@

\0123 : 因为\012是’\n’ 和 '3’这两个字符,是两个字节,而c4只能取1字节,所以取了高位3

\x0123:按16进制表示0123 = 0001 0010 0011,补满2个字节的二进制是 0000 0001 0010 0011 因为c5只能接受1字节,所以取了高位字节 0010 0011,所以是#

  1. 略。。

  2. 略。。

  3. 略。。

  4. 略。。

  5. 假定你有一个C程序,它的main函数位于文件main.c, 它还有一些函数位于文件list.c 和report.c 在编译和连接这个程序时,你应该使用什么命令?

答:gcc main.c list.c report.c

  1. 略。。
  2. 略。。

**

2.8 编程练习

**

  1. 写一个程序,包含三个函数分别位于不同的文件中,第一个函数increment接受一个整型参数并且返回这个参数加一后的值,这个函数位于文件increment.c中。第二个函数叫做negate,同样接受一个整型参数并且返回它的相反数,最后一个函数是main函数,需要调用其他两个函数并且用10,0,-10的值测试并打印出来
文件名:increment.c
int increment( int par )
{
  return ++par;
}

文件名:negate.c
int negate( int par )
{
  return par * (-1);
}

文件名:main.c
#include<stdio.h>
#include "increment.c"
#include "negate.c"

int increment( int );
int negate( int );

int main()
{
  printf( "increment: %d; negate: %d\n", increment(10), negate(10) );
  printf( "increment: %d; negate: %d\n", increment(0), negate(0) );
  printf( "increment: %d; negate: %d\n", increment(-10), negate(-10) );
  return 0;
}
输出:increment: 11; negate: -10
     increment: 1; negate: 0
     increment: -9; negate: 10


  1. 写一个程序从标准输入中读取c源程序并且确定花括号是否正确的配对,提示:你不用担心括号出现在注释中,字符串中或者字符常量中
#include<stdio.h>

int main()
{
  char c;
  int count;

  while( ( c = getchar() ) != EOF )
  {
    if( c == '{' )
      count++;
    else if( c == '}' )
      count--;
    
    if( count < 0 )
      break;
  }
  
  if( count < 0 || count > 0 )
    printf( "error" );
  else
    printf( "pass" );

  return 0;
}

输入:ioioio{
返回:error

输入:{}
返回:pass

输入:}
返回:error

输入:}}}}{{
返回:error