40套C语言上机试题与答案Word格式文档下载.docx
- 文档编号:5761026
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:195
- 大小:89.56KB
40套C语言上机试题与答案Word格式文档下载.docx
《40套C语言上机试题与答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《40套C语言上机试题与答案Word格式文档下载.docx(195页珍藏版)》请在冰点文库上搜索。
i<
i++)
printf("
%4d"
aa[i]);
fun(aa);
\n***newlist***\n"
i++)
2.改错题
下列给定程序中,函数fun()的功能是:
从N个字符串中找出最长的那个串,并将其地址作为函数值返回。
各字符串在主函数中输入,并放入一个字符串数组中。
string.h>
#defineN5
#defineM81
/**********************found***********************/
fun(char(*sq)[N])
{inti;
char*sp;
sp=sq[0];
if(strlen(sp)<
strlen(sq[i]))
sp=sq[i];
returnsq;
{charstr[N][M],*longest;
printf("
Enter%dlines:
\n"
N);
i++)gets(str[i]);
\nThe%dstring:
i++)puts(str[i]);
longest=fun(str);
\nThelongeststring:
puts(longest);
3.编程题
下列程序定义了N×
N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N],intn),该函数的功能是:
使数字右上半三角元素中的值乘以m。
例如,若m的值为2,a数组中的值为
a=19
27
则返回主程序后a数组的值应为
218
214
#include<
conio.h>
voidfun(inta[][N],intm)
{
inta[N][N],m,i,j;
system("
*****Thearray*****\n"
i++)/*输出一个随机的5×
5矩阵*/
{for(j=0;
j<
j++)
{a[i][j]=rand()%20;
a[i][j]);
\n"
do
m=rand()%10;
while(m>
=3);
/*产生一个小于3的随机数*/
m=%4d\n"
m);
fun(a,m);
THERESULT\n"
j++)
a[i][j]);
2
从键盘输入一组小写字母,保存在字符数组str中。
把字符数组str中字符下标为奇数的小写字母转换成对应的大写字母,结果仍保存在原数组中。
acegikm"
,输出"
aCeGiKm"
#defineN80
voidfun(chars[])
inti=0;
while(【1】)
if(i%2!
=0)
s[i]-=【2】;
【3】;
charstr[N];
\nInputastring:
gets(str);
\n***originalstring***\n"
puts(str);
fun(str);
\n***newstring***\n"
对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
malloc.h>
typedefstructss
{charnum[10];
ints;
}STU;
STU*fun(STUa[],intm)
{STUb[N],*t;
inti,j,k;
*t=calloc(m,sizeof(STU));
i++)b[i]=a[i];
for(k=0;
k<
m;
k++)
{for(i=j=0;
if(b[i].s>
b[j].s)j=i;
t[k].num=b[j].num;
t[k].s=b[j].s;
b[j].s=0;
returnt;
outresult(STUa[],FILE*pf)
{inti;
fprintf(pf,"
No=%sMark=%d\n"
a[i].num,a[i].s);
\n\n"
{STUa[N]={{"
A01"
81},{"
A02"
89},{"
A03"
66},{"
A04"
87},{"
A05"
77},
{"
A06"
90},{"
A07"
79},{"
A08"
61},{"
A09"
80},{"
A10"
71}};
STU*pOrder;
inti,m;
*****THERESULT*****\n"
outresult(a,stdout);
\nGivethenumberofthestudentswhohavebetterscore:
"
scanf("
%d"
&
m);
10)
{printf("
pOrder=fun(a,m);
*****THERESULT*****\n"
Thetop:
%s%d\n"
pOrder[i].num,pOrder[i].s);
free(pOrder);
编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
fun(char(*a)[81],intnum,char*max)
charss[10][81],*ps;
intn,i=0;
输入若干个字符串:
"
gets(ss[i]);
puts(ss[i]);
while(!
strcmp(ss[i],"
****"
)==0)/*用4个星号作为结束输入的标志*/
i++;
n=i;
ps=fun(ss,n,&
ps);
\nmax=%s\n"
ps);
3
返回字符数组中指定字符的个数,指定字符从键盘输入。
intfun(chars[],charch)
inti=0,n=0;
while(【1】)
{
if(【2】)
n++;
i++;
【3】;
intn;
charstr[N],ch;
\nInputastring:
\nInputacharactor:
%c"
ch);
n=fun(str,ch);
\nnumberof%c:
ch,n);
下列给定程序中函数fun()的功能是:
先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如:
当s中的字符串为ABCDE时,则t中的字符串应为EDCBAABCDE。
voidfun(char*s,char*t)
inti,s1;
s1=strlen(s);
for(i=0;
s1;
t[i]=s[s1-1];
t[s1+i]=s[i];
t[2*s1]='
\0'
;
{chars[100],t[100];
\nPleaseenterstrings:
%s"
s);
fun(s,t);
printf("
Theresultis:
%s\n"
t);
编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
例如,假定输入的字符串为asdasasdfgasdaszx67asdmklo,子字符串为as,则应当输出6。
intfun(char*str,char*substr)
charstr[81],substr[3];
输入主字符串:
输入子字符串:
gets(substr);
puts(substr);
n=fun(str,substr);
n=%d\n"
n);
4
请补充main函数,该函数的功能是:
打印出满足个位的数字、十位上的数字和百位上的数字都相等的所有三位数。
本题的结果为:
111222333444555666777
888999。
intg,s,b;
for(g=1;
g<
10;
g++)
for(s=1;
s<
s++)
for(b=1;
b<
b++)
if(【1】)
printf("
%5d"
【2】);
将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指字符串中,例如:
把3个串abc,CD,EF串联起来,结果是abcCDEF。
intfun(charstr[][10],intm,char*pt)
{intk,q,i,j=0;
{q=strlen(str[k]);
j+=q;
q;
pt[i]=str[k,i];
pt+=q;
pt[0]=0;
pt-=j;
{intm,h;
chars[10][10],p[120];
\nPleaseenterm:
gets(s[0]);
\nPleaseenter%dstring:
for(h=0;
h<
h++)gets(s[h]);
fun(s,m,p);
\nTheresultis:
%s\n"
p);
假定输入的字符串中只包含字母和*号。
请编写函数fun(),它的功能是:
只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。
形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。
在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。
voidfun(char*a,intn,inth,inte)
chars[81],*t,*f;
intm=0,tn=0,fn=0;
Enterastring:
gets(s);
t=f=s;
while(*t)
{t++;
m++;
}/*m为字符串的长度*/
t--;
/*指针t指向字符串尾部*/
while(*t=='
*'
)
{t--;
tn++;
}/*指针t指向最后一个字母,tn统计尾部'
的个数*/
while(*f=='
)
{f++;
fn++;
}/*指针f指向第一个字母,tn统计前导'
fun(s,m,fn,tn);
Thestringafterdeleted:
puts(s);
5
请补充函数fun(),该函数的功能是把数组aa中的奇数元素按原来的先后顺序放在原数组后面。
,输出结果"
42,58,76,16,56,33,67,25,85,41"
inti,j=0,k=0;
intbb[N];
for(i=0;
if(【1】)
bb[k++]=aa[i];
else
aa[j++]=aa[i];
k;
【2】)
aa[j]=bb[i];
aa[i]);
fun(aa);
用递归算法计算斐波拉契级数列中第n项的值。
从第一项起,斐波拉契级数序列为1,1,2,3,5,8,13,21,……例如,若给n输入7,该项的斐波拉契级数值为13。
longfun(intg)
/**********************found***********************/
switch(g);
{case0:
return0;
switch(g)
case1;
case2:
return1;
return(fun(g-1)+fun(g-2));
longfib;
Inputn:
scanf("
n);
printf("
n=%d\n"
fib=fun(n);
fib=%d\n\n"
fib);
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:
按分数的高低排列学生的记录,高分在前。
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
voidfun(STRECa[])
voidmain()
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}};
fun(s);
Thedataaftersorted:
{if((i)%4==0)/*每行输出4个学生记录*/
%s%4d"
s[i].num,s[i].s);
6
把ASCII码为奇数的字符从字符串str中删除,结果仍然保存在字符串str中。
字符串str从键盘输入,其长度作为参数传入函数fun()。
abcdef"
bdf"
voidfun(chars[],intn)
inti,j;
j=0;
【1】;
s[j++]=s[i];
inti=0,strlen=0;
charstr[N];
while(str[i]!
='
strlen++;
fun(str,strlen);
\n***displaystring***\n"
下列给定的程序中,函数fun()的功能是:
为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。
s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 40 语言 上机 试题 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)