大学c语言上机考试题库(大学c语言期末考试试题及答案汇总)求一份大一c语言考试试卷,加答案附件上传失败... C语言期末考试题及答案(1) 1、构成C语言的基本单位是___B____。 过程? 函数? 语句? 命令? 2、设x为整型变量,不能正确表达数学关系:5x10的c语言表达式是__B___。 5 x5x10? x==6||x==7||x==8||x==9? !(x=5)(x10)? 3、在C语言中,逻辑运算符的优先级从高到低的排列顺序为__D___。 、||、!? ||、、!? 、!、||? !、、||? 4、下面语句中,正确的是__D___。 printf("%cn","student");? printf("%cn","c");? printf("%sn",a);? printf("%sn","hello");? 5、对于for(表达式1;;表达式3)可以理解为__B___。 for(表达式1;0;表达式3)? for(表达式1;1;表达式3)? for(表达式1;表达式1;表达式3)? for(表达式1;表达式3;表达式3)? 6、执行下面程序段的结果是__B___。 main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d",a,b); } a=1,b=1? a=2,b=1? a=1,b=0? a=2,b=2? 7、执行下面程序段的结果是__D___。 int x=0; do { printf(“%2d”,x--); }while(x); 打印出321? 打印出23? 不打印任何结果? 陷入死循环? 8、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___。 If(xy) if(yz)x=y; else z=y; 7? 6? 5? 4? 9、如果一个函数被说明为static,那么__B___。 该函数只能被main函数调用? 该函数能被当前文件的函数调用,但不能被其他文件的函数调用? 该函数不能被当前文件的函数调用,可以被其他文件的函数调用? 任何文件的函数都可以调用该函数? 10、下面关于局部变量的描述中,错误的是__D___。 函数的局部变量的有效范围只能在本函数? 函数的形式参数也是局部变量? 局部变量的名称不能和函数同名称? 不同的函数中不能定义相同名称的局部变量? 11、下列初始化字符数组的语句中,错误的是__A___。 char str[5]="hello";? char str[]={'h','e','l','l','o','\0'};? char str[5]={"hi"};? char str[100]="";? 12、引用数组元素时,数组下标可以是__D___。 整型常量? 整型变量? 整型表达式? 以上均可? 13、 已知:char str[10],*p=str; 下面的语句中正确的是__B___。 str="ABC";? p="ABC";? *str="ABC";? *p="ABC";? 14、下面语句中,错误的是___D__。 int i;int *p;p=i;? int i,*p;p=a;? int i,*p=a;? int i,*p;*p=i;? 15、下面对于结构体类型的描述正确的是__A___。 结构体类型的大小为各成员变量所占内存的总和? 结构体类型变量与简单数据类型变量的引用规则一致。? 结构体类型的大小为其成员中所占内存空间最大的变量的大小? 结构体类型的大小为其最后一个成员中所占内存空间的大小? 16、C语言规定:在一个源程序中,main函数的位置____C____。 必须在最开始? 必须在系统调用的库函数的后面? 可以任意? 必须在最后? 17、表达式18/4*sqrt(4.0)/8值的数据类型是 ___C____。 int? float? double? 不确定? 18、在c语言中,char型数据在内存中的存储形式是 ___D___。 补码? 反码? 原码? ASCII码? 19、阅读以下程序,当输入的数据形式为:25,13,10CR时,正确的输出结果为___D___。 main() { int x,y,z; scanf("%d%d%d",x,y,z); printf("x+y+z=%dn",x+y+z); } x+y+z=48? x+y+z=35? x+z=35? 不能确定? 20、有如下程序 void main() { float x=2.0,y; if(x0.0) y=0.0; else if(x10.0) y=1.0/x; else y=1.0; printf(“%fn”,y); } 该程序的输出结果是( C )。 0.000000? 0.250000? 0.500000? 1.000000? 21、判断char型变量s是否为小写字母的正确表达式是__C____。 'a'=s='z'? (s='a')(s='z')? (s='a')(s='z')? ('a'=s)and('z'=s)? 22、执行以下语句后,y 的值为___A___。 int x,y,z; x=y=z=0; ++x || ++y ++z; 0? 1? 2? 不确定值? 23、有如下程序段: int number=0; while(number++=3) printf(“%dn”,number++); 则正确的执行结果是___C___。 2 3 4? 0 1 2? 1 3? 2 4? 24、有如下程序 void main() { int n=9; while(n6) { n--; printf(“%d”,n); } } 该程序段的输出结果是__B___。 987? 876? 8765? 9876? 25、要使以下程序段输出10个整数,请在空格中填入一个整数。 for(i=0;i=___B___;printf("%dn",i+=2)); 15? 18? 20? 10? 26、设函数fun的定义形式为: fun(char ch,float x){…} 则以下对函数fun的调用语句中正确的是___B___。 fun(“abc”,3)? t=fun(‘D’,5)? fun(‘ab’,3)? fun(‘78’,1)? 27、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 Main() { printf("The sum=%dn",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。 s=s+n;return s;? s=s+i;return s;? return s;? return s+=I;? 28、设函数fun的定义形式为 int fun(int a[],int n) { int s=0,i=0; for(i=0;in;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(a[2],2)); } 则程序的运行结果为___C___。 3? 5? 7? 9? 29、若有说明:int a[10];则对数组元素的正确引用是___D____。 a[10]? a[3,5]? a(5)? a[10-10]? 30、以下不正确的定义语句是___B___。 double x[5]={2.0,4,0,6,0,8,0,10.0};? int y[5]={0,1,3,5,7,9};? char c1[]={'1','2','3','4','5'};? char c2[]={'x10','xa','x8'};? 31、下面程序的运行结果是___B____。 #include "stdio.h" main() { char str[]="SWLIA",c; int k; for(k=0;(c=str[k])!='\0';k++) { switch(c) { case 'I':++k;break; c SWA? SW*? SW*A? SW? 32、以下能正确进行字符串赋值操作的是___D___。 char s[5]={"12345"};? char s[5]={'1','2','3','4','5',‘6’};? char *s;*s="12345";? char *s="12345";? 33、以下程序段的运行结果是___C___。 Char a[ ]="program", *p; p=a; while (*p!='g') { printf("%c", *p-32); p++; } PROgram? PROGRAM? PRO? proGRAM? 34、若有说明:char *pc[ ]={"aaa", "bbb", "ccc", "ddd"};,则以下叙述正确的是__C____。 *pc[0]代表的是字符串"aaa"的首地址? *pc[0]代表的是字符'a'的首地址? pc[0]代表的是字符串"aaa"的首地址? pc[0]代表的是字符'a'的首地址? 35、下列程序的运行结果是___B___。 #include stdio.h #include string.h void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q1q2) { a=*q1++; *q1=*q2--; *q2=a;} } main() { char b[]="ABCDEFG"; f(b, s GAGGAGA? AGAAGAG? GFEDCBA? AGADAGA? 36、定义如下的结构体描述同学信息 struct Student { unsigned long id; char name[30]; char class[30]; }s; 假设此同学的序号为1002,姓名为黎明,班级为冶金3班,则描述正确的为___C__。 id=1002; name=黎明; class=冶金3班;? id=1002; name=”黎明”; class=”冶金3班”;? s.id=1002; s.name=”黎明”; s.class=”冶金3班”;? s.id=1002; s.name=黎明; s.class=冶金3班;? 37、用来描述C程序中注释的是__C___。 //? ? **? 38、下列变量中合法的定义是__A___。 short _a=2-1? long if=0xabcL? double 1_d=1.5e2? float a=1.5e2.7? 39、当c的值不为0时,能够将c的值赋给变量a和b的是__C___ c=b=a? (a=c)||(b=c)? (a=c)(b=c)? a=c=b? 40、设有以下程序段,执行后的输出结果是___B__ int x=100,y=200; printf("%d",(x,y)); 100? 200? 100,200? 编译出错 C语言期末考试题及答案(2) 1、若执行下面的程序时从键盘输入10,则输出是__B__ main( ) { int a; scanf(“%d”,a); if(a++10) printf(“%dn”,++a); else printf("%dn",a--); } 12? 11? 10? 9? 2、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x); 打印出321? 打印出23? 不打印任何结果? 陷入死循环? 3、执行与句:for(n=0;n++4; ); 后,变量n的值是__C__。 3? 4? 5? 不定? 4、以下关于循环的描述中,错误的是__D___。 可以用for语句实现的循环一定可以用while语句实现? 可以用while语句实现的循环一定可以用for语句实现? 可以用do…while语句实现的循环一定可以用while语句实现? do…while语句与while语句的区别仅仅是关键字while的位置不同? 5、下面的描述错误的是__C__。 函数可以有多个形式参数? 函数可以没有返回值? 函数内可以嵌套定义函数? 函数可以被其他函数调用? 6、函数返回值的类型是由__A__决定的。 定义函数时指定的返回类型? 函数中return语句的表达式类型? 主调函数的实际参数类型? 主调函数的返回值类型? 7、定义了一维int型数组a[10]后,下面错误的引用是__B__。 a[0]=1;? a[10]=2;? a[0]=5*2;? a[1]=a[2]*a[0];? 8、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__。 24? 25? 18? 17? 9、下面语句中,错误的是__D__。 int i; int *p; p=i;? int i,*p; p=a;? int i,*p=a;? int i,*p; *p=i;? 10、 已知int型二维数组a[3][4],数组元素a[1][2]的地址不能表达为__C__。 a[1][2]? a[1]+2? *a[1]+2? *(a+1)+2? 11、C语言中,5种基本数据类型的存储空间长度的排列顺序为___A___。 char char=int char char=int=long int=float 12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 ___B___。 7? 8? 6? 2? 13、若有说明语句:char c='72';则变量c ___A___。 包含1个字符? 包含2个字符? 包含3个字符? 说明不合法,c的值不确定? 14、若x,y均定义为整型,z定义为double型,以下不合法的scanf函数调用语句是___C___。 scanf("%d%lx,%le",x,y,z);? scanf("%2d * %d%lf",x,y,z);? scanf("%x%*d%o",x,y,z);? scanf("%x%o%6.2f",x,y,z);? 15、若输入字符串:abcde回车,则以下while循环体将执行___A___次。 while((ch=getchar())=='e') printf("*"); 1次? 死循环? 0次? 5次? 16、执行下面的程序段后,k的值是___C___。 k=1;n=263; do{k*=n%10;n/=10;}while(n); 3? 63? 36? 2? 17、下面程序段中循环的执行次数是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a=0); 10? 3? 5? 4? 18、下面程序段的运行结果是__D____。 x=2; do{printf("*");x--;}while(!x==0); *? ***? 没有输出? **? 19、下面程序段的运行结果是___B___。 i=1;s=1;a=0; do{a=a+s*i;s=-s;i++;}while(i=10); printf("%d",a); 2? -2? 3? 0? 20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b0) c=0; else c++; printf("%dn",c); } 该程序的输出结果是___A___。 0? 1? 2? 3? 21、程序中对fun函数有如下说明 void fun(); 下面说明是错误的是___B___。 fun函数无返回值? fun函数的返回值可以是任意的数据类型? fun函数没有形式参数? void 可以省略? 22、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 main() { printf("The sum=%dn",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。 s=s+n; return s;? s=s+i; return s;? return s;? return s+=i;? 23、 有以下程序 int f1(int x,int y){return xy?x:y;} int f2(int x,int y){return xy?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___ 4,3,7? 3,4,7? 5,2,7? 2,5,7? 24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。 2? 3? 4? 无确定值? 25、判断字符串s1是否大于字符串s2,应当使用___D____。 if(s1s2)? if(strcmp(s1,s2))? if(strcmp(s2,s1)0)? if(strcmp(s1,s2)0)? 26、当运行以下程序时,从键盘输入:AhaMA AhaCR CR表示回车,则下面程序的运行结果是___A____。 #include "stdio.h" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c) ahAMa? AhAMa? AhAMa ahA? ahAMa ahA? 27、以下程序执行后a的值为___C____。main( ) { int a,m=2, k=1, *p=k; a=p!=m; printf("%dn",a); } -1? 0? 1? 2? 28、以下能正确读入字符串的程序段是____C___。 char *p;scanf("%s", p);? char str[10];scanf("%s", str);? char str[10], *p;p=str; scanf("%s", p);? char str[10], *p=str;scanf("%s", p[1]);? 29、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是___B___。 i=x[1][1] ? i=*(*(x+1))? i=*(*(x+1)+1)? i=*(x[1]+1)? 30、下面程序的运行结果是____A___。 # include stdio.h # include string.h fun(char *s) { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++z--) { t=*a++; *a=*z--; *z=t;} } main() { char *p; p="a abdddfg? afcdebg? gbedcfa? gfedcba? 31、用来描述C程序中注释的是__C___ / /? ? * *? 32、对于"xyn102\'"字符串的长度是__B___ 7? 6? 12? 13? 33、已知:int x=10;执行语句x-=x+x;后x的值是__A___ -10? 10? -20? 20? 34、下列描述中,正确的是__A___ 所有的输入/输出都是通过调用库函数处理的? 所有的输入/输出都是通过输入/输出语句实现的? getchar和putchar可以省略#include? 在输入/输出格式中的*表示跳过数据的含义? 35、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___ if(xy) if(yz)x=y; else z=y; 7? 6? 5? 4? 36、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x); 打印出321? 打印出23? 不打印任何结果? 陷入死循环? 37、以下关于switch语句和break语句的描述正确的是__D___ 在switch语句中必须使用break语句? break语句只能用于switch语句体中? break语句只能用于循环语句中? 在switch语句中可以使用break语句? 38、与语句while(!x)等价的语句是__A___ while(x==0)? while(x!=0)? while(x!=1)? while(~x)? 39、下面的描述错误的是__C___ ?函数可以有多个形式参数? ?函数可以没有返回值? ?函数内可以嵌套定义函数? ?函数可以被其他函数调用? 40、 下面关于局部变量的描述中,错误的是__D___ ?函数的局部变量的有效范围只能在本函数? ?函数的形式参数也是局部变量? ?局部变量的名称不能和函数同名称? ?不同的函数中不能定义相同名称的局部变 有什么软件可以搜索大学C语言题目的啊?大学c语言搜题app。大学c语言搜题app原名叫做菜鸟学C语言是一款非常好用的学习c语言的手机软件 软件功能 1、选择题:按照考点分类的选择题习题,并有答案解析。 2、错题库:可自动加练习过程中错题加入收藏,以便反复练习。 3、上机操作题:300道上机操作题,程序填空题、程序修改题、程序设计题。 软件优势 1、选择题:按照考点分类的选择题习题,并有答案解析。 2、上级操作题:300道上机操作题,程序填空题、程序修改题、程序设计题。 3、最新押题:最新考试押题3套。 4、考点汇总:包含复习的考点。 5、错题库:可自动加练习过程中错题加入收藏,以便反复练习。 6、收藏夹:可在练习过程中自行收录题目到收藏夹,形成自己的小题库,针对性练习,提高通过率。 软件特色 1、随时随地都能够学习,而且还支持下载保存你学习内容离线继续学习。 2、同学们能够直接通过搜索引擎来查询寻找你感兴趣对你内容。 3、解答问题的办法非常多,可以选择通过拍照来答题,也可以选择输入题目来解答。 谁有大一C语言考试题?快考试了,跪求题库··单项选择题(每小题2分,共50分) 1、一个C程序的执行是从___A__。 A、本程序的main函数开始,到main函数结束 B、本程序的main函数开始,到本程序文件的最后一个函数结束 C、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 2、C语言程序的基本单位是___C___。 A、程序行 B、语句 C、函数 D、字符 3、请选出可用作C语言用户标识符的一组标识符___B___。 A、void B、a3_b3 C、For D、2a define _123 -abc DO WORD IF ase sizeof 主要特点 C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。 以上内容参考:百度百科-c语言 急求!!!全国计算机等级考试二级C机考题库 附答案的最好 !急!!!!1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。 答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) i%77!=0) a[j++]=i; *n=j; } 3: 第3题 请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp; for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; } 4: 第4题 请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。 答案: void fun(char *tt, int pp[]) { int i; for (i=0;i<26;i++) pp[i]=0; while (*tt) { switch (*tt) { case ‘a’: pp[0]++;break; case ‘b’: pp[1]++;break; case ‘c’: pp[2]++;break; case ‘d’: pp[3]++;break; case ‘e’: pp[4]++;break; case ‘f’: pp[5]++;break; case ‘g’: pp[6]++;break; case ‘h’: pp[7]++;break; case ‘i’: pp[8]++;break; case ‘j’: pp[9]++;break; case ‘k’: pp[10]++;break; case ‘l’: pp[11]++;break; case ‘m’: pp[12]++;break; case ‘n’: pp[12]++;break; case ‘o’: pp[14]++;break; case ‘p’: pp[15]++;break; case ‘q’: pp[16]++;break; case ‘r’: pp[17]++;break; case ‘s’: pp[18]++;break; case ‘t’: pp[19]++;break; case ‘u’: pp[20]++;break; case ‘v’: pp[21]++;break; case ‘w’: pp[22]++;break; case ‘x’: pp[23]++;break; case ‘y’: pp[24]++;break; case ‘z’: pp[25]++;break; } tt++; } } 5: 第5题 请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。 答案: void fun(int m, int k, int xx[]) { int g=0,I,j,flag=1; for(i=m+1;i<m*m;i++) { for(j=0;j<I;j++) { if(i%j!=0) flag=1; else { flag=0; break; } } if (flag==1 j=i) { if (k=0) { xx[g++]=i; k--; } else break; } } } 6: 第6题 请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。 答案: void fun(char a[],char b[], int n) { int I,j=0; for (i=0;i<LEN;i++) if (i!=n) { b[j]=a[i]; j++; } b[j]=‘\0’; } 7: 第7题 请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。 答案: void fun (int *s, int t, int *k) { int I, max; max=s[0]; for(i=0;i<t;i++) if (s[i]max) { max=s[i]; *k=I; } } 8: 第8题 编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。S=1+1/(1+2)+1/(1+2+3)+…….+1/(1+2+3+4+……+n) 答案: float fun (int n) { int i; float s=1.0, t=1.0; for(i=2;i<=n;i++) { t=t+i; s=s+1/t; } return s; } 9: 第9题 编写一个函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数,且要求mn。 p=m!/n!(m-n)! 答案: float fun(int m, int n) { float p,t=1.0; int I; for (i=1;i<=m;i++) t=t*I; p=t; for(t=1.0,i=1;i<=n;i++) t=t*I; p=p/t; for(t=1.0,i=1;i<=m-n;i++) t=t*I; p=p/t; return p; } 10: 第10题 编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。 迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0; (3)x1=cos(x0),求出一个新的x1; (4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2); (5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。 程序将输出root=0.739085。 答案: float fun() { float x1=0.0,x0; do { x0=x1; x1=cos(x0); } while(fabs(x0-x1)1e-6); return x1; } 11: 第11题 下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。 答案: int fun(int a[][N]) { int I,j; for(i=0;i<N;i++) for(j=0;j<=I;j++) a[i][j]=0; } 12: 第12题 下列程序定义了n×n的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。 答案: double fun(int w[][N]) { int I,j,k=0; double s=0.0; for(j=0;j<N;j++) { s+=w[0][j]; k++; } for(j=0;j<N;j++) { s+=w[N-1][j]; k++; } for(i=1;i<=N-2;i++) { s+=w[i][0]; k++; } for(i=1;i<=N-2;i++) { s+=w[i][N-1]; k++; } return s/=k; } 13: 第13题 请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。 答案: void fun(int tt[M][N], int pp[N]) { int I,j,min; for(j=0;j<N;j++) { min=tt[0][j]; for(i=0;i<M;i++) { if (tt[i][j]<min) min=tt[i][j]; } pp[j]=min; } } 14: 第14题 请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 答案: int fun(int a[M][N]) { int I,j,s=0; for(j=0;j<N;j++) { s+=a[0][j]; s+=a[M-1][j]; } for(i=1;i<=M-2;i++) { s+=a[i][0]; s+=a[i][N-1]; } return s; } 15: 第15题 请编写一个函数unsigned fun(unsigned w),w使一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。 答案: unsigned fun(unsigned w) { unsigned t,s=0,s1=1,p=0; t=w; while(t10) { if(t/10) p=t%10; s=s+p*s1; s1=s1*10; t=t/10; } return s; } 16: 第16题 请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。 答案: float fun(float h) { long t; float s; h=h*1000; t=(h+5)/10; s=(float)t/100.0; return s; } 17: 第17题 请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。 答案: void fun(char *s) { char ch; int I,m,n; i=0; m=n=strlen(s)-1; while(i<(n+1)/2) { ch=s[i]; s[i]=s[m]; s[m]=ch; i++; m--; } } 18: 第18题 编写程序,实现矩阵(3行3列)的转置(即行列互换)。 答案: void fun(int array[3][3]) { int I,j,temp; for(i=0;i<3;i++) for(j=0;j<I,j++) { temp=array[i][j]; array[i][j]=array[j][i]; array[j][i]=temp; } } 19: 第19题 编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。 答案: void fun(char s[],int c) { int i=0; char *p; p=s; while(*p) { if(*p!=c) { s[i]=*p; i++; } p++; } s[i]=‘\0’; } 20: 第20题 编写函数int fun(int lim,int aa[max]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。 答案: int fun(int lim, int aa[MAX]) { int k=0,I,j; for(i=lim;i1;i--) { for(j=2;j<i;j++) if(i%j==0) break; else continue; if(j=i) { aa[k]=i; k++; } } return k++; } 21: 第21题 请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii码降序排列。 答案: void fun(char *s,int num) { char t; int I,j; for(i=1;i<num-2;i++) for(j=i+1;j<num-1;j++) if(s[i]<s[j]) { t=s[i]; s[i]=s[j]; s[j]=t; } } 22: 第22题 n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。 答案: double fun(STREC *h) { double max; STREC *q=h; max=h-s; do { if(q-smax) max=q-s; q=q-next; } while(q!=0); return max; } 23: 第23题 请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出yes,否则返回0,主函数中输出no。回文是指顺读和倒读都是一样的字符串。 答案: int fun(char *str) { int I,n=0;fg=1; char *p=str; while (*p) { n++; p++; } for(i=0;i<n/2;i++) if (str[i]==str[n-1-i]); else { fg=0; break; } return fg; } 24: 第24题 请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用c语言提供的将字符串转换为整数的函数)。 答案: long fun (char *p) { long s=0,t; int i=0,j,n=strlen(p),k,s1; if(p[0]==‘-’) i++; for(j=I;j<=n-1;j++) { t=p[j]-‘0’; s1=10; for(k=j;k<n-1;k++) t*=s1; s+=t; } if(p[0]==‘-’) return –s; else return s; } 25: 第25题 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 答案: char *fun(char *s,char *t) { char *p,*t1=t,*s1=s; int n=0;m=0; while (*s1) { n++; s1++; } while(*t1) { m++; t1++; } if(n=m) p=s; else p=t; return p; } 26: 第26题 请编写一个函数fun,它的功能是:根据以下公式求x的值(要求满足精度0.0005,即某项小于0.0005时停止迭代): x/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+…+1×2×3×…×n/3×5×7×(2n+1) 程序运行后,如果输入精度0.0005,则程序输出为3.14…。 答案: double fun(double eps) { double s; float n,t,pi; t=1;pi=0;n=1.0;s=1.0; while((fabs(s))=eps) { pi+=s; t=n/(2*n+1); s*=t; n++; } pi=pi*2; return pi; } 27: 第27题 请编写一个函数fun,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 答案: void fun(int m, int *a, int *n) { int I,j=0; *n=0; for(i=1;i<=m;i++) if (i%7==0 || i%11 ==0) { a[j]=I; j++; } *n=j; } 28: 第28题 请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n 是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 答案: void fun (int a[],int n, int *max, int *d) { int I; *max=a[0]; *d=0; for(i=0;I<n;i++) if(a[i]*max) { *max=a[i]; *d=I; } } 29: 第29题 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 答案: void fun(char *ss) { int I,n; n=strlen(ss); for(i=1;i<n;i+=2) if(ss[i]=‘a’ ss[i]<=‘z’) ss[i]=ss[i]-32; } 30: 第30题 请编写一个函数fun,它的功能是:求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数。 答案: int fun(int a[][M]) { int I,j,max; max=a[0][0]; for(i=0;i<2;i++) for(j=0;j<M;j++) if(a[i][j]max) max=a[i][j]; return max; } 31: 第31题 请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。 答案: void fun(char *s,char t[]) { int I,j=0,n; n=strlen(s); for(i=0;I,n;i++) if(i%2==0s[i]%2==0) { t[j]=s[i]; j++; } t[j]=‘\0’; } 32: 第32题 请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。 答案: void fun(char *s,char t[]) { int I,j=0,n; n=strlen(s); for(i=0;I,n;i++) if(i%2!=0s[i]%2!=0) { t[j]=s[i]; j++; } t[j]=‘\0’; } 33: 第33题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。 答案: void fun(char *a,int n) { int i=0;k=0; char *p, *t; p=t=a; while (*t) t++; t--; while(*t==‘*’) { k++; t--; } t++; if(kn) { while (*pp<t+n) { a[i]=*p; i++; p++; } a[i]=‘\0’; } } 34: 第34题 学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 答案: int fun (STREC *a, STREC *b) { int I,j=0,n=0, max; max=a[0].s; for(i=0;i<N;i++) if(a[i].smax) max=a[i].s; for(i=0;i<N;i++) if(a[i].s==max) { *(b+j)=a[i]; j++; n++; } return n; } 35: 第35题 请编写一个函数,用来删除字符串中的所有空格。 答案: void fun(char *str) { int i=0; char *p=str; while (*p) { if(*p!=‘’) { str[i]=*p; i++; } p++; } str[i]=‘\0’; } 36: 第36题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 答案: void fun(char *a) { int i=0,n=0; char *p; p=a; while (*p==‘*’) { n++; p++; } while (*p) { a[i]=*p; i++; p++; } while(n!=0) { a[i]=‘*’; i++; n--; } a[i]=‘\0’; } 37: 第37题 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 答案: void fun(STREC *p) { double av=0.0; int i: for(i=0;i<N;i++) av+=p-s[i]; av/=N; p-ave=av; } 38: 第38题 请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 答案: int fun(char *ss, char c) { int n=0; while (*ss) { if(*ss==c) n++; ss++; } return n; } 39: 第39题 请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。 答案: void fun(int *w, int p, int n) { int b[N], i, j=0; for(i=0;i<=p;i++) { b[i]=w[i]; j++; } for(i=0;i<=p;i++) { w[j]=b[i]; j++; } } 40: 第40题 请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 答案: void fun(char *w,int m) { char b[N]; int I,j=0; for(i=0;i<m;i++) { b[j]=w[i]; j++; } for (i=0;i<strlen(w)-m;i++) w[i]=w[i+m]; for(j=0;j<m;j++) { w[i]=b[j]; i++; } w[i]=‘\0’; } 41: 第41题 请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 答案: void fun(char (*s)[n],char *b) {int i,j,k=0; for(j=0;j<n;j++) for(i=0;i<m;i++) {b[k]=*(*(s+i)+j) k++;} b[k]=‘\0’;} 42: 第42题 下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n],int n),该函数的功能是:将数组右上半三角元素中的值乘以m。 答案: void fun(int a[][n],int m) {int i,j; for(j=0;j<n;j++) for(i=0;i<=j;i++) a[j]=a[j]*m;} 43: 第43题 编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 答案: char *fun(char (*a)[81],int num) {int i; char *max; max=a[0]; for(i=0;i<num;i++) if(strlen(max)<strlen(a)) max=a; return max;} 44: 第44题 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。 答案: int fun(char *str,char *substr) {int n; char *p,*r; n=0; while(*str) {p=str; r=substr; while(*r) if(*r==*p) {r++; p++;} else break; if(*r==‘\0’) n++; str++;} return n;} 45: 第45题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n 给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用c语言给提供得字符串函数。 答案: void fun(char *a,int n,int h,int e) {int i=0; char *p; for(p=a+h;p<a+n-e;p++) {*(a+i)=*p; i++;} *(a+i)=‘\0’;} 46: 第46题 学生得记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。 答案: void fun(strec a[]) {int i,j; strec t; for(i=0;i<n-1;i++) for(j=i;s<n;j++) if(a.s<a[j].s) {t=a; a=a[j]; a[j]=t; }} 47: 第47题 请编写一个函数void fun(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。 答案: void fun(char *ss) {int i,n=0; char *p=ss; while(*p) {n++; p++;} for (i=0;i<n;i++) if ((ss=‘a’ss<=‘z’)i%2!=0) ss=ss-32; ss=‘\0’;} 48: 第48题 请编写函数fun,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。 答案: void fun(int a,int b,long *c) {*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;} 49: 第49题 请编写函数fun,其功能是:将s所指字符串中下标位偶数同时ascii值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。 答案: void fun(char *s,char t[]) {int i,j=0,n=strlen(s); for(i=0;i<n;i++) if(i%2==0s%2!=0) else {f[j]=s; j++;} t[j]=‘\0’;} 50: 第50题 已知学生的记录是由学号和学习成绩构成,n名学生的数据已存入a机构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。 答案: void fun(stu a[],stu *s) {int i,max; max=a[0].s; for (i=0;i<n;i++) if(a.smax) {max=a.s; *s=a;}} |