甘孜编程考试真题及答案

//1编程计算1到100之间所有素数的和。

# 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;

}