甘孜编程考试真题及答案
# include & ltstdio.h & gt
# include & ltmath.h & gt
int search(int I);
主()
{
int i,num
num = 0;
for(I = 2;我& lt101;i++)
{
if(搜索(I))
{
num+= I;
printf("%d ",I);
}
}
}
int搜索(int i)
{
int k,j;
for(k = I/2;k & gt1;k -)
{
j = I;
j = j/k;
if(i==j*k)返回0;
}
返回1;
}
/*2有一个字符数组str,里面存放一个字符串,字符数组中ASCII值为奇数的字符通过编程从数组中删除。
删除后形成的新字符串仍存储在原字符数组str中。
*/
# include & ltstdio.h & gt
主()
{
char ch[10];
int i,num[10],j,k;
for(I = 0;我& lt10;i++)
{
ch[I]= I+30;//这只是为了编程方便。
num[I]= 0;
}
for(I = 0;我& lt10;i++)
{
k = ch[I];
if(k % 2 = = 0)num[I]= I+1;
}
for(j=0,I = 0;我& lt10;i++)
{
if(num[i]!=0)
{
ch[j]= ch[(num[I]-1)];
j++;
}
}
ch[j]= ' \ 0 ';
}
/*3写一个程序,找出满足以下条件的所有四位数字:前两位和后两位之和的平方等于数字本身。
例如:3025=(30+25)2
*/
# include & ltstdio.h & gt
int search(int I);
主()
{
int I;
for(I = 1000;我& lt10000;i++)
{
if(search(i)) printf("%d ",I);
}
}
int搜索(int i)
{
int j,k;
j = I/100;
k = I % 100;
if(i==(k+j)*(k+j))返回1;
否则返回0;
}
//4有一个整数数组,有10个元素,元素通过编程逆序存储。
# include & ltstdio.h & gt
主()
{
int i,k,num[10];
for(I = 0;我& lt10;i++)
{
num[I]= I+1;
}
for(I = 0;10-I & gt;我;i++)
{
k = num[I];
数字[I]=数字[9-I];
num[9-I]= k;
}
}
//5将包含10个整数的数组按选择方法降序排序。
主()
{
int m,k,j,I,d,p[10];
p[10]=(23,25,65,9,45,73,2,56,222,20);
k = 0;
m = 10-1;
while(k & lt;m)
{
j = m-1;
m = 0;
for(j = k;我& lt= j;i++)
{
if(p[I]& gt;p[i+1])
{
d = p[I];
p[I]= p[I+1];
p[I+1]= d;
}
}
j = k+1;
k = 0;
for(I = m;我& gt= j;我-)
{
if(p[i-1]>p[i])
{
d = p[I];
p[I]= p[I-1];
p[I-1]= d;
}
}
}
}
/*6假设输入字符串只包含字母和*符号。请写一个程序删除字符串中的所有*。
被删除的字符串仍然存储在原始数组中。例如,字符串中的内容是:“* * ab * a * BC * def * g * * * *,
删除的字符串是“abABCDEFG”。
*/
# include & ltstdio.h & gt
主()
{
int i,j;
char ch[]= * * * * ab * A * BC * DEF * G * * * * ";
for(I = 0;ch[i]!='\0';i++)
{
if(ch[i]=='* ')
{
for(j = I;ch[j]!='\0';j++)
{
ch[j]= ch[j+1];
}
I-;
}
}
}
//7从键盘输入10个整数存储在一个数组中,找出最大值并输出。
# include & ltstdio.h & gt
主()
{
int j,num[10],I;
printf("输入数字:");
for(I = 0;我& lt10;i++)
{
scanf("%d ",& ampnum[I]);
}
j = num[0];
for(I = 0;我& lt10;i++)
{
if(j & lt;num[I])j = num[I];
}
printf("%d ",j);
}
/*8写一个程序,找出所有的水仙花。所谓的水仙花号是三位数,
它的数字的立方和等于数字本身。比如说;153=13+53+33
*/
# include & ltstdio.h & gt
int search(int I);
主()
{
int I;
for(I = 100;我& lt1000;i++)
{
if(search(i)) printf("%d ",I);
}
}
int搜索(int i)
{
int j,k,m;
j = I/10;
k = j % 10;
j = I/100;
m = I % 10;
j = j * j * j
k = k * k * k
m = m * m * m
if(i==(j+k+m))返回1;
否则返回0;
}