return(k); }
main()
{ char s[80];
printf(“Please input a string:”); gets(s);
printf(“\\nThe string length is : %d”,str_len(s)); }
4、参考答案: #include
a=k/1000; b=k/100; c=k/10; d=k; str[0]='0'+a; str[1]='0'+b; str[2]='0'+c; str[3]='0'+d; }
main() {int i,k;
char s[4]; do{
printf(\请输入一个4位整数:\
scanf(\ ex(k,s);
for(i=0;i<4;i++) printf(\ }
5、参考答案: #include
void zhuanzhi(int a[][3]) {int i,j,t;
for(i=0;i<3;i++) for(j=i+1;j<3;j++) {t=a[i][j];
a[i][j]=a[j][i]; a[j][i]=t; } }
main()
{int b[3][3],i,j; for(i=0;i<3;i++) for(j=0;j<3;j++)
scanf(\ zhuanzhi(b);
习题参考答案
315
习题参考答案
for(i=0;i<3;i++) {for(j=0;j<3;j++)
printf(\ printf(\ } }
6、参考答案:
#include
{if(a[i]>max) { max=a[i]; j=i; } if(a[i] if(j!=0) {temp=a[j]; a[j]=a[9]; a[9]=temp; } if(k!=9) {temp=a[0]; a[0]=a[k]; a[k]=temp; } } void input(int a[]) {int i; for(i=0;i<10;i++) scanf(\} void output(int a[]) {int i; printf(\ for(i=0;i<10;i++) printf(\} main() {int b[10]; input(b); duihuan(b); output(b); } 7、参考答案: #include for(i=1;i for(j=0; (j {t=s[j]; s[j]=s[j+1]; s[j+1]=t; } 316 习题参考答案 } main() {char str[80]; printf(\请输入一个字符串:\ gets(str); sort(str); printf(\排序后的字符串是: %s\ } 8、参考答案: #include int letter,digit,space,other; void func(char s[]) {int i; for(i=0;s[i]!='\\0';i++) {if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') letter++; else if(s[i]==' ') space++; else if(s[i]>='0'&&s[i]<='9') digit++; else other++; } } main() {char str[80]; printf(\ gets(str); letter=0; digit=0; space=0; other=0; func(str); printf(\,Space is %d,Digit is %d,Other is %d,\ } 9、参考答案: #include if((i=n/10)!=0) convert(i); putchar(n+'0'); } main() { int number; printf(\ scanf(\ printf(\ if(number<0) { putchar('-'); number=-number; 317 习题参考答案 } convert(number); } 习 题 9 一、选择题 1、D 2、C 3、A 4、B 二、阅读程序题 1、575 2、第一行是 1104 ,第二行是 3380 ,第三行是 0550 三、完善程序题 1、 typedef i pu[k].grade< pu[j].grade 2、 pk->next pj->d pn!=head return k 四、改错题 注:错误的地方加上了下划线,正确的作为注释写在同一行 1、 #include char name[20], num[20]; }; struct T stu[5]={”cai”,”2106”,”li”,”4512”,”wang”,”6723”,”zhang”,”5129”}; int search(struct T items[], char name[], int n) { int low=0,high=n-1,mid; while(low if(items[mid].name=name) /* strcmp(items[mid].name,name)= =0 */ return mid; else if(items[mid].name low=mid+1; else high=mid-1; } return -1; } int main(void) { char name[30];int i; 318 习题参考答案 printf(“input the name:”);scanf(“%s”,name); i=search(stu[],name,4); /* stu */ if(i!=-1) printf(“name:%s num:%s\\n”,sut[i].name,stu[i].num); else printf(“\\nNot found! \\n”); } 2、 #include struct T{ char name[20], num[20]; struct T * next; }; struct T stu[5]={”cang”,”6723”,NULL,”cai”,”2106”,NULL, ”zhang”,”5129”,NULL,”zhang”,”4512”,NULL,”an”,”6868”,NULL}; void MakeChain(struct T items[], int n) { int k; for(k=0;k items[k]->next=&items[k+1]; /* items[k].next */ } stuct T *Search(struct T items[], char who[20]) { struct T *temp=items[0]; /* items */ while(temp) if(strcmp(temp->name, who)==0) break; else temp=temp->next; return items; /* temp */ } void main(void) { char name[20]; struct T *loc; scanf(“%s”, name); MakeChain(stu,5); loc=Search(name,stu); /* Search(stu,name) */ if(loc) printf(“name:%s num:%s\\n”, loc->name, loc->num); else printf(“Not found! \\n”); } 五、编程题 1、 struct {int num; float emid; 319