C语言大题Word文档格式.docx
《C语言大题Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言大题Word文档格式.docx(102页珍藏版)》请在冰豆网上搜索。
2.改错题
下列给定的程序中,fun()函数的功能是:
将p所指字符串中每个单词的最后一个字母改成大写(这里的"
单词"
是指有空格隔开的字符串)。
例如,若输入:
Iamastudenttotaketheexamination
则应输出:
IaMAstudenTtOtakEthEexaminatioN
请改正程序中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构。
conio.h>
ctype.h>
voidfun(char*p)
intk=0;
for(;
*p;
p++)
if(k)
/**********************found***********************/
if(p=='
'
)
k=0;
*p=toupper(*(p-1));
//改*(p-1)=toupper(*(p-1));
/**********************found***********************/
else
k=1;
{charchrstr[64];
intd;
\nPleaseenteranEnglishsentencewithin63letters:
"
gets(chrstr);
d=strlen(chrstr);
chrstr[d]='
;
chrstr[d+1]=0;
\nBoforechanging:
\n%s"
chrstr);
fun(chrstr);
\nAfterchanging:
3.编程题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:
把分数最高的学生数据放在h所指的数组中。
分数高的学生可能不只一个,函数返回分数最高学生的人数。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b)
main()
STRECs[N]={{"
GA005"
85},{"
GA003"
76},{"
GA002"
69},{"
GA004"
85},
{"
GA001"
91},{"
GA007"
72},{"
GA008"
64},{"
GA006"
87},
GA015"
GA013"
GA012"
GA014"
91},
GA011"
66},{"
GA017"
GA018"
GA016"
72}};
STRECh[N];
inti,n;
FILE*out;
n=fun(s,h);
The%dhighestscore:
n);
for(i=0;
i<
n;
%s%4d\n"
h[i].num,h[i].s);
/*输出最高分学生的学号和成绩*/
out=fopen("
out15.dat"
"
w"
fprintf(out,"
%d\n"
for(i=0;
i++);
%4d\n"
h[i].s);
fclose(out);
请补充main函数,该函数的功能是:
把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的字符串中。
例如:
当str[N]="
123abcdefABCDEF!
"
,结果输出:
123ABCDEFABCDEF!
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
#include<
stdlib.h>
voidmain()
intj;
charstr[N]="
123abcdefABCDEF!
char*pf=str;
***originalstring***\n"
【1】//答案:
j=0
while(*(pf+j))
if(*(pf+j)>
='
a'
&
*(pf+j)<
z'
)
{
*(pf+j)=【2】;
//答案:
str[j]-32
j++;
}
else
【3】;
//答案:
j++
******newstring******\n"
system("
pause"
下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。
a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。
请改正程序中的错误,使它能得到正确结果。
string.h>
voidfun(char*p,char*q,char*c)
{intk=0;
while(*p||*q)
{if(*p<
=*q)//改:
*p>
=*q
c[k]=*q;
elsec[k]=*p;
if(*p)p++;
if(*q)q++;
k++//加;
号
{chara[10]="
fshADfg"
b[10]="
sdAEdi"
c[80]={'
\0'
};
fun(a,b,c);
Thestringa:
puts(a);
Thestringb:
puts(b);
Theresult:
puts(c);
请编写函数fun,其功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
voidfun(inta,intb,long*c)
{
inta,b;
longc;
Inputa,b;
scanf("
%d%d"
&
a,&
b);
fun(a,b,&
c);
Theresultis:
%ld\n"
c);
请补充main函数,该函数的功能是求方程ax2+bx+c=0的两个实数根。
方程的系数a、b、c从键盘输入,如果判别式(disc=b2-4ac)小于0,则要求重新输入a、b、c的值。
例如,当a=1,b=2,c=1时,方程的两个根分别是x1=-1.00,x2=-1.00。
#include"
math.h"
floata,b,c,disc,x1,x2;
do
printf("
Inputa,b,c:
scanf("
%f,%f,%f"
a,&
b,&
disc=b*b-4*a*c;
if(disc<
0)
printf("
disc=%f\nInputagain!
disc);
}while(【1】);
//答案:
disc<
*******theresult*******\n"
x1=【2】;
//x1=(-b+sqrt(disc))/(2*a);
x2=【3】;
//x2=(-b-sqrt(disc))/(2*a);
\nx1=%6.2f\nx2=%6.2f\n"
x1,x2);
请补充main函数,该函数的功能是求方程ax2+bx+c=0的根(方程的系数a,b,c从键盘输入)。
例如,当a=1,b=2,c=1时,方程的两个根分别是:
x1=-1.00,x2=-1.00。
请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
math.h>
floata,b,c,disc,x1,x2,p,q;
disc=b*b-4*a*c;
*******theresult*******\n"
if(disc>
=0)
x1=【1】;
x2=(-b-sqrt(disc))/(2*a);
x1=%6.2f,x2=%6.2f\n"
p=【2】;
//p=(-b)/(2*a);
q=【3】;
//q=sqrt(-disc)/(2*a);
x1=%6.2f+%6.2fi\n"
p,q);
x2=%6.2f-%6.2fi\n"
下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值。
y=1-1/(2×
2)+1/(3×
3)-1/(4×
4)+…+(-1)(m+1)/(m×
m)
m中的值为5,则应输出0.838611。
doublefun(intm)
{doubley=1.0;
intj=1;
for(i=2;
=m;
j=-1*j;
y+=1/(i*i);
//y+=j*1.0/(i*i);
return(y);
intn=5;
\nTheresultis%lf\n"
fun(n));
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。
二维数组中的数已在主函数中给出。
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}};
intp[N],i,j,k;
Theriginaldatais:
i<
M;
i++)
for(j=0;
j<
N;
j++)
%6d"
t[i][j]);
fun(t,p);
\nTheresultis:
for(k=0;
k<
k++)
%4d"
p[k]);
把一个整数转换成字符串,并倒序保存在字符数组str中。
当n=13572468时,str="
86427531"
charstr[N];
voidfun(longintn)
inti=0;
while(【1】)//n!
=0
str[i]=【2】;
//str[i]=(n-n/10*10)+48;
n/=10;
i++;
【3】;
//str[i]='
形成字符串结尾要有‘/0’
longintn=13572468;
***theorigialdata***\n"
n=%ld"
fun(n);
\n%s"
str);
下列给定程序中,函数fun的功能是按以下递归公式求函数值。
当给n输入5时,函数值为240;
当给n输入3时,函数值为60。
fun(intn);
//intfun(intn)
intc;
if(n=1)//if(n==1)
c=15;
c=fun(n-1)*2;
return(c);
intn;
Entern:
%d"
n);
%d\n\n"
fun(n));
请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII值码升序排列。
编写完程序,运行程序后输入:
字符串为Bdsihad,则排序后输出为应为Badhisd。
intfun(char*s,intnum)
chars[10];
输入7个字符的字符串:
gets(s);
fun(s,7);
s);
1.填空题
数组xx[N]保存着一组3位数的无符号正整数,其元素的个数通过变量num传入函数fun()。
从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。
当xx[8]={135,78,72,32,222,424,333,141,541}时,bb[6]={787,232,222,424,333,141}。
#defineN1000
intfun(intxx[],intbb[],intnum)
inti,n=0;
intg,b;
num;
g=【1】;
//g=xx[i]%10;
b=xx[i]/100;
if(g==b)
【2】;
//bb[n++]=xx[i];
return【3】;
//n;
intxx[8]={135,787,232,222,424,333,
141,541};
intyy[N];
intnum=0,n=0,i=0;
num=8;
***originaldata***\n"
%u"
xx[i]);
\n\n\n"
n=fun(xx,yy,num);
\nyy="
yy[i]);
下列给定程序中函数fun()的功能是计算1/n!
的值。
给n输入5,则输出0.008333。
intfun(intn)//doublefun(intn)
{doubleresult=1.0;
if(n==0)
return1.0;
while(n>
1&
n<
170)
result*=n++;
//result*=n--;
result=1/result;
returnresult;
InputN:
\n1/%d!
=%lf\n"
n,fun(n));
编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。
n为1000时,函数值应为s=96.979379。
doublefun(intn)
clrscr();
printf("
s=%f\n"
fun(1000));
2.下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。
输入352,则输出应该是38;
若输入328,则输出应该是77。
longfun(longnum)
longk=1;
//k=0;
do
k+=(num%10)*(num%10);
num/=10;
/**********************found*********************