《2022年C语言习题文档 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言习题文档 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、编写一程序P114.C 实现以下功能编写一个简单计算器程序,输入格式为:data1 op data2。其中data1 和 data2 是参加运算的两个数 (data1、data2 必须定义为int,但二者相加可能超出int 能表示的范围 ),op 为运算符, 它的取值只能是+、-、*、/、%。编程可用素材: printf(Please input data1 op data2: ). 、printf(nError! chu shu wei 0.n).。程序的运行效果应类似地如图1、图 2、图 3、图 4 所示,图1 中的 3000 + 2000、图 2中的 3000 % 2000、图 3中
2、的 3000 % 0 和图 4 中的 3000 / 0 是从键盘输入的内容。答: #include int main(void) int data1, data2; char op; printf(Please input data1 op data2:); scanf(%d %c %d, &data1, &op, &data2); switch (op) case +: printf(%d+%d=%fn, data1, data2, (double)data1 + (double)data2); break; case -: printf(%d-%d=%dn, data1, data2, d
3、ata1 - data2); break; case *: printf(%d*%d=%fn, data1, data2, (double)data1 * (double)data2); break; case /: if (data2 != 0) printf(%d/%d=%dn, data1, data2, data1 / data2); else printf(Error! chu shu wei 0.n); break; case %: if (data2 != 0) printf(%d%d=%dn, data1, data2, data1 % data2); else 名师资料总结
4、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - printf(Error! chu shu wei 0.n); break; default: printf( 运算符错误! n); return 0; 2、编写一程序P702.C 实现以下功能输入月份,打印2003 年该月有几天。当输入的月份超范围时,应显示“Invalid month input ”。 编程可用素材: printf(please input the month number
5、: ).、printf(nInvalid month input !n).、printf(n 2003. has . daysn. 。程序的运行效果应类似地如图1 和图 2 所示,图1 中的 4 和图 2 中的 13 是从键盘输入的内容。图1 程序运行效果示例图2 程序运行效果示例答: #include int main(void) int month, day; printf(please input the month number:); scanf(%d, &month); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
6、名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; printf(2003.%d has %d daysn, month, day); break; case 4: case 6: case 9: case 11: day = 30; printf(2003.%d has %d daysn, month, day); break; case 2: day = 28; printf
7、(2003.%d has %d daysn, month, day); break; default: printf(Invalid month input!n); return 0; 3、编写一程序P747.C 实现以下功能有 15 个数已按由大到小的顺序存放在一个数组a15中,现再输入一个数,要求用折半查找法找出该数是数组中第几个(从 0 开始计数 )元素 ai的值。如果该数不在数组中,则打印出相应的提示信息。程序的运行效果应类似地如图1 和图 2 所示, 图 1 中的 30 28 26 25 24 23 22 21 19 15 13 10 8 6 4 和 13、图 2 中的 30 28
8、26 25 24 23 22 21 19 15 13 10 8 6 4 和 90 是从键盘输入的内容。please input 15 integer numbers( big to small): 30 28 26 25 24 23 22 21 19 15 13 10 8 6 4 please input the integer you want to find: 13 13 has been found,it is a10 图 1 程序运行效果示例名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
9、 - - 第 3 页,共 10 页 - - - - - - - - - please input 15 integer numbers( big to small): 30 28 26 25 24 23 22 21 19 15 13 10 8 6 4 please input the integer you want to find: 90 90 has not been found 图 2 程序运行效果示例答: #include #define NUM 15 int main(void) int i, j, mid, bool = 0, data, sNUM; printf(please i
10、nput %d integer numbers(big to small):, NUM); for (i = 0; i NUM; i+) scanf(%d, &si); printf(please input the integer you want to find:n); scanf(%d, &data); i = 0; j = NUM - 1; while (i data) i = i + 1; else j = j - 1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4
11、页,共 10 页 - - - - - - - - - if (bool = 1) printf(%d has been found, it is a%dn, data, mid); else printf(%d has not been foundn, data); return(0); 4、编写一程序P766.C 实现以下功能从键盘上读入一行字符(约定: 字符数 127字节),判断其中的注释是否合法,不合法则报错,合法时则删除注释后再输出。合法注释是指“/* ”标记注释开始、“*/ ”标记注释结束,通常表现为 /* */ 。注意事项:(1)程序中不能使用库函数strstr 或使用同名的变量、
12、函数、单词。(2)只考虑行内最多只包含一个注释的情况。(3)不合法的注释情况有很多种,例如*/ 缺注释开始标记、/ * */ 缺注释开始标记、 /* 缺注释结束标记、/* * /缺结束标记。(4)编程可用素材:printf(input a string:). 、 printf(nThe result is :). 、printf(ncomment is errorn). 。程序的运行效果应类似地如图1、 图 2、 图 3 和图 4 所示,图 1 中的 int main(void)char ch;/*ding yi*/ int i、图 2 中的 int main(void)char ch;din
13、g yi*/ int i、图 3 中的 int main(void)char ch;/*ding yi* / int i和图 4 中的 int main(void)char ch; int i是从键盘输入的内容。图1 程序运行效果示例名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 图2 程序运行效果示例图3 程序运行效果示例图4 程序运行效果示例答: #include #include #define LINE 128 voi
14、d delstr(char str); int main(void) char strLINE; printf(input a string:); gets(str); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - delstr(str); return(0); void delstr(char *base) char *pc, *begin, *end; begin = end = NULL; for (pc = base
15、; *pc != 0; pc+) if (*pc = / & *(pc + 1) = *) begin = pc; if (*pc = * & *(pc + 1) = /) end = pc + 1; if (begin =NULL & end = NULL) | (begin != NULL & end != NULL) printf(nThe result is :); for (pc = base; *pc != 0; pc+) if (pc =begin & pc = end) continue; printf(%c, *pc); else printf(ncomment is err
16、orn); printf(n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - 5、编写一程序P781.C 实现以下功能从键盘上输入5 个字符串 (约定:每个字符串中字符数80字节 ),对其进行升序排序并输出。注意:(1)程序中不能使用库函数strcpy、strcat、strncat、strncpy、memcpy、strcpy、memicmp、memcmp、stricmp、strncmp、strncmpi、strnicmp、
17、strcmp 和 strcmpi 或使用同名的变量、函数、单词。(2)编程可用素材:printf(Input 5 strings:n).、printf(-n).。程序的运行效果应类似地如图1 所示,图1 中的 hello my friend Are you ready? help! 是从键盘输入的内容。图1 程序运行效果示例答: #include #include #define NUM 5 #define LINE 128 int comper(char str1, char str2); void swap(char str1, char str2); 名师资料总结 - - -精品资料欢迎
18、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - int main(void) int i, j, k; char strNUMLINE; printf(nnInput 5 strings:n); for (i = 0; i NUM; i+) gets(stri); for (i = 0; i NUM - 1; i+) for (j = i + 1; j 0) swap(stri, strj); printf(-n); for (i = 0; i str2i) b
19、ool = 1; break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - else if (str1i str2i) bool = -1; break; i+; if (str1i != 0 & str2i = 0) bool = 1; else if (str1i = 0 & str2i != 0) bool = -1; return(bool); void swap(char str1, char str2) int i; char tmp; i = 0; for ( i = 0; i LINE; i+) tmp = str1i; str1i = str2i; str2i = tmp; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -
限制150内