C语言上机试题库.docx
- 文档编号:3679328
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:42
- 大小:29.62KB
C语言上机试题库.docx
《C语言上机试题库.docx》由会员分享,可在线阅读,更多相关《C语言上机试题库.docx(42页珍藏版)》请在冰豆网上搜索。
C语言上机试题库
C上机试题库
一、/*程序修改题1
给定程序MODI1.C中函数fun的功能是:
先从键盘上输入一个
3行3列矩阵的各个元素的值,然后输出主对角线元素之和。
请改正函数fun中的错误或在横线处填上适当的内容并把横线删
除,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序
的结构!
*/
#include
intfun()
{
inta[3][3],sum;
inti,j;
/*********found**********/
sum=0;
//______;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
/*********found**********/
scanf("%d",&a[i][j]);
//scanf("%d",a[i][j]);
}
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("Sum=%d\n",sum);
}
main()
{
fun();
}
/*编程题
编写程序,实现矩阵(3行3列)的转置(即行列互换)
例如,输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun
的花括号中填入你编写的若干语句。
*/
#include
#include
intfun(intarray[3][3])
{//
inti,j,t;
for(i=0;i<3;i++)
for(j=0;j
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;}
//
}
main()
{
inti,j;
intarray[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
clrscr();
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:
\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
NONO();
}
NONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
inti,j,array[3][3];
FILE*rf,*wf;
rf=fopen("b0103.in","r");
wf=fopen("b0103.out","w");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
fscanf(rf,"%d",&array[i][j]);
fun(array);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
fprintf(wf,"%7d",array[i][j]);
fprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
/*程序修改题2
给定程序MODI1.C中函数fun的功能是:
将从键盘上输入的每个
单词的第一个字母转换为大写字母,输入时各单词必须用空格隔开,
用'.'结束输入。
请改正程序中的错误,使程序能输出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改
程序的结构!
****老王注:
本类有输出结果的程序修改题,在评分时先看结果,如果
****结果正确,则直接给分;结果不正确或无结果,再一个错
****一个错评分。
此法并不适用所有类似题。
*/
#include
intfun(char*c,intstatus)
{
/***********found**********/
if(*c=='')return1;
//if(c=='')return1;
else
{
if(status&&*c<='z'&&*c>='a')
/***********found**********/
*c+='A'-'a';
//c+='A'-'a';
return0;
}
}
main()
{
intflag=1;
charch;
printf("请输入一字符串,用点号结束输入!
\n");
do
{
ch=getchar();
flag=fun(&ch,flag);
putchar(ch);
}while(ch!
='.');
printf("\n");
NONO();
}
NONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
chars1[81],ch;
inti,flag=1;
FILE*rf,*wf;
rf=fopen("g02.in","r");
wf=fopen("g02.out","w");
fgets(s1,80,rf);
for(i=0;i ch=s1[i]; flag=fun(&ch,flag); s1[i]=ch; } fprintf(wf,"%s",s1); fclose(rf); fclose(wf); } /*G02.IN内容: keysinindexesallowyouquickaccesstospecificrecordsanddefine */ /*G02.OUT内容: KeysInIndexesAllowYouQuickAccessToSpecificRecordsAndDefine */ /*编程题 程序的功能是: 把20个随机数存入一个数组,然后输出该数组 中的最小值。 其中确定最小值的下标的操作在fun函数中实现,请给 出该函数的定义。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 */ /*老王注: 本题考生可以一字不动,只要按Ctrl+F9运行一下, 即可得38分,费去m牛n虎之力正确编程,不过多得 2分而已! */ #include #include #defineVSIZE20 intvector[VSIZE]; intfun(intlist[],intsize) {// inti,min=0; for(i=1;i if(list[min]>list[i]) min=i; returnmin; // } main() { inti; clrscr(); for(i=0;i { vector[i]=rand(); printf("Vector[%d]=%6d\n",i,vector[i]); } i=fun(vector,VSIZE); printf("\nMininum: Vector[%d]=%6d\n",i,vector[i]); NONO(); } NONO() /*请在此函数内打开文件,输入测试数据,调用fun函数, 输出数据,关闭文件。 */ { inti; FILE*fp; fp=fopen("b0203.out","w"); for(i=0;i i=fun(vector,VSIZE); 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 130 */ 程序修改题3 code: -------------------------------------------------------------------------------- /* 给定程序MODI1.C中函数fun的功能是: 计算整数n的阶乘。 请改正程序中的错误或在横线处填上适当的内容并把横线删除, 使它能计算出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改 程序的结构! */ #include"stdio.h" doublefun(intn) { doubleresult=1.0; while(n>1&&n<170) /*********found*********/ result*=n--; //result*=--n; /*********found*********/ returnresult; //return_____; } main() { intn; clrscr(); printf("Enteraninteger: "); scanf("%d",&n); printf("\n\n%d! =%lg\n\n",n,fun(n)); NONO(); } NONO() { /*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。 */ intn,i; FILE*rf,*wf; rf=fopen("g03.in","r"); wf=fopen("g03.out","w"); for(i=1;i<=10;i++){ fscanf(rf,"%d",&n); fprintf(wf,"%lg\n",fun(n)); } fclose(rf); fclose(wf); } -------------------------------------------------------------------------------- /*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 */ 编程题 code: -------------------------------------------------------------------------------- /* 编写函数fun,函数的功能是: 从字符串中删除指定的字符。 同 一字母的大、小写按不同字符处理。 若程序执行时输入字符串为: turbocandborlandc++ 从键盘上输入字符: n,则输出后变为: turbocadborladc++ 如果输入的字符在字符串中不存在,则字符串照原样输出。 注意: 部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 */ #include #include intfun(chars[],intc) {// char*q=s; for(;*q;q++) if(*q! =c)*(s++)=*q; *s=0; // } main() { staticcharstr[]="turbocandborlandc++"; charch; clrscr(); printf("原始字符串: %s\n",str); printf("输入一个字符: "); scanf("%c",&ch); fun(str,ch); printf("str[]=%s\n",str); NONO(); } NONO() { /*请在此函数内打开文件,输入测试数据,调用fun函数, 输出数据,关闭文件。 */ FILE*rf,*wf; chars[81],ch,w; intlen; rf=fopen("b0303.in","r"); wf=fopen("b0303.out","w"); fgets(s,80,rf); fscanf(rf,"%c",&ch); len=strlen(s)-1; w=s[len]; if(w=='\n'||w==0x1a)s[len]=0; fun(s,ch); fprintf(wf,"%s",s); fclose(rf); fclose(wf); } -------------------------------------------------------------------------------- /*b0303.in文件内容如下: Youcanspecifythattheprimaryindexisinrecordnumbersequence. t */ /*b0303.out文件内容如下: Youcanspecifyhaheprimaryindexisinrecordnumbersequence. */ 二、2001年9月 *程序修改题13 给定程序MODI1.C中函数fun的功能是: 将字符串中的内容按 逆序输出,但不改变字符串中的内容。 例如,若字符串为abcd,则应输出: dcba。 请改正程序中的错误,使它能计算出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序 的结构! */ #include /************found************/ fun(char*a) //fun(chara) {if(*a) {fun(a+1); /************found************/ printf("%c",*a); //printf("%c"*a); } } main() {chars[10]="abcd"; printf("处理前字符串=%s\n处理后字符串=",s); fun(s);printf("\n"); } /*编程题 请编写一个函数fun,它的功能是: 比较两个字符串的长度, (不得调用C语言提供的求字符串长度的函数),函数返回较长的字 符串。 若两个字符串长度相同,则返回第一个字符串。 例如,输入beijingshanghai(为回车键), 函数将返回shanghai。 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 */ #include char*fun(char*s,char*t) {// char*ss=s,*tt=t; while((*ss)&&(*tt)) {ss++;tt++;} if(*tt)return(t); elsereturn(s); // } main() {chara[20],b[10],*p,*q; inti; printf("Input1thstring: "); gets(a); printf("Input2thstring: "); gets(b); printf("%s\n",fun(a,b)); NONO(); } NONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE*fp,*wf; inti; chara[20],b[20]; fp=fopen("bc03.in","r"); if(fp==NULL){ printf("数据文件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); } /*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函数,不得增行或删行,也不得更改 程序的结构! */ #include #include /**********found**********/ fun(double*a,double*b) //fun(double*a,*b) { /**********found**********/ if(*a**b>0.0) //if(a*b>0.0) return1; elsereturn0; } main() {doublen,m; clrscr(); printf("Entern,m: ");scanf("%lf%lf",&n,&m); printf("\nThevalueoffunctionis: %d\n",fun(&n,&m)); NONO(); } NONO() {/*请在此函数内打开文件,输入测试数据,调用fun函数, 输出数据,关闭文件。 */ inti; doublen,m; FILE*rf,*wf; rf=fopen("gc8.in","r"); wf=fopen("gc8.out","w"); for(i=0;i<10;i++){ fscanf(rf,"%lf%lf",&n,&m); fprintf(wf,"%d\n",fun(&n,&m)); } fclose(rf); fclose(wf); } /*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 0 1 1 0 0 0 1 1 0 */ /*编程题 请编一个函数fun(int*a,intn,int*odd,int*even),函 数的功能是分别求出数组中所有奇数之和以及所有偶数之和。 形参n 给出数组中数据的个数;利用指针odd返回奇数之和,利用指针even 返回偶数之和。 例如: 数组中的值依次为: 1,9,2,3,11,6;则利用指针 odd返回奇数之和24;利用指针even返回偶数之和8。 注意: 部分源程序存在文件PROG1.C文件中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。 */ #include #include #defineN20 fun(int*a,intn,int*odd,int*even) {// inti; *odd=0;*even=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 试题库