二级C语言机试-23_真题(含答案与解析)-交互

更新时间:2023-06-23 08:18:50 阅读: 评论:0

二级C语言机试-23
(总分100, 做题时间90分钟)
1、填空题
请补充fun函数,该函数的功能是:把字符的ASCII码为奇数的字符从字符串str中删除,结果仍然保存在字符串中,字符串str从键盘输入,其长度作为参数传入fun函数。
   例如,输入“abcdef”则输出“bdf”。
   注意:部分源程序已给出。cli
   请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
   试题程序:
   #include<stdio.h>
   #define N 100
   void  (1) 
   
appealto
   int i,j;
   职教英语  (2) 
   for(i=0;i<n;i++)
   char str[N];
   printf("plea input a string:\n");
   gets(str);
   while(str[i]!='\0')
   
   len++;
   if(s[i]%2==0)
   s[j++]=s[i];
     (3) 
   
   main()
   
   int i=0,len=0;
   i++;
   
   fun(str,len);
   printf("The result string:\n");
   puts(str);
粉色英语   
1. 
    分值: 10
答案:fun(char s[],int n)
2. 
    分值: 10
答案:j=0
3. 
    分值: 10
答案:s[j]='\0'
[解析] 先判断ASCII码的奇偶。
   第一空:根据主函数“fun(str,len);”调用语句,其中len为字符串str的长度,用来控制循环。根据主函数中对应的调用语句,补全fun函数定义,第一空填“fun(char s[],int n)”。
   第二空:“s[j++]=s[i];”语句中j的变量在使用前要对其取值进行初始化,因为数组下标是由0开始,初始化值为0,所以第二空填“j=0”。
   第三空:新生成的字符串要加尾符标志,所以第三空填“s[j]='\0'”。
2、改错题
1. 
下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不相等。例如,当x的值为1,y的值为2,z的值为3,函数值为2.00。
   注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
   试题程序:
   #include<stdio.h>
   #include<stdio.h>
   /********found********/
   #define F(m,n)(m/n)
   float fun(float a,float b,float c)
   
   float s;
   s=F((a+b),(a-b))+F((c+b),(c-b));
   /********found********/
   Return(s);
   
   main()
   
   float x,y,z,sum;
   printf("input x y z:");
   scanf("%f%f%f",&x,&y,&z);
   printf("x=%f,y=%f,z=%f\n",x,y,z);
   if(x==y||y==z)
   
   printf("Data error!\n");
   exit(0);
   
   sum=fun(x,y,z)
   printf("the result is:%5.2f\n",sum);
   
    分值: 30
答案:1.#define F(m,n)(m)/(n)
   2.return(s);
[解析] 程序中函数的功能是计算题目中给出的公式值,第一个标识:fun函数两次调用宏F来计算“s=F((a+b),(a-b))+F((c+b),(c-b));”检查宏的定义是否正确,可以用实参代入宏进行展开:(a+b/a-b),因为“/”的优先级高于“+”或“-”,所以要使用括号限定计算优先顺序。所以将“#define F(m,n)(m/n)”改为“#define F(m,n)(m)/(n)”。
   第二个标识下返回语句的关键字有误。因为C语言中区分大小写,所以应将“Return(s);”改成“return(s);”
gtg3、编程题
1. rinco
编写一个函数,输入n个字符串,串与串之间以回车键分隔,找出最短字符串中第一个字符串,传回该串地址(用一个新串“*”作为结束输入的标志)。
   注意:部分源程序已给出。
   请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。
   试题程序:
   #include<stdio.h>
教育部留学服务中心网站   #include<string.h>
   #include<conio.h>
   char*fun(char(*s)[100],int num)
   
   
   main()
   
   char str[10][100],*min;
   int n,i=0;
   FILE*out:printf("input strings with'*'and:");
   gets(str[i]);
   strcpy(str[3],"some");
   strcpy(str[4],"tool?!?";
   fprintf(out,"%s",fun(str,5));
   puts(str[i]);
   while(!strcmp(str[i],"*")==0)
   
   i++;
   gets(str[i]);
航站楼英文   puts(str[i]);
   n=1;
   min=fun(str,n);
   printf("\nmin=%s\n",min);
   out=open("outfile.dat","w");
   strepy(str[0],"just,");
宣布英语   strcpy(str[1],"a");
   strcpy(str[2],"test");
   fclo(out);
   
    分值: 40
答案:
int i;
   char*min:
   minx s[0];//min初始化
   for(i=0;i<num;i++)
blow job   if(strlen(rain)>strlen(s[i]))  //min指向的字符串与其他的字符串长度进行比较
   min=s[i];
   return min;//返回最小值的字符串
[解析] 首先指定第一个字符串为长度最小的字符串,然后在循环过程中将其与其他的所有串的长度进行比较,求出最小的串。①设置一个指针变量min,使它的初值为第一个字符串,再使其他的所有串的长度与min的长度进行比较,若其他字符串的长度小于min,则将其他字符串的首地址赋值给min。②最后使用返回语句,返回最短长度min的字符串的地址。


窗体顶端
窗体底端

本文发布于:2023-06-23 08:18:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1019724.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   字符串   长度   语句
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图