C语言上机题库文档格式.docx
《C语言上机题库文档格式.docx》由会员分享,可在线阅读,更多相关《C语言上机题库文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
//flag=0;
if(len>
length)
{length=len;
place=point;
len=0;
return(place);
main()
inti;
charline[100];
printf("
Enterstring\n"
);
gets(line);
thelongestis:
"
for(i=longest(line);
alph(line[i]);
%c"
line[i]);
\n"
二、程序填空题
tk22.c是打印出杨辉三角形,在空白处将程序补充完整,运行得出正确结果。
1
11
121
1331
14641
15101051
.
#defineN11
main()
intI,j,a[N][N];
for(I=1;
I<
N;
I++)
{a[I][I]=1;
a[I][1]=1;
//
for(I=3;
I<
for(j=2;
j<
I;
j++)//
a[I][j]=a[I-1][j-1]+a[I-1][j];
for(I=1;
I++)
{for(j=1;
=I;
j++)
%6d"
a[I][j]);
一、程序改错题(20分)。
下列程序是建立一个包含学生有关数据的单向链表。
但该程序有2个错误,错误出现在每个注释行附近,请调试改正。
调试改正中,不得改变程序结构,也不得增删语句。
#defineNULL0
structstud
longnum;
charname[10];
floatscore;
structstud*next;
};
/*……………comment……………*/
intn;
structstudcreate()
structstud*head,*p1,*p2;
n=0;
p1=p2=(structstud*)malloc(sizeof(structstud));
scanf("
%ld,%s,%f"
&
p1->
num,p1->
name,&
score);
/*……………comment……………*/
head=NULL;
while(p1!
=0)
n=n+1;
if(n==1)head=p1;
elsep2->
next=p1;
p1=(structstud*)malloc(size(structstud));
p2->
next=NULL;
return(head);
二、程序填空题(20分)。
下面的程序是完成从键盘上输入若干行长度不一的字符串把其存到一个文件名为ttt.txt的磁盘文件上去,再从该文件中输出这些数据到屏幕上,将其中的小写字母转换成大写字母。
然而,该程序是一个不完整的程序,请在下划线空白处将其补充完整,以便得到正确答案,但不得增删原语句。
#include<
stdio.h>
inti,flag;
charstr[80],c;
FILE*fp;
if((fp=fopen("
TTT"
"
w"
))==NULL)
{printf("
can'
tcreatefile\n"
exit(0);
for(flat=1;
flag;
)
请输入字符串\n"
gets(str);
fprintf(fp,"
%s"
str);
是否继续输入?
if((c=getchar()=='
N'
||
(1))
getchar();
fseek(fp,0,0);
while(fscanf(fp,"
str)!
=EOF)
{for(i=0;
str[i]!
\0'
;
if((str[i]>
(str[i]<
str[i]=_
(2)
fclose(fp);
}
试题一、程序改错题:
gc56.c程序用于将字符串中的小写字母转换为大写字母,程序中有两处错误,请调试改正
之,但不得增删语句.
#include<
voidmain(void)
{
chars[255];
s);
for(i=0;
s[i];
if(s[i]>
&
s[i]<
)//if(s[i]>
b'
s[i]=s[i]-'
+'
//s[i]=s[i]+'
试题二、程序填空题
tk56.c程序用于计算4×
5的整型数组中最大元素所在行和列的位置。
下面程序不完整,
请将其补充完整,以便得到正确答案,注意:
不得增行和删行,也不得修改程序的结构。
。
#include<
inta[4][5]={{4,8,9,10,12},
{2,5,13,17,11},
{81,76,34,57,33},
{1,90,3,78,55}};
intmax,max_row,max_col;
inti,j;
max=a[0][0];
max_row=0;
max_col=0;
4;
for(j=0;
5;
if(max<
a[i][j])//
{
max=a[i][j];
max_row=i;
max_col=j;
}
%d%d"
max_row,max_col);
2.程序改错题
gc57.c的功能是互换给定数组中的最大数和最小数。
如将下面8个数:
5,3,1,4,2,8,9,6
变成:
5,3,9,4,2,8,1,6
程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。
程序有二处错误,请改正。
注意:
main()
staticinta[8]={5,3,1,4,2,8,9,6};
voidjhmaxmin();
Originalarray:
\n"
i<
8;
i++)
%5d"
a[i]);
jhmaxmin(a,8);
Arrayafterswapingmaxandmin:
voidjhmaxmin(p,n)
int*p,n;
//intp,n;
intt,*max,*min,*end,*q;
end=p+n;
max=min=p;
for(q=p+1;
q<
end;
q++)
{if(*q>
*max)max=q;
if(*q<
*min)min=q;
//if(*q<
max)min=q;
t=*max;
*max=*min;
*min=t;
1.程序填空题
tk57.c用来输出两整数M和N之间的所有素数(质数)。
所谓一个整数n为素数,是指n除了能被1和其本身n除尽
外,不能被2到n-1中的任何整数除尽。
如7为素数,而9不是素数。
程序中,外循环变量i用于控制整数选择范围,内循环变量j用于判断某整数i是否为素数,若是,
则输出该素数,且通过变量s来控制每行输出5个素数。
#defineM4
#defineN30
inti,j,k,s=0;
for(i=M;
=N;
i++)//
{for(j=2;
j<
i;
j++)//
if(i%j==0)break;
if(j>
=i)
i);
s=s+1;
if(s%5==0)printf("
程序改错题:
gc101.c的功能为:
输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有三处错误代码,请改正.注意,不得改变程序结构。
inta[8],*p=a;
inttempmin,tempcode;
\ninputthenumbers:
%d"
p+i);
tempmin=*p;
7;
for(j=i;
if(j==i||*(p+j)<
tempmin)
{tempmin=*(p+j);
//tempmin=*(p+i);
tempcode=j;
if(tempcode!
{*(p+tempcode)=*(p+i);
*(p+i)=tempmin;
//*(p+j)=tempcode;
%d,"
*(p+i));
//printf("
(p+i));
程序填空题
tk101.c中有整形数组a[]。
通过调用子程序inv(),对a[]数组中的元素,反向交换存储位置。
请在括号[]处补充完整程序,并删除[],运行测试,实现上述要求。
不得增加行或删除行,也不得更改程序结构。
voidinv(intx[],intn)
inttemp,i,j,m=[];
for(i=0;
=m;
{j=n-i-1;
temp=x[i];
[];
x[j]=[];
return;
inta[10]={4,5,6,7,8,9,10,11,12,88};
inti;
printf("
Theoriginalarray:
10;
%3d"
inv(a,10);
Thereversearray:
}
之,但不得增删语句.(20分)
请将其补充完整,以便得到正确答案。
(20分)
if(max<
a[i][j])//
1.程序填空题
tk57.c用来输出两整数M和N之间的所有素数(质数)。
=N;
i;
if(s%5)printf("
2.程序改错题
gc57.c的功能是互换给定数组中的最大数和最小数。
程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。
在**********之间有二处错误,请改正。
//if(*q<