C语言上机试题库Word文档格式.docx
《C语言上机试题库Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言上机试题库Word文档格式.docx(42页珍藏版)》请在冰豆网上搜索。
![C语言上机试题库Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/7/612dd06e-9ee4-4600-87e6-528d2d89c0f0/612dd06e-9ee4-4600-87e6-528d2d89c0f01.gif)
程序输出:
100400700
200500800
300600900
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun
的花括号中填入你编写的若干语句。
intfun(intarray[3][3])
{//
inti,j,t;
for(i=0;
for(j=0;
i;
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
//
intarray[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
clrscr();
%7d"
array[i][j]);
\n"
);
fun(array);
Convertedarray:
NONO();
NONO()
/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
inti,j,array[3][3];
FILE*rf,*wf;
rf=fopen("
b0103.in"
"
r"
);
wf=fopen("
b0103.out"
w"
for(j=0;
fscanf(rf,"
&
array[i][j]);
fprintf(wf,"
array[i][j]);
fclose(rf);
fclose(wf);
/*程序修改题2
将从键盘上输入的每个
单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,
用'
.'
结束输入。
请改正程序中的错误,使程序能输出正确的结果。
不要改动main函数,不得增行或删行,也不得更改
程序的结构!
****老王注:
本类有输出结果的程序修改题,在评分时先看结果,如果
****结果正确,则直接给分;
结果不正确或无结果,再一个错
****一个错评分。
此法并不适用所有类似题。
intfun(char*c,intstatus)
/***********found**********/
if(*c=='
'
)return1;
//if(c=='
else
if(status&
&
*c<
='
z'
&
*c>
a'
)
*c+='
A'
-'
;
//c+='
return0;
intflag=1;
charch;
请输入一字符串,用点号结束输入!
do
ch=getchar();
flag=fun(&
ch,flag);
putchar(ch);
}while(ch!
='
NONO()
chars1[81],ch;
inti,flag=1;
g02.in"
g02.out"
fgets(s1,80,rf);
for(i=0;
strlen(s1);
i++){
ch=s1[i];
flag=fun(&
ch,flag);
s1[i]=ch;
fprintf(wf,"
%s"
s1);
/*G02.IN内容:
keysinindexesallowyouquickaccesstospecificrecordsanddefine
/*G02.OUT内容:
KeysInIndexesAllowYouQuickAccessToSpecificRecordsAndDefine
/*编程题
程序的功能是:
把20个随机数存入一个数组,然后输出该数组
中的最小值。
其中确定最小值的下标的操作在fun函数中实现,请给
出该函数的定义。
/*老王注:
本题考生可以一字不动,只要按Ctrl+F9运行一下,
即可得38分,费去m牛n虎之力正确编程,不过多得
2分而已!
#defineVSIZE20
intvector[VSIZE];
intfun(intlist[],intsize)
inti,min=0;
for(i=1;
size;
if(list[min]>
list[i])
min=i;
returnmin;
inti;
i
vector[i]=rand();
Vector[%d]=%6d\n"
i,vector[i]);
i=fun(vector,VSIZE);
\nMininum:
Vector[%d]=%6d\n"
/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
FILE*fp;
fp=fopen("
b0203.out"
fprintf(fp,"
%d\n"
vector[i]);
fclose(fp);
/*b0203.out内容:
346
130
10982
1090
11656
7117
17595
6415
22948
31126
9004
14558
3571
22879
18492
1360
5412
26721
22463
25047
程序修改题3
code:
--------------------------------------------------------------------------------
/*
计算整数n的阶乘。
请改正程序中的错误或在横线处填上适当的内容并把横线删除,
使它能计算出正确的结果。
不要改动main函数,不得增行或删行,也不得更改
程序的结构!
#include"
stdio.h"
doublefun(intn)
doubleresult=1.0;
while(n>
1&
n<
170)
/*********found*********/
result*=n--;
//result*=--n;
returnresult;
//return_____;
intn;
clrscr();
Enteraninteger:
"
n);
\n\n%d!
=%lg\n\n"
n,fun(n));
intn,i;
g03.in"
g03.out"
i<
=10;
n);
fprintf(wf,"
%lg\n"
fun(n));
/*g03.in文件内容如下:
58116153118232937
/*g03.out文件内容如下:
120
40320
3.99168e+07
720
1.30767e+12
8.22284e+33
6.40237e+15
2.5852e+22
8.84176e+30
1.37638e+43
编程题
编写函数fun,函数的功能是:
从字符串中删除指定的字符。
同
一字母的大、小写按不同字符处理。
若程序执行时输入字符串为:
turbocandborlandc++
从键盘上输入字符:
n,则输出后变为:
turbocadborladc++
如果输入的字符在字符串中不存在,则字符串照原样输出。
intfun(chars[],intc)
char*q=s;
for(;
*q;
q++)
if(*q!
=c)*(s++)=*q;
*s=0;
staticcharstr[]="
turbocandborlandc++"
原始字符串:
%s\n"
str);
输入一个字符:
"
%c"
ch);
fun(str,ch);
str[]=%s\n"
str);
chars[81],ch,w;
intlen;
b0303.in"
b0303.out"
fgets(s,80,rf);
ch);
len=strlen(s)-1;
w=s[len];
if(w=='
\n'
||w==0x1a)s[len]=0;
fun(s,ch);
s);
/*b0303.in文件内容如下:
Youcanspecifythattheprimaryindexisinrecordnumbersequence.
t
/*b0303.out文件内容如下:
Youcanspecifyhaheprimaryindexisinrecordnumbersequence.
*/
二、2001年9月
*程序修改题13
给定程序MODI1.C中函数fun的功能是:
将字符串中的内容按
逆序输出,但不改变字符串中的内容。
例如,若字符串为abcd,则应输出:
dcba。
请改正程序中的错误,使它能计算出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序
/************found************/
fun(char*a)
//fun(chara)
{if(*a)
{fun(a+1);
*a);
//printf("
*a);
main()
{chars[10]="
abcd"
处理前字符串=%s\n处理后字符串="
s);
fun(s);
printf("
请编写一个函数fun,它的功能是:
比较两个字符串的长度,
(不得调用C语言提供的求字符串长度的函数),函数返回较长的字
符串。
若两个字符串长度相同,则返回第一个字符串。
例如,输入beijingshanghai(为回车键),
函数将返回shanghai。
部分源程序存在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun
char*fun(char*s,char*t)
char*ss=s,*tt=t;
while((*ss)&
(*tt))
{ss++;
tt++;
if(*tt)return(t);
elsereturn(s);
{chara[20],b[10],*p,*q;
Input1thstring:
gets(a);
Input2thstring:
gets(b);
fun(a,b));
NONO();
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
FILE*fp,*wf;
inti;
chara[20],b[20];
bc03.in"
"
if(fp==NULL){
数据文件bc03.in不存在!
return;
bc03.out"
10;
fscanf(fp,"
%s%s"
a,b);
fun(a,b));
/*bc03.in内容如下:
alskdffdslkfjds
dksfjfdssdd
jkfdfsdlkfjds
lksdjflksdflkdsjf
lksdjffslkdjf
fsdljfsdlkff
flsdjkfsdklfad
fslkjflsjfslkd
flksjflksdfjknlfksdn
lkjfsfsfsfsd
/* bc03.out内容应当如下:
fdslkfjds
dksfjf
sdlkfjds
lksdjflksd
fslkdjf
fsdlkff
fsdklfad
flsjfslkd
flksjflksdfjk
fsfsfsd
/*程序修改题49
代码:
--------------------------------------------------------------------------------/*
给定程序MODI1.C中fun函数的功能是:
判断两个指针所
指存储单元中的值的符号是否相同;
若相同函数返回1,否则返
回0。
这两个存储单元中的值都不为0。
请改正程序中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改
/**********found**********/
fun(double*a,double*b)
//fun(double*a,*b)
if(*a**b>
0.0)
//if(a*b>
return1;
elsereturn0;
{doublen,m;
clrscr();
printf("
Entern,m:
scanf("
%lf%lf"
n,&
m);
printf("
\nThevalueoffunctionis:
%d\n"
fun(&
m));
NONO();
{/*请在此函数内打开文件,输入测试数据,调用fun函数,
doublen,m;
gc8.in"
gc8.out"
fscanf(rf,"
fun(&
m));
/*gc8.in内容如下:
-22.99361284.57629812
101.434234-999.888432
-454.78678-987.7856786
67987.7989897878.564564564
-47238.31231287212.212121
-8989.34243457899.9897897
2121.212121-6767.2121298
-4324.5454-32132.3232
899.98983127878.231212
21210.2121-12332.2332
/*正确程序生成的gc8.out内容如下:
0
1
请编一个函数fun(int*a,intn,int*odd,int*even),函
数的功能是分别求出数组中所有奇数之和以及所有偶数之和。
形参n
给出数组中数据的个数;
利用指针odd返回奇数之和,利用指针even
返回偶数之和。
例如:
数组中的值依次为:
1,9,2,3,11,6;
则利用指针
odd返回奇数之和24;
利用指针even返回偶数之和8。
#defineN20
fun(int*a,intn,int*odd,int*even)
*odd=0;
*ev