程序设计第⼆次考试前题⽬总结(1)
以下题⽬仅供参考,答案也不唯⼀。可能有些漏洞。
1.排序题⽬
定义⼀个函数,实现将数组元素奇数排列在左,偶数在右的排列。输⼊⽰例说明:有1⾏包括10个整数,其中包括奇数和偶数,各整数之间⽤空格隔开输出⽰例说明:有1⾏,奇数排左,偶数排右,各整数之间⽤空格隔开。
输⼊⽰例:5 18 23 24 26 111 3 50 43 17输出⽰例:5 17 23 43 3 111 26 50 24 18
#include"stdio.h"
void paixu(int a[10])
{ int i=0,j,k,q=9,t;
while(k!=1)
{ if(a[i]%2==0) {
while(a[q]%2==0)
q--;
t=a[i];
a[i]=a[q];
a[q]=t;
q--;}
j=i+1;
while(a[j]%2==0){
j++;
if(j==10)
break;}
if(j==10)
k=1;
i++;
}
}
int main(){
int a[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
paixu(a);
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
2.第四章B,C中的⼀题。
字符串截取前2位描述:有两个长度⼩于30的字符串s1和s2,编写程序,判断字符串s1中是否包含字符串s2。输⼊⽰例说明:
有2⾏,第1⾏是字符串s1,第2⾏是字符串s2
输出⽰例说明:
有1⾏,即字符串⽐较结果,若s1包括s2则输出""Yes"",否则输出""No""
输⼊⽰例:I am a body am输出⽰例:Yes
#include"stdio.h"
int main()
{
int i,j;
char s1[30],s2[30];
gets(s1);
gets(s2);
i=0,j=0;
while( s1[i] && s2[j] )
if( s1[i]==s2[j] )
{ i++;
j++;
}
else
{ i=i-j+1;
j=0;
}
if( s2[j]==0 )
printf("Yes\n");
else
printf("No\n");
return 0;
}
3.字符串
1.删除重复字符(删除右边的保留左边的。)
题⽬:输⼊⼀个字符串,删除右边重复的字符。
输⼊:abcdefgaehq
输出:abcdfgehq
#include "stdio.h"
void deleteRight( char s[], char ch )
{
int i,j;
i=j=0;
while( s[i] )
if( s[i]==ch ) i++;
else
s[j++]=s[i++];
s[j]=0;
}
int main()
{
char s[1000];
// freopen("deleteRight.in", "r", stdin);
// freopen("deleteRight.out", "w", stdout);
gets(s);
int i=0;
while( s[i] )
{
deleteRight( &s[i+1], s[i]);
i++;
puts(s);
return 0;
}
2.删除重复字符串(删除左边的保留右边的。)
【题⽬描述】
如果字符串中有2个以上的相同字符,仅保留最右边的那个,删除其左边的相同字符。例如输⼊字符串为:
I am a student to take the examination.
其中字符:' '(空格),'a','m','t','e','n','o ','n','i'都有2个以上,仅保留最右边那个后,输出字符串为:Isudkh exmation.
输⼊:abcde fgaaaabccM
输出:de fgabcM
0<=输⼊字符串长度<= 300
0<= 字符串中的ASCII码<=127
#include"stdio.h"
#include"string.h"
int main()
{
int i,j;
int k,z,t=0;
char s[100];
gets(s);
k=strlen(s);
i=k-1;//最后⼀位字符。
for(i=k-1;i>0;i--)
{
for(j=0;j
{ if(s[j]==s[i])//从左边和右边相同的。删除。
{ for(z=j;z<=k-1-t;z++)
s[z]=s[z+1];
i=i-1;//删除后字符串长度少1.
t++;//计算删除数量。
j--;//从原来位置再开始寻。
}
}
}
s[k-t+1]='\0';//结束语句.
puts(s);
return 0;
}
3.删除给定字符串
题⽬:输⼊⼀个字符串s1,再给⼀个指定的要删除的字符串s2,将会把s1含有s2部分删除例如输⼊:
s1: abcdefghig123654 s2:fghig123
输出:
abcde654
#include "stdio.h"
#include "string.h"
void deleteSubString( char s[], int pos, int len) { int i,j;
for( i=pos, j=pos+len; s[j]; i++,j++)
s[i]=s[j];
s[i]=0;
}
int seekSubString( char s[], char t[] )
{ int i,j;
i=j=0;
while( s[i] && t[j] )
if( s[i]==t[j] )
{ i++;
j++;
}
else
{ i=i-j+1;
j=0;
}
if( t[j]==0 )
return i-j;
else return -1;
}
int main()
{ char s[1000], t[1000];
// freopen("deleteSubString.in", "r", stdin);
// freopen("deleteSubString.out", "w", stdout); gets(s);
gets(t);
int pos, len=strlen(t);
while( (pos=seekSubString( s, t ))!=-1 ) deleteSubString( s, pos, len);
puts(s);
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论