C语言程序设计基础上机考试一题目及参考答案.docx

上传人:b****8 文档编号:10126697 上传时间:2023-02-08 格式:DOCX 页数:23 大小:22.15KB
下载 相关 举报
C语言程序设计基础上机考试一题目及参考答案.docx_第1页
第1页 / 共23页
C语言程序设计基础上机考试一题目及参考答案.docx_第2页
第2页 / 共23页
C语言程序设计基础上机考试一题目及参考答案.docx_第3页
第3页 / 共23页
C语言程序设计基础上机考试一题目及参考答案.docx_第4页
第4页 / 共23页
C语言程序设计基础上机考试一题目及参考答案.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C语言程序设计基础上机考试一题目及参考答案.docx

《C语言程序设计基础上机考试一题目及参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计基础上机考试一题目及参考答案.docx(23页珍藏版)》请在冰豆网上搜索。

C语言程序设计基础上机考试一题目及参考答案.docx

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')str[n++]=str2[j++];

str[n]='\0';

printf("Result:

");puts(str);

getch();}

程序2:

main()

{charch[20],ch1[20];

printf("inputstring1:

");gets(ch);

printf("inputstring2:

");gets(ch1);

sort(ch,ch1);

puts(ch);

getch();

}

sort(a,s)

chara[20],s[20];

{

inti,j,k;

for(k=0;s[k]!

='\0';k++)

{j=0;

while(s[k]>=a[j]&&a[j]!

='\0')j++;

for(i=strlen(a)+k;i>=j;i--)a[i+1]=a[i];

a[j]=s[k];

}

}

7.在三位整数中寻找符合条件的整数,并依次有大到小存入数组,并输出,它既是完全平方数,又是两位数字相同。

intch(i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1