C语言上机题库百科园第6章2南信大Word格式文档下载.docx
《C语言上机题库百科园第6章2南信大Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言上机题库百科园第6章2南信大Word格式文档下载.docx(28页珍藏版)》请在冰点文库上搜索。
/************************************/
out=fopen("
debug\\out12.dat"
w"
for(i=0;
i<
4;
i++)
if(fun(test[i]))
fprintf(out,"
else
fclose(out);
【参考代码】
intfun(charstr[])
{
inti,n=0,fg=1,j=0;
while(str[j])
{
n++;
j++;
}
n/2;
i++)
/*循环比较字符*/
if(str[i]==str[n-1-i]);
/*相同,什么都不作*/
else
/*不同,直接跳出循环*/
fg=0;
break;
returnfg;
}
统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
#include<
string.h>
intfun(char*s)
/************Begin*************/
/*************End*************/
FILE*wf;
charline[N];
intnum=0;
Enterastring:
\n"
gets(line);
num=fun(line);
Thenumberofwordis:
%d\n\n"
num);
/******************************/
wf=fopen("
d:
\\out19.dat"
fprintf(wf,"
%d"
fun("
Thisisabigcar"
));
fclose(wf);
/*****************************/
inti,j=0;
for(i=0;
s[i]!
='
\0'
;
if(s[i]!
'
&
(s[i+1]=='
||s[i+1]=='
))
/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/
returnj;
/*返回单词个数*/
/*假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
除了字符串前导的*号之外,将串中其他*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。
*/
voidfun(char*a)
/************Begin*************/
/************End**************/
chars[81];
FILE*in,*out;
\n"
fun(s);
Thestringafterdeleted:
/******************************/
in=fopen("
in21.dat"
r"
debug\\out21.dat"
8;
{
fscanf(in,"
%s"
s);
fprintf(out,"
%s\n"
}
fclose(in);
inti=0;
char*p=a;
while(*p&
*p=='
*'
)
a[i]=*p;
i++;
p++;
while(*p)
if(*p!
p++;
a[i]='
将字符串中的前导*号全部删除,中间和后面的*号不删除。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
/************Begin**************/
/************End*************/
FILE*wf,*in;
chars[81],t[81]="
****A*BC*DEF*G*******"
puts(s);
in18.dat"
debug\\out18.dat"
t);
fun(t);
while(*p=='
/*指针p指向字符串第一个字母*/
for(;
*p!
p++,a++)
*a=*p;
*a='
/*请编一个函数fun(char*s),该函数的功能是把字符串中的内容逆置。
例如,字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。
#defineN81
voidfun(char*s)
chara[N];
"
gets(a);
Theoriginalstringis:
puts(a);
fun(a);
Thestringaftermodified:
strcpy(a,"
HelloWorld!
ThisisafirstCprogram!
\\out17.dat"
a);
charch;
inti,m,n;
i=0;
m=n=strlen(s)-1;
while(i<
(n+1)/2)
ch=s[i];
s[i]=s[m];
s[m]=ch;
i++;
m--;
/*请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位依次放在c数的百位和个位上。
例如,当a=45,b=12,调用该项函数后,c=4152。
conio.h>
voidfun(inta,intb,long*c)
/************Begin************/
/************End***************/
inta,b;
longc;
Inputa,b:
scanf("
%d%d"
&
a,&
b);
fun(a,b,&
c);
Theresultis:
%ld\n"
c);
debug\\out20.dat"
for(a=10;
a<
20;
a++)
fun(a,109-a,&
%d\n"
fclose(out);
*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;
程序改错
/*下列给定程序中函数fun的功能是:
先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如,当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。
请改正程序中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构。
stdlib.h>
voidfun(char*s,char*t)
inti,s1;
s1=strlen(s);
for(i=0;
s1;
/**********ERROR**********/
t[i]=s[s1-1];
t[s1+i]=s[i];
t[2*s1]="
\0"
{chars[100],t[100];
\nPleaseenterstrings:
fun(s,t);
printf("
Theresultis:
%s\n"
【参考答案】
t[i]=s[s1-1-i];
t[i]=s[s1-i-1i];
t[2*s1]='
t[2*s1]=0;
/*下列给定程序中,函数fun的功能是:
在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上,
并将该字符前的原字符向后顺序移动。
例如,调用fun函数之前给字符串输入ABCDeFGH,调用后字符串中的内容为eABCDFGH。
fun(char*p)
{charmax,*q;
inti=0;
max=p[i];
while(p[i]!
=0)
{if(max<
p[i])
p=q+i;
max=p[i];
while(q<
p)
{*q=*(q-1);
q--;
p[0]=max;
{charstr[80];
gets(str);
\nTheoriginalstring:
puts(str);
fun(str);
\nThestringaftermoving:
voidfun(char*p)
q=p+i;
q=i+p;
while(q>
while(p<
q)
计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确的结果。
intfun(char*s,char*t)
{intn;
char*p,*r;
n=0;
p=&
s[0];
*r=t;
while(*p)
if(*r==*p)
r++;
if(*r=='
)
{
n++;
【1】;
}
p++;
returnn;
{chara[N],b[N];
intm;
system("
CLS"
\nPleaseenterstringa:
gets(a);
\nPleaseentersubstringb:
gets(b);
m=fun(a,b);
m=printf("
\nTheresultis:
m=%d\n"
m);
r=t;
r=&
t[0];
从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,
平均分存放在形参aver所指的存储单元中。
例如输入8名学生的成绩:
80.5607290.59851.58864
则低于平均分的学生人数为4(平均分为75.5625)。
#defineN20
intfun(float*s,intn,float*aver)
{floatave,t=0.0;
intcount=0,k,i;
for(k=0;
k<
n;
k++)
t=s[k];
ave=t/n;
if(s[i]<
ave)count++;
*aver=&
ave;
returncount;
{floats[30],aver;
intm,i;
\nPleaseenterm:
m);
\nPleaseenter%dmark:
m;
i++)scanf("
%f"
s+i);
\nThenumberofstudents:
fun(s,m,&
aver));
Ave=%f\n"
aver);
t+=s[k];
t=t+s[k];
*aver=ave;
实现两个整数的交换。
例如,给a和b分别输入60和65,输出为:
a=65b=60
voidfun(inta,b)
{intt;
t=b;
b=a;
a=t;
{inta,b;
Entera,b:
scanf("
fun(&
a,&
a=%db=%d\n"
a,b);
voidfun(int*a,int*b)
t=*b;
*b=*a;
*a=t;
t=*b,*b=*a,*a=t;
t=*a;
*a=*b;
*b=t;
t=*a,*a=*b,*b=t;
/*给定程序中函数fun的功能是:
把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。
例如,输入的数为:
551234,
输出结果应当是:
a=55.0,b=34.0,c=12.0。
请改正程序中的错误,使它能得出正确结果。
给定源程序:
*/
voidfun(float*a,float*b,float*c)
float*k;
if(*a<
*b)
{k=*a;
*a=*b;
*b=k;
if(*a>
*c)
{k=*c;
*c=*a;
*a=k;
if(*b<
{k=*b;
*b=*c;
*c=k;
intmain()
{floata,b,c;
printf("
Inputabc:
%f%f%f"
b,&
a=%4.1f,b=%4.1f,c=%4.1f\n\n"
a,b,c);
fun(&
return0;
floatk;
*a<
*c
*c>
*a
p=j;
p=i;
程序填空
/*给定程