改错题 下列给定的程序中,fun函数的功能是:将p所指的字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。
例如,若输入:“I am a student to take the examination”,
则应输出:“I aM A studenT tO takE thE examinatioN”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<ctype.h>
#include<stdio.h>
void fun(char*p)
{
int k=0;
for(;*p;p++)
if(k)
{
/**********found**********/
if(p=='')
{
k=0;
/**********found**********/
*p=toupper(*(p-1));
}
}
else
k=1;
}
void main()
{
char chrstr[64];
int d;
system('CLS');
printf('\nPlease enter an English sentence within 63 letters:');
gets(chrstr);
d=strlen(chrstr);
chrstr[d]='';
chrstr[d+1]=0;
printf('\nBefore changing:\n%s',chrstr);
fun(chrstr);
printf('\nAfter changing:\n%s',chrstr);
}
改错题 下列给定程序中,函数proc()的功能是:首先把b所指字符串中的字符按逆序存放,然后将str1所指字符串中的字符和str2所指字符串中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符接在str所指数组的尾部。
例如,当str1所指字符串中的内容为“ABCDEFG”,str2所指字符串中的内容为“1234”时,str所指数组中的内容应该为“A483C2D1EFG”;而当str1所指字符串中的内容为“1234”,str2所指字符串中的内容为“ABCEDFG”时,str所指数组中的内容应该为“1G2F3E4DCBA”。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void proc(char *str1,char *str2,char *str)
{
int i,j;char ch;
i=0;j=strlen(str2)-1;
//****found****
while(i>j)
{
ch=str2[i]:str2[i]=str2[j];str2[j]=ch;
i++;j--;
}
while(*str1||*str2)
{
if(*str1){*str=*str1;str++;str1++;}
if(*str2){*str=*str2;str++;str2++;}
}
//****found****
*str=0:
}
void main()
{
char s1[100],s2[100],t[200];
system('CLS');
printf('\nEnter s1 string:');
scanf('%s',s1);
printf('\nEnter s2 string:');
scanf('%s',s2);
proc(s1,s2,t);
printf('\nThe result is:%s\n',t);
}
改错题 给定程序中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>
#define N 20
void fun(int *a,int n)
{ inti,m,t,k;
for(i=0;i<2;i++){
/**********found**********/
m=0;
for(k=i+1;k<n;k++)
/**********found**********/
if(a[k]>a[m])k=m;
t=a[i];a[i]=a[m];a[m]=t;
}
}
main()
{ int b[N]={11,5,12,0,3,6,9,7,10,8}, n=10,i;
for(i=0; i<n; i++) printf('%d',b[i]);
printf('\n');
fun(b,n);
for(i=0; i<n; i++) printf('%d',b[i]);
printf('\n');
}
改错题 由N个有序整数组成的数列已放在一维数组中,给定程序中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
给定源程序:
#include <stdio.h>
#define N 10
/**********found**********/
void fun(int a[],int m)
{ int low=0,high=N-1,mid;
while(low<=high)
{ mid=(low+high)/2;
if(m<a[mid])
high=mid-1;
/**********found**********/
else if(m>a[mid])
low=mid+1;
else return(mid);
}
return(-1);
}
main()
{ int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;
printf('a数组中的数据如下:');
for(i=0;i<N;i++) printf('%d',a[i]);
printf('Enter m:');scanf('%d',m);
k=fun(a,m);
if(k>=0) printf('m=%d,index=%d\n',m,k);
else printf('Not be found!\n');
}
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是:“****ABCDEFG”。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include void fun(char*a) { } main() {char s[81];void NONO(); printf(''Enter a string:\n'');gets(s); fun(s); printf(''The string after deleted:\n'');puts(s); NONO(); } void NONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE*in,*out; int i;char s[81]; in=fopen(''in.dat'',''r''); out=fopen(''out.dat'',''w''); for(i=0;i { fscanf(in,''%s'',s); fun(s); fprintf(out,''%s\n'',s); } felose(in); fclose(out); }
下列叙述中正确的是( )。
设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )。
请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2223445666677899101010。删除后,数组中的内容应该是:2345678910。注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
有如下程序: #includestdio.h struet pair { int first,second; }; struet pair get_min_max(int*array,int len) { int i; struet pair res; res.first=array[0]; res.second=array[0]; for(i=1;i { if(array[i] res.first=array[i]; if(array[i]>res.second) res.second=array[i]: } return res; } main() { int array[5]={9,1,3,4}; struet pair min_max=get_min_max(array,5) printf("min=%d,max=%d\n",min_max.first,min_max.second); } 程序运行后的输出结果是( )。
给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。例如,形参s所指的字符串为:ThisisaClanguageprogram.,函数的返回值为6。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!
下列选项中,不会出现无限循环的是( )。
有以下程序(strcat函数用于连接两个字符串): #include #include main() { char a[20]=''ABCD\0EFG\0'',b[]=''IJK''; strcat(a,b); printf(''%s\n'',a); } 程序运行后的输出结果是( )。
以下叙述中正确的是( )。
若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( )。
下列序列中不满足堆条件的是( )。
有以下程序:#include int sum(int m){static int n=1;return n+ =m;}main( ){int i;for(i=1;iprintf(″%d,″,sum(i));printf(″\n″);}程序运行后的输出结果是( )。
在printf的格式字符中,e格式字符的作用是( )。
关于字符常量,以下叙述正确的是( )。
以下选项中正确的语句组是( )。
下列叙述中,不属于设计准则的是( )。