C语言1-15套上机题_第1页
C语言1-15套上机题_第2页
C语言1-15套上机题_第3页
C语言1-15套上机题_第4页
C语言1-15套上机题_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 1 套 上机考试试题1. 填空题fun()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不 ab,cd”。1.下列给定程序中,函数变。例如,若输入“Ab cD,则输出#include #include #include char 1 fun(char tt)int i;for(i=0;tti;i+)if(tti=A)&(tti=2 )tti+=32;return(tt); main()char tt81; printf(nPlease enter a string: ); gets(tt);printf(nThe result string is:n%s,fun( 3);

2、2.函数fun()的功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母则不转换 )。 #include#include#includevoid fun(char *ss)int i;for(i=0;ssi!=0;i+)if(i%2=1&ssi=a&ssi=z)1main()2 *wf;例如,若输入abc4Efg,则应输出aBc4EFgchar tt81,s10=abc4Efg3printf(nPlease enter an string within 80characters:n);gets(tt);printf(nnAfter changing, the str

3、ingn%s,tt); fun(tt);printf(nbecomesn%sn,tt);wf=fopen(out.dat,w);fun(s);fprintf(wf,%s,s);fclose(wf);2. 改错题下列给定程序中,函数fun()的功能是逐个比较a, b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。请改正程序中的错误,使它能得到正确结果。#include #include void fun(char *p,char *q,char *c)

4、int k=0;while(*p|*q)/*found*ck=*q; else ck=*p; if(*p) p+; if(*q) q+ ;/*found*/*/ if (*p=*q)k+fun(a,b,c);printf(The string a:); puts(a); printf(The string b:); puts(b); main()printf(The result :); puts(c); char a10=fshADfg,b10=sdAEdi,c80=0;3. 编程题请编写函数fun,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位

5、数依次放在c数个位和十位上,例如,当a=16,b=35,调用该函数后,注意: 部分源程序给出如下#includevoid fun(int a ,int b,long *c)main()int a,b;b数的十位和个位数依次放在c数的百位和千位上c=5361 。long c;clrscr();printf(Input a,b;); scanf(%d%d,&a, &b);fun(a,b,&c);printf(The result is:%ldn,c);第1 套 上机考试试题1填空题1. 【答案】(1 ) *( 2) Z(3) tt【解析】(1 )由下面对return语句可以看出,该函数的返回值类型

6、是指向字符串的指针,所以应该使用符号“* ”(2)从ASCII码表中可以看出,小写字母的 ASCII码值比对应大写字母的 ASCII码值大32,根据ASCII码值判断该字母是不是大写字母,判断的标准是ASCII码值是否介于A和Z之间。(3) 根据题目的意思这里应该调用函数fun对字符串tt进行转换,所以应该使用tt作为函数的参数。2. 【答案】( 1 ) ssi=ssi-32;( 2) FILE( 3) ;【解析】(1 )从。语言的学习中我们知道,只要将小写字母减去32则转成大写字母,将大写字母加上32则转成小写字母。(2)根据下面对于wf的操作可以知道,wf是一个文件型的指针,所以应该使用关

7、键字FILE对其进行声明。(3)根据题目的意思这里应该是对指向字符串的指针变量进行初始化,所以应该使用“;”作为语句结束的标志,这是C语言的规定。2. 改错题(1) 错误: if (*p=*q) 正确: k+;【解析】错误1:依题意,把ASCII值小或相等的字符存放到 c数组中,故if语句的关系运算符应为 “=” 错误2 : C语言规定,每个语句要用分号结束。3. 编程题void fun(int a ,int b,long *c) *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;【解析】语句*c=(b%10)*1000+(b/10)*100+(a%10)*10

8、+a/10;是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。注意“ /”和“ ”的用法。第2 套 上机考试试题1. 填空题1. 下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺 序对每5个元素求一个平均值,并将这些值依次存放在 w所指的数组中。若s所指数组中元素的个数不是 5的 倍数,多余部分忽略不计。例如, s所指数组有14个元素,则只对前10个元素进行处理,不对最后的 4个元 素求平均值。#include #define SIZE 20 fun (double *s,double *w) int

9、k,i; double sum;for(k=2,i=0;iSIZE;i+) si=k;k+=2;sum=0.0;for(k=0,i=0;iSIZE;i+)sum+=si;if(i+1)15=0)wk=sum/5; sum=0;k+;2 k;main() double aSIZE,bSIZE/5;int i, k;k=fun(a,b);printf(The original data:n);for(i=0;iSIZE;i+)if(i%5=0) printf(n); printf(%4.0f,ai);printf(nnThe result:n);for(i=0;ik;i+) printf(%6.2

10、f,3 )printf(nn);2.函数fun()的功能是:求出一个2X M整型二维数组中最大元素的值,并将此值返回调用函数。#define M 4#include for(j=0;jM;j+)if(max 3 aij)fun (int 1)max=aij;return max;int i,j,max= 2 for(i=0;i2;i+) main()FILE *wf;int arr2M=5,8,3,45,76,-4,12,82;wf=fopen(out.dat,w); fprintf (wf,%d,fun(arr); fclose(wf);printf(max=%dn,fun(arr);2.

11、改错题下列给定程序中,函数fun()的功能是根据整型形参 m,计算如下公式的值。y=1_1/(2 x 2)+1/(3 X 3)-1/(4 X 4)+, +(-1)(m+1)/(m X m) 例如:m中的值为5,则应输出0.838611。请改正程序中的错误,使它能得到正确结果。#include *found*#include double fun(int m) double y=1.0;*found*/int j=1;int i;for(i=2; i=m; i+) j=-1*j;*/y+=1/(i * i);return(y);main()int n=5;clrscr();printf(nThe

12、 result is %lfn ,fun(n);3. 编程题 请编一个函数 void fun(int 列中最大元素,并依次放入注意: 部分源程序给出如下#include #include#defineM 3#defineN 4void fun(int ttMN,int ppN) main()int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56;int pN,i,j,k; clrscr();ttMN , int ppN) ,PP所指的一维数组中。二维数组中的数已在主函数中给出tt指向一个M行N列的二维数组,求出二维数组每printf(The r

13、iginal data is:n);for(i=0;iM;i+)for(j=0;jN;j+)printf(%6d,tij); printf(n);fun(t,p);printf(nThe result is:n);for(k=0;kN;k+)printf(%4d,pk);printf(n);第2 套 上机考试试题1 填空题1. 【答案】( 2 )return(3 ) bi(1)%【解析】(1)根据题目的意思,这里是执行按顺序对每5个元素求一个平均值的操作,所以应该使用取余符号“%”,如果是 5的倍数,则该式子的值为零。(2) 根据C语言的规定,除了使用关键字void的任何一个子函数都应该有返回

14、值,所以应该使用关键 字 return 把变量 k 的值返回主函数。(3) 由题目的意思可知这里是把存在数组b中的内容依次循环输出,所以变量名应该使用bi。2. 【答案】1 ) aM2 ) a003) 【解析】(1 )从。语言的学习中我们知道,多维数组作为参数传递的规则是,第一维空,其余维写数字,这里 是考察对于这个规则的应用,至于参数名称可以在子函数中得到。(2)根据下面f的操作可以知道,这里是进行比较的开始, 应使max存放数组中的第一个元素的值作为 默认的初始值。(3)根据题目的意思这里应该是对二维数组中的元素进行逐个比较,所以应该使用“”,即只要现在的max比该元素小,就把该元素最为最

15、大值赋值给max。2. 改错题(1)错误: int j=1;(2)错误: y+=1/(i * i);正确: double j=1.0;正确: y+=j/(i * i);【解析】错误1 :为了做除法运算,j要定义为实型数,否则除得的结果将为整数。 错误2:题中公式是加减相间的运算,通过j来实现。void fun(int ttMN,int ppN) int i,j,max;for(j=0;jN;j+)max=tt0j;/*for(i=0;imax) /*max=ttij;ppj=max;/*3. 编程题假设各列中的第一个元素最大 */如果各列中的其他元素比最大值还大,则将这个更大的元素看做当前该列

16、中最大的元素 */将各列的最大值依次放入 pp 数组中 */解析】本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然 后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比较。,首尾元素除外,因此,数组的下标值要从1开始,用循环变量i来依次取得数组中的元素,用数组中的元素si和sj进行比较,如果后一个元素的ASCII码值小于前一个元素的 ASCII码值,则交换这两个数组元素的值。第3套上机考试试题1.填空题1.下列给定程序中,函数fun()的功能是:将 化为A

17、,z转化为a),其他字符不变。#include #include #include void fun(char *s)while( 1) if(*s=A&*s=a&*s=z)if(*s=Z)*s=A:else if(*s=z)*s=a;else *s+=2;3 ;s所指字符串中的字母转换为按字母序列的后续字母(但Z转main() char s80;printf(n Enter a string with length80:nn); gets (s);printf(n The string:nn); puts(s);fun(s);printf(nn The Cords :nn); puts(s)

18、;2.函数fun()的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。#include #include #include void fun(char*s, char t)int i,j=0;for(i=0;si!=1;i+)if(i%2=02 si%2=0)tj+=si;3main()2.改错题FILE *wf;char s100 ,t100;printf(nPlease enter string S:) scanf(%s,s);fun(s,t);printf(nThe result is: %sn,t

19、);wf=fopen(out.dat,w);fun(ABCDEFG123456,t);fprintf(wf,%s,t);fclose(wf);例如,若s所指字符串中的内容为 ABCDEFG123456,其中字符A的ASCII码值为奇数,因此应当删除; 其中字符B的ASCII码值为偶数,但在数组中的下标为奇数, 因此也应当删除;而字符2的ASCII码值为偶数, 所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是246。下列给定程序中,函数fun的功能是按以下递归公式求函数值。Fun (n) - un(n _1) 2*found*例如:当给n输入5时,函数值为24

20、0;当给n输入3时,函数值为60 请改正程序中的错误,使它能得到正确结果。fun(int n);#include *f I*/if(n=1)c=15;elsec=fun(n-1)*2; return(c);3. 编程题main()int n; printf(Enter n:); scanf(%d,&n);printf(The result :%dnn,fun(n); 请编写函数fun(),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII值码升序排列。 例如:原来的字符串为 BdsihAd , 注意: 部分源程序给出如下。则排序后输出为 BAdhisd 。#include c

21、har s10;#include #include clrscr();printf( 输入 7个字符的字符串 :);int fun(char *s, int num) gets(s); fun(s,7);printf(n%s,s);main()第3 套 上机考试试题1填空题1. 【答案】1)*s2)13 ) s+解析】while语句的结束条件是括号中的式子结果为0,而一个字符串的结所以一般情况下C语言中使用字符串的结尾作为结束循环的标志;(1 )从。语言的学习中我们知道, 尾标志为 0,即满足循环的结束条件, 为指向一个数组的指针,*s为取出s指向的内容。(2) 根据题目的意思,若该字母不是z

22、或Z,则该字母的ASCII码值加1。(3)根据题目的意思,要对字符串所有字母进行遍历,使用指针进行这一过程应该使用循环,即每次 都对该指针进行加一操作。2. 【答案】( 2 ) &( 3 ) tj=0;( 1 ) 0【解析】(1 )从。语言的学习中我们知道,for语句的结束条件是括号中中间式子结果为0,而一个字符串的结尾标志为0,即满足循环的结束条件,所以一般情况下C语言中使用字符串的结尾作为结束循环的标志,即这个应该使用 0。(2)根据题目的意思,除了下标为偶数同时ASCII 值也为偶数的字符之外,其他字符都删除,所以判断的时候应该使用逻辑与运算符“ & ” 。(3) 由算法可以看出,这里应

23、该是对字符串处理完毕,所以应该使用“0”作为字符串的结束标志,这是C语言的规定。2. 改错题(1) 错误: fun(int n);( 2)错误: if(n=1)正确: fun(int n) 正确: if(n=1)【解析】错误 1:该行是函数的首部,不是一条语句,因此不能以分号结束。错误2: if后面应该紧跟一个条件判断表达式,若写成“if(n=1) ”,则说明该表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。int fun(char *s, int num) char t;int i, j; for(i=1;inum-2;i+)/*for(j=i+1;jsj)/* t=si;/*s

24、i=sj; sj=t;3. 编程题下标值从 1开始, 用循环依次取得字符串中的字符 */ 将字符与其后的每个字符比较 */如果后面字符的 ASCII 码值小于该字符的 ASCII 码值 */则交换这两个字符 */解析】本题考查利用循环来控制数组元素的操作第4 套 上机考试试题1. 填空题1下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放 在t中。高位仍在高位,低位仍在低位。例如当 s中的数为87653142时,t中的数为7531。#include #include s/=3;void fun(long s,long *t)int d;long s1=

25、1;*t=0;main()long s, t;while(s0) d=s 110;if(d%2!=0)clrscr();printf(nPlease enter s: ); scanf(%ld,&s);fun(s,&t);*t=d*s1+*t;s1*=2 ;printf(The result is :%ldn,t);2.函数fun()的功能是:将s所指字符串中除了下标为偶数、同时ASC H码值为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为 ABCDEFG12345,其中字符B的ASC D码值为偶数,所在元素的下标 为奇数,

26、因此必须删除;而字符 A的ASCD码值为奇数,所在数组中的下标为偶数,因此不应当删除,其 他依次类推。最后t所指的数组中的内容应是 ACEG。#include #include #include void fun(char *s, char t)int i,j=0; for(i=0;si!= 1 ;i+) if(i%2=0 & si%2 2 0) tj+=si;3 main() 2. 改错题下列给定程序中函数fun()的功能是计算1/n!的值。 例如:给n输入5,则输出0.008333。请改正程序中的错误,使它能得到正确结果 #include #include /*f I*FILE *wf;c

27、har s100,t100; printf(nPlease enter string S: ); scanf(%s,s);fun(s,t);printf(nThe result is: %sn,t); wf=fopen(out.dat,w); fun(ABCDEFG12345,t); fprintf(wf,%s,t);fclose(wf);*int fun(int n) double result =1.0;if(n=0)return 1.0;while(n1 & n 170)*found*result=1/result;return result;main()int n;printf(Inp

28、ut N:); scanf(%d,&n);printf(n1/%d!=%lfn,n,fun(n);result *=n+ ;3. 编程题编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根 函数值返回。s,并作为例如:n为1000时,函数值应为s=96.979379 注意: 部分源程序给出如下。#include#include#includedouble fun(int n)main()clrscr();printf(s=%fn, fun(1000);第4 套 上机考试试题1填空题1. 【答案】2)103)103. 编程题 double fun(int

29、 n) double s=0.0; int i; for(i=0; in;i+) /* 和*/if(i%5=0&i%11=0)s=s+i;s=sqrt(s); /* return s;【解析】本题的解题思路是逐个取得从(1) %【解析】(1 )根据题目的意思,此处是由低到高逐位的提取变量d的每一位,然后再进行判断,所以可以推出这里应该使用取余符号“ % ” 。(2 )根据题目的意思,这里是把提取出来满足条件的数字依次从低到高填入一个新的变量t中,所以进行的操作应该是每一个数字都循环乘以 10,再加上原来的部分,例如:依次得到数字 321,最后应该输出 123。(3 )由算法可以看出,这里应该是

30、进行完毕一次提取,所以应该舍弃最低位一一个位,即把变量s除以10。2. 【答案】( 2 ) !=( 3 ) tj=0;( 1 ) 0【解析】(1 )从。语言的学习中我们知道,for语句的结束条件是括号中的第二个式子结果为0,而一个字符串的结尾标志为0,即满足循环的结束条件,所以一般情况下C语言中使用字符串的结尾作为结束循环的标志。(2) 根据题目的意思,要留下下标为偶数同时ASCII码值为奇数的字符,所以应该使用不等号“!= ” 。(3) 根据题目的意思,要对字符串所有字母进行遍历,使用数组进行这一过程应该使用循环,即每次 都对数组下标进行加一操作。2.改错题1)错误: int fun(int

31、 n)(2)错误: result *=n+ ;正确: double fun(int n)正确: result *=n- ;解析】错误 1 :函数的返回值为实型数据,所以函数的返回类型应为 double。错误 2:根据阶乘的概念,从n开始,每递减1的数相乘,直到1,因此此处n递减,而不是递增从0n中找到既能被5整除同时又能被11整除的数,并将这些数求对s求平方根*/0n之间的所有数,对每次取得的数进行条件判断,条件是既能被 5 整除同时又能被 11 整除,注意:这两个条件要求同时成立,因此用到了“ & ”运算符。满足条件,该 数就被累加到s中去,求出所有符合条件的数后,用 sqrt()函数(包含

32、于头文件vmath.h中)对s求平方根。第5 套 上机考试试题1. 填空题1. 下列给定的程序中,fun()函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的单词 ”是指有空格隔开的字符串)。例如,若输入:I am a student to take the examination则应输出: I aM A studenT tO takE thE examinatioN#include #include #include #include void fun(char *p)int k=0;for ( ;*p;p+)if (k)if (*p= )1 ;2)=toupper(*(p

33、-1);else k=1;main()char chrstr64;int d;printf(nPlease enter an English sentence within 63 letters: );gets(chrstr);d=strlen(chrstr);chrstrd= ;chrstrd+1=0;printf(nBofore changing:n %s,chrstr);3 ;printf(nAfter changing:n %s,chrstr); 2学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,函数fun()的功能#include #define116typ

34、edef2 char num10;int s ;STRUC;int fun (STRUC *a, STRUC *b)int i,j=0,max=a0.s;for(i=0;iN;i+)if(maxai.s) max=ai.s;for(i=0;iN;i+)if(max=ai.s) bj 3 =ai; return j;main ()STRUCsN=GA005,85,GA003,76,GA002,69,GA004,85,GA001,91,GA007,72,GA008,64,GA006,87,GA015,85,GA013,91,GA012,64,GA014,91,GA011,66,GA017,64,G

35、A018,64,GA016,72;STRUC hN;int i, n;FILE *out;n=fun(s,h);printf(The %d highest score :n,n);for (i=0; in; i+)printf(%s %4dn ,hi.num,hi.s);printf(n);out=fopen(out45.dat, w);fprintf(out, %dn,n);for(i=0; in; i+)是:把分数最高的学生数据放在 h所指的数组中。注意:分数高的学生可能不只一个,函数返回分数最高学 生的人数。fprintf(out, %4dn ,hi.s);fclose(out);2.

36、改错题下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。 例如:输入 352 ,则输出应该是 38;若输入 328,则输出应该是 77。 请改正程序中的错误,使它能得到正确结果#include while(num)#include return (k);long fun(long num)/*found*main()*/long n;long k=1;clrscr();doprintf(Please enter a number:);scanf(%ld,&n);k+=(num%10)*(num%10);printf(n%ldn,fun(n);num/=10;/*fou

37、nd*/3. 编程题请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数, 数列F(n)的定义为结果由函数返回。 其中 FibonacciF(0) = 0, F(1) = 1F(n)=F(n-1)+F(n-2)例如: t=1000 时 ,函数值为 987。注意: 部分源程序给出如下。#includemain()#include#includeint n;int fun(int t)clrscr();n=1000;printf(n=%d,f=%dn,n, fun(n);1 填空题1. 【答案】1)k=0第5 套 上机考试试题2)*(p-1)3 ) fun(chrstr)

38、解析】(1 )根据题目的意思,这里应该是以变量 k作为判断标志,如果标志为1并且当前指针指向空格就应该 把标志变回 0,以便下一次检测。(2 )根据题目的意思,此处进行的是将 p所指单词的最后一个字母改成大写,但是此时p已经循环到了单词那个空格,所以应该对 p-1 进行操作。(3)由算法可以看出,这里应该是进行函数调用,根据子函数定义可以知道,参数是一个指向向字符 串的指针,所以应该把数组的名字(也可以认为是指向数组首地址的指针)作为参数。2. 【答案】( 2 ) struct( 3 ) +1) N【解析】(1) 从C语言的学习中我们知道,#define语句可以在函数的开头定义一些常量,其格式

39、为“#define变 量名 常量值”,注意结尾不需要分号。(2) 根据题目的意思,这里进行的是一个结构的定义,很明显应该使用关键字struct 。(3 )由算法可以看出,第2个循环的作用是找出与 max相等的成绩,也即最高成绩的学生记录,并存 入b中,因为分数高的学生可能不只一个,所以这里的变量j也需要每次赋值之后加一。2. 改错题*/1 )错误: long正确: long 解析】错误 1 :k=1;k=0;k用来存放各位数字的平方和,初值应为错误2: do-while语句的语法,while() 后加分号。3.编程题int fun(int t) inta=1,b=1,c=0,i; /*a/*d

40、o c=a+b; a=b; b=c;while (ct); c=a;/*/*解析】return c;根据所给数列定义不难发现,2)错误:正确:0。b 代表第 n-1while(num)while(num);代表第 n-2 项,如果求得的数c比指定比较的数小,则计算下一个数,对 a,b 重新置数 */项, c 代表第 n 项 */Fibonacci如果求得的数c比指定比较的数大时,退出循环 */此时数c的前一个Fibonacci数为小于指定比较的数的最大的数该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b始终代表第n-1项(

41、通过不断地重新赋值来 实现)。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。第6 套 上机考试试题1. 填空题1.下列给定程序中,函数fun()的功能是:计算s所指字符串中含有t所指字符串的数目并作为函数值返回。2. #include #include #include #define N 80 int fun(char *s,char *t) int n;char *p, *r;n=0; while(*s) p=s;r=t; while(*r)if(*r=*p) r+;1;else break;2函数fun()的功能是用来删除字符串中

42、的所有空格。例如:输入asd af aa z67,则输出为asdafaaz67。if(*r=2)n+;3 ;return n;main()char aN,bN; int m;printf(nPlease enter string a: );gets(a); printf(nPlease enter substring b: ); gets(b); m=fun(a,b);printf(nThe result is :m=%dn,m);#include #include #include int fun (char *str)int i,j=0;for(i=0;stri!= 1;i+)if(str

43、i!= )strj+=2 ;3 =0;main()2. 改错题FILE *wf;char str81,*s=asd af aa z67 printf(Input a string : ); gets(str);puts(str); fun(str);printf(* str: %sn,str); wf=fopen(out.dat,w);fun(s);fprintf(wf,%s,s); fclose(wf);下列给定程序中,函数fun()的功能是将字符串s中位于偶数位置的字符或 ASCII码为奇数的字符放入字符串t中(规定第一个字符放在第0位中)。例如:字符串中的数据为 ADFESHDI ,则输

44、出应当是 AFESDI 请改正程序中的错误,使它能得到正确结果。#include #include *found*#include #define N 80void fun(char s, char t )int i, j=0;for(i=0; istrlen(s);i+)main()*found*if(i%2=0|si%2!=0) tj+=si ; tj=0;3. 编程题char sN, tN;clrscr();printf(nPlease enter string s :);gets(s);fun(s,t);printf(nThe result is :%sn,t);。请编写一个函数fun

45、(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于 100 )。例如:主函数从键盘给输入 n的值为56,则输出为sum=1113。注意: 部分源程序给出如下。#include long fun(int n)main() int n;long sum;printf(Input n:);scanf(%d, &n);sum=fun(n); printf(sum=%ldn, sum)第6 套 上机考试试题1填空题1. 【答案】( 2 )0(3)s+( 1 ) p+【解析】(1 )根据题目的意思,这里应该是把要比较的字符串和原字符串的一部分进行逐个字符的比较,所以

46、 指向原字符串的指针p也应该进行每步加一的操作。(2 )根据题目的意思,此处是判断上一步的比较是否与r指向的完整的字符串相等,如果完全相同,则r应该指向字符串的末尾,即0。(3)由算法可以看出,这里应该是进行的整个while循环,即应该控制s指针不停的向后移动直到字符串结尾。2. 【答案】( 2) stri(3) strj( 1 ) 0【解析】(1 )从。语言的学习中我们知道,for语句的结束条件是括号中的第二个式子结果为0,而一个字符串的结尾标志为0,即满足循环的结束条件,所以一般情况下C语言中使用字符串的结尾作为结束循环的标(2) 根据题目的意思,此处进行的是将 stri 循环得到的字符串中不是空格的字符依次向前填入,方法 是每走到一个字符都判断其是否为空格, 若不是空格 (注意在 if() 的单引号之间有一个空格 ),则将其保存 strj 中。(3) 由算法可以看出,这里应该是把新生成的字符串结尾加入串结束标志0,因为循环 j 已经到了字符串的最后,所以直接对 strj 操作。2. 改错题(1) 错误: void fun(char s, char t )( 2)错误: if(i%2=0|si%2!=0)正确: void fun(char *s, char t )正确: if(i%2=0|

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论