C语言上机考试试题Word下载.docx
- 文档编号:920609
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:23
- 大小:35.64KB
C语言上机考试试题Word下载.docx
《C语言上机考试试题Word下载.docx》由会员分享,可在线阅读,更多相关《C语言上机考试试题Word下载.docx(23页珍藏版)》请在冰点文库上搜索。
2.请编写一个函数fun,它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符串长度相同,则返回第一个字符串。
例如,输入beijing<
CR>
shanghai<
(<
为回车键)
函数将返回shanghai。
char*fun(char*s,char*t)
{
intfirst=0,second=0;
char*p,*q;
p=s;
q=t;
while(*p++!
='
\0'
)/*判断是否到了字符串s的结尾*/
first++;
while(*q++!
)/*判断是否到了字符串t的结尾*/
second++;
//可以用来知道一个字符串中有多少个字符//
if(first==second)/*判断两个字符串的长度是否相等*/
returns;
/*若上述条件成立,则返回第一个字符串*/
elseif(first>
second)/*返回较长的字符串*/
else
returnt;
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
inti;
chara[20],b[20];
fp=fopen("
bc03.in"
"
r"
);
if(fp==NULL){
数据文件bc03.in不存在!
"
return;
wf=fopen("
bc03.out"
w"
for(i=0;
i<
10;
i++){
fscanf(fp,"
%s%s"
a,b);
fprintf(wf,"
%s\n"
fun(a,b));
fclose(fp);
fclose(wf);
{chara[20],b[10];
Input1thstring:
gets(a);
Input2thstring:
gets(b);
fun(a,b));
NONO();
3.给定程序中,函数fun的功能是:
将N×
N矩阵中元素的值按列右移1个位置,
右边被移出矩阵的元素绕回左边。
例如,N=4,有下列矩阵
21121324
25164738
29113254
42213310
计算结果为
24211213
38251647
54291132
10422133
#defineN4
voidfun(int(*t)[N])//这里的(*t)和数组t是一样的//
{inti,j,x;
i<
N;
i++)
x=t[i][N-1];
for(j=N-1;
j>
0;
j--)
t[i][j]=t[i][j-1];
t[i][0]=x;
{
intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;
Theoriginalarray:
{for(j=0;
j<
j++)printf("
%2d"
t[i][j]);
fun(t);
//调用fun涵数//
\nTheresultis:
4.给定程序modi.c中函数fun的功能是:
找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。
#defineN100
intfun(int*s,intn)
{inti,j,k,a,b,c;
j=0;
for(i=100;
n;
k=i;
a=k%10;
k/=10;
b=k%10;
c=k;
if(a==b&
&
a==c)s[j++]=i;
returnj;
{inta[N],n,num=0,i;
do
{printf("
\nEntern(<
=1000):
scanf("
%d"
&
n);
while(n>
1000);
num=fun(a,n);
\n\nTheresult:
num;
i++)printf("
%5d"
5.***请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。
例如,原来的字符串为CEAedca,排序输出为CedcEAa。
***
ctype.h>
conio.h>
windows.h>
intfun(char*s,intnum)
inti,j,h,t;
for(i=1;
num-1;
h=i;
for(j=i;
j<
j++)
if(s[h]<
s[j])h=j;
/*从字符串的第i+1个字符到num-1个字符中找出最大的字符,并将其数组下标赋值给h*/
if(h!
=i)/*判断找到的最大字符的下标是否为第i个字符*/
{
t=s[h];
s[h]=s[i];
s[i]=t;
}/*将s[h]与s[i]中的字符进行交换*/
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
chars[10];
intj;
FILE*rf,*wf;
rf=fopen("
b15.in"
"
a15.out"
for(j=0;
4;
{fscanf(rf,"
%s"
s);
fun(s,7);
fprintf(wf,"
fclose(rf);
system("
cls"
输入7个字符的字符串:
gets(s);
\n%s"
Printf(“\n”);
NONO();
6:
输入一个数n,再输入n个数,将这n个数中的素数输出,要求按照输入的相反顺序输出。
//素数:
用一个数(x)分别去除2到sqrt(x)如果可被整除则不是素数否则是素数//
例:
输入:
10579112305441373
输出3374121175
提示(本题可以用数组解决)
#include<
math.h>
intpd(intx)
inti;
for(i=2;
=sqrt(x);
i++)//判断是不是素数//
if(x%i==0)
return0;
return1;
//标记如果不是素说的话就输出0否则输出1//
intmain()
intn;
inta[100];
for(i=1;
=n;
scanf("
a[i]);
for(i=n;
i>
=1;
i--)
if(pd(a[i])==1)
printf("
%d"
return0;
7:
某次运动会上一共有n名参赛运动员,要求手动输入该n名运动员的编号与成绩,并按照从高分到低分的顺序输出这些运动员的编号与成绩。
5
65087
36975
65490
48788
15870
输出6549048788
提示(可以使用两个数组并使用排序方法)
inta[100][3];
inti,j,k;
%d%d"
a[i][1],&
a[i][2]);
//声明两个数组成一个存放编号另一个存放成绩其中第一个为编号第二个为成绩//
=n-1;
for(j=1;
=n-i;
if(a[j][2]<
a[j+1][2])//成绩的比较//
{
k=a[j][1];
a[j][1]=a[j+1][1];
a[j+1][1]=k;
//编号的交换//
k=a[j][2];
a[j][2]=a[j+1][2];
a[j+1][2]=k;
//成绩的交换//
}
printf(“\n\n”);
printf("
%d%d\n"
a[i][1],a[i][2]);
感想:
利用冒泡排序对成绩进行比较同样利用冒泡排序在成绩确定排序的条件下将编号排序
扩展部分:
intmain(void)
inta[100][100][4];
intx,y,m,n,i,j,k,bj,temp;
100;
for(j=0;
{
for(k=0;
k<
k++)
a[i][j][k]=0;
请输入班级数:
m);
请输入人数:
scanf("
%d%d%d"
bj,&
x,&
y);
a[bj][0][1]++;
a[bj][a[bj][0][1]][1]=x;
a[bj][a[bj][0][2]][1]=y;
for(k=1;
=m;
for(i=1;
a[k][0][1];
for(j=1;
=a[k][0][1]-i;
if(a[k][j][2]<
a[k][j+1][2])
{
temp=a[k][j][1];
a[k][j][1]=a[k][j+1][1];
a[k][j+1][1]=temp;
temp=a[k][j][2];
a[k][j][2]=a[k][j+1][2];
a[k][j+1][2]=temp;
}
=a[k][0][1];
%d%d%d\n"
k,a[k][i][1],a[k][i][2]);
8:
请输出一个数列:
该数列包含两个数列,数列1:
a(n)=a(n-1)+2*n,数列2:
b(n)=b(n-1)2*+1。
手动输入a
(1)与b
(1)且a
(1),b
(1)均为大于零的正整数。
输出数列将数列a与数列b交替输出,输出合成数列前20位。
12
输出:
12751711312349477195971911273831617671991535
提示(无)
pleaseinputa[1]a[2]\n"
%d%d"
a[1],&
a[2]);
for(i=3;
=20;
if(i%2==0)
a[i]=a[i-2]*2+1;
else
a[i]=a[i-2]+2*i;
//对于有条件输出的问题应充分利用有关的条件比如这道题目中就有两种输出的可能这样就可以用到奇数偶数的事实//
9:
求水仙花数:
从1000至9999中选出水仙花数,规则:
每一个位数的数字的四次方之和等于该数本身。
intmain(){
inti,a,b,c,d;
for(i=1000;
=9999;
a=i%10;
//%是取余数如198%10=8“/”是取整198/10=19//
b=i/10%10;
c=i/100%10;
d=i/1000;
if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==i)
i);
10.给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。
函数fun的功能是将该学生的各科成绩都乘以一个系数a。
typedefstruct
{intnum;
charname[9];
floatscore[3];
}STU;
voidshow(STUtt)
{inti;
%d%s:
"
tt.num,tt.name);
3;
%5.1f"
tt.score[i]);
voidmodify(STU*ss,floata)
ss->
score[i]*=a;
main()
{STUstd={1,"
Zhanghua"
76.5,78.0,82.0};
floata;
\nTheoriginalnumberandnameandscores:
show(std);
\nInputanumber:
%f"
a);
modify(&
std,a);
\nAresultofmodifying:
11.给定程序modi.c中,函数fun的功能是:
读入一个字符串(长度<
20),将该字符串中的所有字符按ASCII码升序排序后输出。
例如:
若输入:
edcba,则应输出:
abcde。
#defineM20
voidfun(chart[])
charc;
inti,j;
for(i=strlen(t)-1;
for(j=0;
i;
if(t[j]>
t[j+1])
c=t[j];
t[j]=t[j+1];
t[j+1]=c;
chars[81];
\nPleaseenteracharacterstring:
\n\nBeforesorting:
\n\"
%s\"
fun(s);
\nAftersortingdecendingly:
12.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。
请编写函数fun,它的功能是:
求出该学生的平均分放在记录的ave成员中。
请自己定义正确的形参。
例如,学生的成绩是:
85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:
78.875。
#defineN8
{charnum[10];
doubles[N];
doubleave;
}STREC;
voidfun(STREC*p)
doubleaver=0;
/*将平均分赋初值0*/
{aver=aver+(*p).s[i];
}/*求和*/
(*p).ave=aver/N;
/*计算平均值*/
voidNONO()
STRECs={"
GA005"
85.5,76,69.5,85,91,72,64.5,87.5};
FILE*wf;
a43.out"
fun(&
s);
The%s'
sstudentdata:
s.num);
%4.1f\n"
s.s[i]);
ave=%7.3f\n"
s.ave);
{STRECs={"
\nave=%7.3f\n"
13.给定程序中,函数fun的功能是:
将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
charname[10];
}PERSON;
voidfun(PERSONstd[3])
PERSONtemp;
if(std[0].num>
std[1].num)
{temp=std[0];
std[0]=std[1];
std[1]=temp;
std[2].num)
std[0]=std[2];
std[2]=temp;
if(std[1].num>
{temp=std[1];
std[1]=std[2];
{PERSONstd[]={5,"
Zhanghu"
2,"
WangLi"
6,"
LinMin"
};
fun(std);
\nTheresultis:
%d,%s\n"
std[i].num,std[i].name);
14.给定程序modi.c中,函数fun的功能是:
通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。
例如变量a中的值为3,b中的值原为8,程序运行后a中的值为8,b中的值为3。
intfun(int*x,inty)
intt;
t=*x;
*x=y;
y=t;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 考试 试题