第一题:给定程序功能是用选择排序法对6个字符串进行排序。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
#include
#include
#define MAXLINE 20
fun(char *pstr[6])
{
int i, j;
char *p;
for (i=0; i<5; i++)
for (j=i+1; j<6; j++)
if (strcmp(*(pstr+i), ___1___) > 0)
{
p = *(pstr+i);
pstr[i] = ___2___;
*(pstr + j) = ___3___;
}
}
main()
{
int i;
char *pstr[6], str[6][MAXLINE];
for (i=0; i<6; i++)
pstr[i] = str[i];
printf("\nEnter 6 string(1 string at each line): \n");
for (i=0; i<6; i++)
scanf("%s", pstr[i]);
fun(pstr);
printf("The strings after sorting:\n");
for (i=0; i<6; i++)
printf("%s\n", pstr[i]);
}
参考答案:
第一题:第一空:*(pstr+j)or pstr[j]
第二空:pstr[j] or *(pstr+j)
第三空:p
第二题:下列给定程序中,函数fun 功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数作为函数值返回。规定,函数中a1放个位数,a2放十位数。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/********found********/
int fun( int *b );
{
int k, a1, a2, i = 0;
/********found********/
for (k=10; k<=55; k++)
{
a2 = k/10;
a1 = k - a2*10;
if ((k%3==0 && a2==5) || (k%3==0 && a1==5))
{
b[i] = k;
i++;
}
}
/********found********/
return k;
}
main()
{
int a[100], k, m;
m = fun(a);
printf("The result is:\n");
for (k=0; k printf("%4d", a[k]); printf("\n"); } 参考答案: 第二题:第一处:int fun(int *b);应改为int fun(int *b) 第二处:for(k=10;k<=55;k++)应改为for(k=1;k<55;k++) 第三处:return k;应改为return I;
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |