C语言程序设计教程 课后习题参考答案

puts(s); }

void replaceAll( char *str, char ch1, char ch2) {

while( *str ) { if( *str == ch1 ) { *str = ch2; } str++; } }

(7)

#include

int transformToBin( int dnum, int *bin ) ; int main( ) {

int array[32]; //保存转换后的进制数 int num; //待转换的整数

int cc; //最后得到的进制总共多少位 printf(\请输入一个整数:\ scanf(\

cc=transformToBin( num, array ); //调用转换函数 cc--; //使cc指向最后一个元素

for( ; cc>=0; cc-- ) //输出转换后的进制数 printf(\ array[cc]); printf(\ return 0; }

int transformToBin( int dnum, int *bin ) {

int *pb; int t; pb = bin;

while ( dnum ) //当dnum还未转换完毕 { t = dnum % 2; *pb = t; pb++; dnum /= 2; //数本身除2 }

return pb-bin; }

(8)

#include #include

void transformToHex( int dnum, char *hex ) ; int main( ) {

char array[32]; //保存转换后的进制数 int num; //待转换的整数

int cc; //最后得到的进制总共多少位 printf(\请输入一个整数:\ scanf(\

transformToHex( num, array ); //调用转换函数 cc=strlen(array)-1; //使cc指向最后一个元素 for( ; cc>=0; cc-- ) //输出转换后的进制数 printf(\ array[cc]); printf(\ return 0; }

void transformToHex( int dnum, char *hex ) {

char *ph; int t; ph = hex;

while ( dnum ) //当dnum还未转换完毕 { t = dnum % 16; if( t < 10 ) *ph = t+'0'; else *ph = t-10+'A'; ph++;

dnum /= 16; //数本身除16 }

*ph = '\\0'; }

(9)

#include

void strToLow(char *str); main( )

{

char s[100]; gets( s );

strToLow( s ); puts( s ); }

void strToLow( char *str ) {

while( *str ) { if( *str>='A'&&*str<='Z' ) *str = *str + 32; str++; } }

第10章 1.

(1)12 (2)(++p)->num (5)B (6)B 2. (1)

struct myDate{

int year, month, day; };

(2)

struct empInfo{ char empNo[15]; char empName[10]; char xb; //性别 int age;

struct myDate empDay; double salary; };

(3)

#include

typedef struct STUDENT { char name[20]; float height;

3)D 7)10,A

4) p2 != NULL

( (( int score; }STUD; main( ) {

STUD a;

printf(“姓名:”); gets( a.name); printf(“身高:”);

scanf(“%f”, &a.height); printf(“成绩:”);

scanf(“%d”, &a.score);

//输出信息(仅为测试用)

printf(“%s %.2f %d \\n”, a.name, a.height, a.score); }

第11章 1.

(1)打开文件:fopen 关闭文件:fclose 使用: FILE *fp; fp = fopen(“myfile”, “r”); … fclose( fp );

(2)”w”

(3)文本文件:内容均以字符的形式存储,占的字节数可能会大些

二进制文件:内容以二进制编码的形式存储,占的字节数可能会稍小。

(4)第一个参数:读取得到的信息存储在内存的哪个地方 第二个参数:读取的字节数 第三个参数:读取的块数

第四个参数:文件指针,表示从哪个文件中读取数据

(5)第一个参数:待写入文件的信息存储在内存的哪个地方 第二个参数:写入的字节数 第三个参数:写入的块数

第四个参数:文件指针,表示要写入到哪个文件中

(6)为了安全,gets少用,因为其没有指定输入字符的大小,限制输入缓冲区得大小,如果输入的字符大于定义的数组长度,会发生内存越界,堆栈溢出。后果非常怕怕fgets会指定大小,如果超出数组大小,会自动根据定义数组的长度截断。 2. (1)

#include #include main( ) {

FILE *fpr, *fpw; char ch;

fpr = fopen(\ fpw = fopen(\

if( NULL==fpr ) { printf(\文件打开不成功\\n\ return 0; }

if( NULL == fpw ) { printf(\文件打开不成功\\n\ return 0; }

while( !feof( fpr ) ) { ch = fgetc( fpr ); fprintf(fpw, \ }

fclose( fpr ); fclose( fpw ); }

(2)

#include main( ) {

FILE *fp1, *fp2;

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4