1、二级 C 语言-327 (1)及答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的绝对值,并显示出来。例如,输入:-123456,结果为:123456。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h void main() long int num; system(“CLS
2、“); printf(“Enter the data: /n“); scanf( 1); printf(“*the absolute value*/n“); if(num0) 2 printf(“/n/n“); printf( 3); (分数:30.00)二、程序改错题(总题数:1,分数:40.00)2.假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数 proc()的功能是:删除数列中值为 x 的元素。n 中存放的是数列中元素的个数。 请修改程序中的错误,使它能够得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #inclu
3、destdio.h #define M 20 int proc(int*art, int n, int x) int p=0, i; arrn=x; while(x!=arrp) p=p+1; if(p=n)return-1; else for(i=p; in; i+) /*found* arri+1=arri; return n-1; void main() int arrM=-3, 0, 1, 5, 7, 99, 10, 15, 30, 90, x, n, i; n=10; printf(“The original data: /n“); for(i=0; in; i+)printf(“%
4、5d“, arri); printf(“/nInput x(to delete): “); scanf(“%d“, printf(“Delete: %d/n“, x); n=proc(arr, n, x); if(n=-1) printf(“*No be found!*/n/n“); else printf(“The data after deleted: /n“); for(i=0; in; i+) printf(“%5d“, arri); printf(“/n/n“); (分数:40.00)_三、程序设计题(总题数:1,分数:30.00)3.请编写函数 proc(),其功能是:将 str
5、所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在 t 所指数组中。 例如,当 str 所指字符串中的内容为 ABCDEFGHIJK(输入完成以空格、Tab 或者 Enter 键加任意非空格、Tab 或者 Enter 键的一个字符作为输入结束标志),则在 t 所指数组中的内容应是 BDFHJ。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h #includestring.h void pro
6、c(char*str, char t) void main() int i=1; char str100, t100; system(“CLS“); printf(“/nPlease enter string Str:“); scanf(“%s/n“, str); proc(str, t); printf(“/nThe result is: %s/n“, t); (分数:30.00)_二级 C 语言-327 (1)答案解析(总分:100.00,做题时间:90 分钟)一、程序填空题(总题数:1,分数:30.00)1.请补充 main()函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数
7、,则取它的绝对值,并显示出来。例如,输入:-123456,结果为:123456。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h #includeconio.h void main() long int num; system(“CLS“); printf(“Enter the data: /n“); scanf( 1); printf(“*the absolute value*/n“); if(num0) 2 printf(“/n/n“); p
8、rintf( 3); (分数:30.00)解析:“%1d“, “%1d“, num解析 题目中要求从键盘输入一个长整数,因此,第一处填“%1d“, arrn=x; while(x!=arrp) p=p+1; if(p=n)return-1; else for(i=p; in; i+) /*found* arri+1=arri; return n-1; void main() int arrM=-3, 0, 1, 5, 7, 99, 10, 15, 30, 90, x, n, i; n=10; printf(“The original data: /n“); for(i=0; in; i+)pr
9、intf(“%5d“, arri); printf(“/nInput x(to delete): “); scanf(“%d“, printf(“Delete: %d/n“, x); n=proc(arr, n, x); if(n=-1) printf(“*No be found!*/n/n“); else printf(“The data after deleted: /n“); for(i=0; in; i+) printf(“%5d“, arri); printf(“/n/n“); (分数:40.00)_正确答案:()解析:错误:arri+1=arri; 正确:arri=arri+1;
10、解析 题目中要求删除数列中值为 x 的元素,需要将数列中的每一个元素与指定数值 x 相比较。如果比较结果为第 i 个元素与 x 相等,则把第 i 个位置以后的元素前移一个位置,因此,“arri+1=arri;”应改为“arri=arri+1”。三、程序设计题(总题数:1,分数:30.00)3.请编写函数 proc(),其功能是:将 str 所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在 t 所指数组中。 例如,当 str 所指字符串中的内容为 ABCDEFGHIJK(输入完成以空格、Tab 或者 Enter 键加任意非空格、Tab 或者 Enter 键的一个字符作为输入结束标志)
11、,则在 t 所指数组中的内容应是 BDFHJ。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所编写的若干语句。 试题程序: #includestdlib.h #includeconio.h #includestdio.h #includestring.h void proc(char*str, char t) void main() int i=1; char str100, t100; system(“CLS“); printf(“/nPlease enter string Str:“); scanf(“%s/n“, st
12、r); proc(str, t); printf(“/nThe result is: %s/n“, t); (分数:30.00)_正确答案:()解析:void proc(char*str, char t) int i, i=0, k=strlen(str); /s 所指字符串中下标为偶数的字符删除即跳过去,对其什么也不做 for(i=1; ik; i=i+2) tj+=stri; /把下标为奇数的数,放到 t 数组中 tj=“/0“; /最后用“/0“作为字符串结束标志 解析 按照题目中要求,将 str 所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t 所指数组中。可以通过将字符串 str 中下标为奇数的字符放到字符串 t 中,对字符串 str 中的其余字符不予处理。最后为新的字符串数组添加结束符。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1