《C语言程序设计(现代方法第二版)》习题集

目录

  • 第三章 格式化输入/输出
    • 3. 图书用国际标准书号(ISBN)进行标识
    • 4. 编写一个程序,提示用户以(xxx) xxx-xxxx的格式输入电话号码,并以xxx.xxx.xxxx的格式显示该号码
    • 5.编写一个程序,要求用户(按任意次序)输入从1到16的所有整数,然后用4×4矩阵的形式将它们显示出来,再计算出每行、每列和每条对角线上的和:


第三章 格式化输入/输出

3. 图书用国际标准书号(ISBN)进行标识

2007年1月1日之后分配的ISBN包含13位数字(旧的ISBN使用10位数字),分为5组,如978-0-393-97950-3。第一组(GS1前缀)目前为978或979。第二组(组标识)指明语言或者原出版国(如0和1用于讲英语的国家)。第三组(出版商编号)表示出版商(393是W. W.Norton出版社的编号)。第四组(产品编号)是由出版商分配的用于识别具体哪一本书的(97950)。ISBN的末尾是一个校验数字,用于验证前面数字的准确性。编写一个程序来分解用户录入的ISBN信息:
在这里插入图片描述

代码

// Created by YaPotato at 2023/3/4 20:48.
// The filename is identifyISBN.c
//
# include 
# define SIZE 5void printIBSN(int *IBSN);
void input();int main(void){// example: 978-0-393-97950-3/** The distribution ISBN contains 13 number(old used ISBN is ten number) that have a five group.* In the time, initiate number is 978 or 979. In addition a group number, which show clearly public country or language.* The third group represent publisher. In last but lasted number that distinguish the specific book. Last a group number is test and verify.*/input();return 0;
}void input(){int gs1, group, publisher, item, digit;printf("Enter ISBN: ");scanf("%d-%d-%d-%d-%d", &gs1, &group, &publisher, &item, &digit);int ISBN[] ={gs1, group, publisher, item, digit};printIBSN(ISBN);
}void printIBSN(int *IBSN){input();char const *p[] = {"GS1 prefix", "Group identifier", "Publisher code", "Item number", "Check digit"};for (int i = 0; i < SIZE; i++) {printf("%s: %d\n", p[i], IBSN[i]);}
}


4. 编写一个程序,提示用户以(xxx) xxx-xxxx的格式输入电话号码,并以xxx.xxx.xxxx的格式显示该号码

在这里插入图片描述

代码

// Created by YaPotato at 2023/3/4 21:09.
// The filename is phoneNumber.c
//
# include int input(int x1, int x2, int x3);int main(void){
//    input();int x1, x2, x3;printf("Enter phone number [(xxx) xxx-xxxx]:");scanf("(%d) %d-%d", &x1, &x2, &x3);printf("%d.%d.%d", x1, x2, x3);return 0;
}


5.编写一个程序,要求用户(按任意次序)输入从1到16的所有整数,然后用4×4矩阵的形式将它们显示出来,再计算出每行、每列和每条对角线上的和:

Enter the numbers from 1 to 16 in any order:
16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
16   3   2   135  10  11    89   6   7   124  15  14    1
Row sums: 34 34 34 34
Column sums: 34 34 34 34
Diagonal sums: 34 34

如果行、列和对角线上的和都一样(如本例所示),则称这些数组成一个幻方(magic square)。这里给出的幻方出现于艺术家和数学家Albrecht Dürer在1514年的一幅画中。(注意,矩阵的最后一行中间的两个数给出了该画的创作年代。)


代码

// Created by YaPotato at 2023/3/5 11:26.
// The filename is order.c
//
# include 
# define SIZE 4
# define MAXSIZE 16
# define DIAGONALSIZE 2enum OPTION{ROWSUMS, COLUMSUMS, DIAGONALSUMS};void printHand(int p[SIZE][SIZE], int option, char *str);
void forRange(int Isize, int Jsize, int p[SIZE][SIZE]);
void printQ(int p[SIZE][SIZE]);int main(){printf("Enter the number from 1 to 16 in any order:\n");// static space;int p[MAXSIZE] = {16, 3, 2, 13, 5, 10, 11, 8, 9, 6, 7, 12, 4, 15, 14, 1};int q[SIZE][SIZE];int *r = (int *)p;int const printNumber = 3;char *s[] = {"Row Sums", "Colum Sums", "Diagonal Sums"};// matrix/** i=0;i<4;i++ j=i;j<4;j++* i -> 0   j -> 0* q[0][0] -> 16* q[0][1] -> 3* q[0][2] -> 2* q[0][3] -> 13** q[1][0] -> 5* q[1][1] -> 10* q[1][2] -> 11* q[1][3] -> 8* ...*/// Save otherint l = 0;for (int k = 0; k < SIZE; k++) {for (int j = 0; j < SIZE; j++) {q[k][j] = r[l];l++;}}printQ(q);for (int i = 0; i < printNumber; i++) {printHand(q, i, s[i]);}return 0;
}void printQ(int p[SIZE][SIZE]){for (int l = 0; l < SIZE; l++) {for (int m = 0; m < SIZE; m++) {printf("%d ", p[l][m]);}printf("\n");}
}void forRange(int Isize, int Jsize, int p[SIZE][SIZE]){int sum = 0;for (int i = 0; i < Isize; i++) {for (int j = 0; j < Jsize; j++) {sum += p[i][j];}printf("%d ", sum);sum = 0;}printf("\n");
}void printHand(int p[SIZE][SIZE], int option, char *str){printf("%s: ", str);switch (option) {case ROWSUMS:forRange(SIZE, SIZE, p);break;case COLUMSUMS:forRange(SIZE, SIZE, p);break;case DIAGONALSUMS:forRange(DIAGONALSIZE, SIZE, p);break;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部