您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > C语言程序设计基础上机考试一题目及参考答案
1.输入一串字符(可能包含空格),计算输入的字符串中整数的个数并输出。2.输入一个字符串,对字符串相同的字符只保留一个(首次出现的字符)。3.找出一个大于给定整数m且紧随m的素数。4.统计老年人各年龄段(每10岁为一个年龄段)的人数并存到b数组中,n个人员的年龄放在a数组中。5.计算并输出k以内最大的10个能被13或17整除的自然数之和。6.读入一行英文文本,将其中每个单词的最后一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。7.求A、B两个整数数组数据的交集,并输出交集的数据。8.输入若干个整数,且每个数均在1000至9999之间,按照每个数的后三位进行升序排序,若后三位相等,则按照原数据升序排序。9.将字符串s所有的子串t用“copy”替换,并输出替换后的字符串。10.判断一个整数是否是回文数。所谓的回文数是指高位到地位与从低位到高位读取该数,得到的数是相同的数据。例如:1221,121是回文数。1.输入一串可能包含空格的字符串,计算该字符串中数字(整数)的个数。2.删除字符串中的数字字符3.计算并输出high以内最大的10个素数之和。4.A,B是两个整数集合,将A中和B相同的数据删除,并输出删除后的集合。5.计算字符串s中含有字符串t的数目,并输出。6.编程实现:在已排好序的字符串中插入一个新的字符串,使插入后仍然有序,输出插入后的字符串。7.在三位整数中寻找符合条件的整数,并依次有大到小存入数组,并输出,它既是完全平方数,又是两位数字相同。8.判断一个整数是否是回文数。所谓的回文数是指高位到地位与从低位到高位读取该数,得到的数是相同的数据。例如:1221,121是回文数。9.找出200以内所有的完数,并输出其因子。一个数若恰好等于它的各因子之和,称其为完数。例如:6=1+2+3,其中1、2、3为因子,6是因子和。10.统计在字符串str中26个小写英文字母各自出现的次数。C程序设计基础上机考试一基本要求:1)所有程序不能使用外部变量2)子函数中不能出现数据的输入输出语句3)每个程序至少包含两个函数定义(包括主函数)1.输入一串字符(可能包含空格),计算输入的字符串中整数的个数并输出。#includestdio.h#includestring.hvoidmain(){chara[100];intcount;inttest1(chara[]);printf(输入字符串:\n);gets(a);count=test1(a);printf(整数个数为:%d\n,count);}inttest1(chara[]){inti,j,n=0;for(i=0;a[i]!='\0';i++)if(a[i]='0'&&a[i]='9'){for(j=i+1;a[j]!='\0';j++)if(!(a[j]='0'&&a[j]='9'))break;n++;i=j;}return(n);}2.输入一个字符串,对字符串相同的字符只保留一个(首次出现的字符)。#includestdio.h#defineN100voidtest2(charss1[N]){inti,j,k;for(i=0;ss1[i]!='\0';i++)for(j=i+1;ss1[j]!='\0';j++)if(ss1[j]==ss1[i]){for(k=j;ss1[k]!='\0';k++)voidtest2(charss1[N]){inti,j,k,n;n=strlen(ss1);for(i=0;in;i++)for(j=i+1;jn;j++)if(ss1[j]==ss1[i]){for(k=j;kn;k++)ss1[k]=ss1[k+1];j--;}}voidmain(){voidtest2(charss1[N]);charss[N];printf(inputastring\n);gets(ss);test2(ss);printf(outputthestring\n);printf(%s\n,ss);}3.找出一个大于给定整数m且紧随m的素数。素数:只能被1或自身整除的整数。判断整数n是否为素数——采用穷举法求解。基本算法:若m%i==0则说明m不是素数。其中i的取值范围为:2~m-1。#includestdio.hvoidmain(){intm,n;inttest3(intm);printf(inputanumber:m\n);scanf(%d,&m);n=test3(m);printf(thefollowingnumberis%d\n,n);}inttest3(intm){intt=0,i;while(t!=1){m=m+1;i=m-1;while(i1){if(m%i!=0)i--;elsebreak;}if(i==1)t=1;/*说明m已除遍m-1至2,都除不尽,所以m是素数)*/}return(m);}4.统计老年人各年龄段(每10岁为一个年龄段)的人数并存到b数组中,n个人员的年龄放在a数组中。#includestdio.h#defineN10#defineM10voidtest4(inta[N],intb[M]){inti,k;for(i=0;iN;i++){k=a[i]/10;b[k-6]++;}}voidmain(){inta[N],i;intb[N]={0};printf(inputage:60and160);for(i=0;iN;i++){scanf(%d,&a[i]);if(a[i]60||a[i]160){printf(inputerror);i--;}}test4(a,b);printf(\n);for(i=0;iM;i++)printf(%d=age%d:%d\n,(i+6)*10,(i+6+1)*10,b[i]);}5.计算并输出k以内最大的10个能被13或17整除的自然数之和。#includestdio.hinttest5(intk){intcount=0,sum=0;while(count10){if(k%13==0||k%17==0){count++;sum=sum+k;}k--;}return(sum);}voidmain(){intk,x;printf(输入数字k\n);scanf(%d,&k);x=test(k);printf(%d以内的最大个能被或整除的自然数之和为%d\n,k,x);}6.读入一行英文文本,将其中每个单词的最后一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。例如,若输入Iamastudenttotaketheexamination.,则应输出IaMAstudenTtOtakEthEexamination.。#includestdio.h#includestring.h#defineM100voidtest6(chara[]){inti;for(i=0;a[i]!='\0';i++)if(a[i]='a'&&a[i]='z'&&(a[i+1]==''||a[i+1]=='\0'))a[i]=a[i]-32;}voidmain(){chara[M];printf(pleaseinputthetext\n);gets(a);test6(a);printf(%s,a);}7.求A、B两个整数数组数据的交集,并输出交集的数据。/*交集就是二个数组中相同的元素。算法是数组A每取一个元素,与数组B的所有元素相比,若相等,则将该元素存入第三个数组……*/#includestdio.hvoidmain(){inta[100],b[100],c[100];inttext(inta[],intb[],intc[],intn1,intn2);/*函数声明*/intn1,n2,n3,i;printf(输入A组的个数:);scanf(%d,&n1);printf(输入A组的元素:);for(i=0;in1;i++)scanf(%d,&a[i]);printf(输入B组的个数:);scanf(%d,&n2);printf(输入B组的元素:);for(i=0;in2;i++)scanf(%d,&b[i]);n3=text(a,b,c,n1,n2);/*调用函数*/printf(交集:);for(i=0;in3;i++)printf(%d,c[i]);putchar('\n');}inttext(inta[],intb[],intc[],intn1,intn2){inti,j,n=0;for(i=0;in1;i++)for(j=0;jn2;j++)if(a[i]==b[j])c[n++]=a[i];return(n);}8.输入若干个整数,且每个数均在1000至9999之间,按照每个数的后三位进行升序排序,若后三位相等,则按照原数据升序排序。#includestdio.hvoidmain(){inta[80],i,j,k,n;voidsort(inta[],intn);printf(请输入数字的个数\n);scanf(%d,&n);for(i=0;in;i++)scanf(%d,&a[i]);test8(a,n);for(i=0;in;i++)printf(%d,a[i]);}voidtest8(inta[],intn){inti,j,t;for(i=0;in-1;i++)for(j=i+1;jn;j++)if(a[i]%1000a[j]%1000){t=a[i];a[i]=a[j];a[j]=t;}elseif(a[i]%1000==a[j]%1000)if(a[i]a[j]){t=a[i];a[i]=a[j];a[j]=t;}}9.将字符串s所有的子串t用“copy”替换,并输出替换后的字符串。#includestdio.h#includestring.h#defineM100#defineN50intSubString(charsub[],charS[],intpos,intlen){inti;if(pos1||posstrlen(S)||len0||lenstrlen(S)-pos+1)return-1;for(i=0;ilen;i++)sub[i]=S[i+pos-1];sub[i]='\0';return1;}intIndex(charS[],charT[],intpos){intm,n,i;charsub[N];if(pos0){n=strlen(S);m=strlen(T);i=pos;while(i=n-m+1){SubString(sub,S,i,m);if(strcmp(sub,T)!=0)++i;elsereturni;}}return0;}char*test9(chars1[],chars2[],chart[]){inti,pos;chartemp[M];intm,n;chars[M]=;m=strlen(s1);n=strlen(s2);i=1;pos=1;while(pos=m-n+1&&i){i=Index(s1,s2,pos);if(i!=0){SubString(temp,s1,pos,i-pos);strcat(s,temp);strcat(s,t);pos=i+n;}}SubString(temp,s1,pos,m-pos+1);//剩余串strcat(s,temp);returns;}voidmain(){charstr1[M],str2[N],t[N]=copy,*str=;printf(pleaseinputstring1\n);gets(str1);printf(pleaseinputstring2\n);gets(str2);str=test9(str1,str2,t);printf(%s,str);}10.判断一个整数是否是回文数。所谓的回文数是指高位到地位与从低位到高位读取该数,得到的数是相同的数据。例如:1221,121是回文数。#
本文标题:C语言程序设计基础上机考试一题目及参考答案
链接地址:https://www.777doc.com/doc-2908134 .html