C和指针(POINTERS ON C) 第二章课后习题答案
程序员文章站
2022-03-11 18:25:53
...
- 你需要printf函数打印出下面这段文本(包括两边的双引号)。你应该使用什么样的字符串常量参数。
答:连续?前加\防止三字母词,"加\ 转义
#include<stdio.h>
int main()
{
printf( "\"Blunder?\?!?\?\"" );
}
- \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,所以是#
-
略。。
-
略。。
-
略。。
-
略。。
-
假定你有一个C程序,它的main函数位于文件main.c, 它还有一些函数位于文件list.c 和report.c 在编译和连接这个程序时,你应该使用什么命令?
答:gcc main.c list.c report.c
- 略。。
- 略。。
**
2.8 编程练习
**
- 写一个程序,包含三个函数分别位于不同的文件中,第一个函数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
- 写一个程序从标准输入中读取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