C语言程序设计基础上机考试一题目及参考答案.docx
- 文档编号:6166723
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:19
- 大小:23.12KB
C语言程序设计基础上机考试一题目及参考答案.docx
《C语言程序设计基础上机考试一题目及参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础上机考试一题目及参考答案.docx(19页珍藏版)》请在冰豆网上搜索。
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.输入一串字符(可能包含空格),计算输入的字符串中整数的个数并输出。
#include"stdio.h"
#include"string.h"
voidmain()
{
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.输入一个字符串,对字符串相同的字符只保留一个(首次出现的字符)。
#include"stdio.h"
#defineN100
voidtest2(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])
voidtest2(charss1[N])
{inti,j,k,n;
n=strlen(ss1);
for(i=0;i for(j=i+1;j if(ss1[j]==ss1[i]) {for(k=j;k ss1[k]=ss1[k+1]; j--;n--; } } {for(k=j;ss1[k]! ='\0';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。 #include"stdio.h" voidmain() {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(i>1) {if(m%i! =0)i--; elsebreak; } if(i==1)t=1;/*说明m已除遍m-1至2,都除不尽,所以m是素数)*/ } return(m); } 4.统计老年人各年龄段(每10岁为一个年龄段)的人数并存到b数组中,n个人员的年龄放在a数组中。 #include"stdio.h" #defineN10 #defineM10 voidtest4(inta[N],intb[M]) {inti,k; for(i=0;i {k=a[i]/10; b[k-6]++; } } voidmain() {inta[N],i; intb[N]={0}; printf("inputage: >60and<160"); for(i=0;i {scanf("%d",&a[i]); if(a[i]<60||a[i]>160){printf("inputerror");i--;} } test4(a,b); printf("\n"); for(i=0;i printf("%d<=age<%d: %d\n",(i+6)*10,(i+6+1)*10,b[i]); } 5.计算并输出k以内最大的10个能被13或17整除的自然数之和。 #include"stdio.h" inttest5(intk) {intcount=0,sum=0; while(count<10) {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."。 #include"stdio.h" #include"string.h" #defineM100 voidtest6(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的所有元素相比,若相等,则将该元素存入第三个数组……*/ #include"stdio.h" voidmain() {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;i printf("输入B组的个数: "); scanf("%d",&n2); printf("输入B组的元素: "); for(i=0;i n3=text(a,b,c,n1,n2);/*调用函数*/ printf("交集: "); for(i=0;i printf("%d",c[i]); putchar('\n'); } inttext(inta[],intb[],intc[],intn1,intn2) {inti,j,n=0; for(i=0;i for(j=0;j if(a[i]==b[j])c[n++]=a[i]; return(n); } 8.输入若干个整数,且每个数均在1000至9999之间,按照每个数的后三位进行升序排序,若后三位相等,则按照原数据升序排序。 #include"stdio.h" voidmain() {inta[80],i,j,k,n; voidsort(inta[],intn); printf("请输入数字的个数\n"); scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); test8(a,n); for(i=0;i printf("%d",a[i]); } voidtest8(inta[],intn) {inti,j,t; for(i=0;i for(j=i+1;j if(a[i]%1000>a[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”替换,并输出替换后的字符串。 #include #include #defineM100 #defineN50 intSubString(charsub[],charS[],intpos,intlen) {inti; if(pos<1||pos>strlen(S)||len<0||len>strlen(S)-pos+1) return-1; for(i=0;i sub[i]=S[i+pos-1]; sub[i]='\0'; return1; } intIndex(charS[],charT[],intpos) {intm,n,i;charsub[N]; if(pos>0) {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是回文数。 #include"stdio.h" inttest1(intx) {intc,t=0; c=x; while(c>0) {t=t*10+c%10; c=c/10; } if(t==x) return1; else return0; } voidmain() {inta,b=0; printf("pleaseinputalongint\n"); scanf("%d",&a); b=test1(a); if(b==1)printf("%8dishuiwenshu",a); elseprintf("%8disnotahuiwenshu",a); } C程序设计基础上机考试二 基本要求: 1)所有程序不准使用外部变量 2)子函数中不能出现数据的输入输出语句 3)每个程序至少包含两个函数模块 1.输入一串可能包含空格的字符串,计算该字符串中数字(整数)的个数。 #include"stdio.h" #include"string.h" voidmain() {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.删除字符串中的数字字符 /*算法: 对字符串中的每个元素进行判断是否为数字,若是,则将下一个字符移到该字符处,字符串长度-1,……*/ #include"stdio.h" #include"string.h" voidfun(ch) charch[30]; { inti,j,len=0; len=strlen(ch); printf("%d\n",len); for(i=0;i {if(ch[i]>'0'&&ch[i]<'9') {for(j=i;j {ch[j]=ch[j+1]; } len--; i=i-1; ch[len]='\0'; } } } voidmain() {charch[30];inti; printf("输入字符串: "); gets(ch); fun(ch); printf("删除后的数据: \n"); printf("%s",ch); getch(); } 3.计算并输出high以内最大的10个素数之和。 #include #include #include intfun(inth) {intsum=0,n=0,j,yes; while(h>=2&&n<10) {yes=1; for(j=2;j<=h/2;j++) if(h%j==0) {yes=0;continue;} if(yes) {sum+=h;n++;} h--; }return(sum); } main() {inthigh; printf("inputhigh",high); scanf("%d",&high); printf("%d\n",fun(high)); getch();} 4.已知A,B是两个整数集合,将A中和B相同的数据删除,并输出删除后的集合。 #include"stdio.h" voidmain() {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;i printf("输入B组的个数: "); scanf("%d",&n2); printf("输入B组的元素: "); for(i=0;i n3=text(a,b,c,n1,n2); printf("交集: "); for(i=0;i printf("%d",c[i]); putchar('\n'); } inttext(inta[],intb[],intc[],intn1,intn2) {inti,j,n=0; for(i=0;i for(j=0;j if(a[i]==b[j])break; c[n++]=a[i]; return(n); } 5.计算字符串s中含有字符串t的数目,并输出。 #include"stdio.h" intcount(charstr[],charsubstr[]) {intI,j,k,num=0; for(I=0;str[I]! ='\0';I++) for(j=I,k=0;substr[k]==str[j];k++,j++) if(substr[k+1]=='\0'\*说明主串字符与子串相同*\ {num++;break;} return(num); } voidmain() {chars[80],t[80]; intn; gets(s);gets(t); printf("%d\n",count(s,t)); getch();} 6.编程实现: 在已排好序的字符串中插入一个新的字符串,使插入后仍然有序,输出插入后的字符串。 程序1: sort(string2) charstring2[80]; {chart; inti,j,n; n=strlen(string2); for(i=0;i for(j=0;j if(string2[j]>string2[j+1]) {t=string2[j]; string2[j]=string2[j+1]; string2[j+1]=t; } } main() {charstr1[80],str2[80],str[80]; inti,j,n; printf("Enterstring1: ");gets(str1); printf("Enterstring2: ");gets(str2); sort(str2); n=0; for(i=0,j=0;str1[i]! ='\0'&&str2[j]! ='\0';) if(str1[i] elsestr[n++]=str2[j++]; while(str1[i]! ='\0')str[n++]=str1[i++]; while(str2[j]! ='\0')
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 基础 上机 考试 题目 参考答案