#include〃stdio.h〃
intmain()
{intn;
char*sttl,*str2;
printf(〃inputstringl:
\n〃);
gets(strl);
printf(〃inputstring2:
\n〃);
gets(str2);
n二mysttcnip(stri,str2);
printf(〃thetwostringis%d:
\n〃,n);}
intmysti'cnip(char*s,char*t)
{wh订e(*s&&*t&&*s二二*t){s++;t++;}
retum*s—*t;
}
第十二章作业P2131
1编写函数rotate(inta[4][4],intb[4][4]),将数组a中的元素逆时针旋转90o后的元素保存在数组b中。
计算数组b主对角线上全部元素之和作为函数的返回值。
编写主函数main(),从键盘输入16个数据放入一个二维数组中,调用rotate函数,将旋转后的二维数组全部元素及旋转后数组中主对角线上的全部元素之和输出到显示器。
introtate(inta[4][4],intb[4][4])
{inti,j,t=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[3-j][i]=a[i][j];
for(i=0;i<4;i++)
t=t+b[i][i];
tetumG);
}
main()
{inti,j,sum;
intaa[4][4],bb[4][4];
printf(〃inputaa[4][4]〃);
for(i=0;i<4;i++)
for(j=0;j〈4;j++)
scanf(〃%d〃,&aa[i][j]);sum=rotate(aa,bb);
for(i-0;i<4;i++)
{for(j=0;j<4;j++)printf(zz%d",bb[i][j]);printf(〃\n〃);
}
printf(〃sum=%d〃,sum);
}
第^一章作业
P196三.2.3
2定义一个宏,用于求两个参数的余数。
#defineyu(a,b)a%b
voidmain()
{inta,b;
printf(〃enterfirstnumber:
\n〃);scanf(〃%d〃,&a);
printf(〃entersecondnumber:
\n〃);
scanf(〃%d〃,&b);
printf(〃theresuItis:
%d/z,yu(a,b));
3、设计一个程序,交换两个整数的值,用带参数的宏定义实现
#include〃stdio.h〃
#defineswap(a,b)t=a;a=b;b=t;
main()
{
inta二3,b二5;
swap(a,b);
printf(〃&=%d,b二%d\n〃,a,b);
}
第十三章作业
P250三.1.2
1、用结构体数组建立5个人的通讯录,包括姓名、地址和电话号码。
编写一个函数input,用来输入5个人的记录,编写一个函数print(),用来输出5个人的记录。
比那些main()函数,其中调用input(),print实现记录的输入、输出。
#include〈stdlib.h>
#defineSTUDENTstructstudent
STUDENT
{charname[20];
charaddr[20];
charnum[10];
};
main()
{voidinput(STUDENT*,int);/*函数声明*/
voidprint(STUDENT*,int);
STUDENTstud[5];/*定义结构体数组*/
input(stud,5);/*依次调用自定义函数*/
print(stud,5);
getchO;}
voidinput(STUDENTarr[],intn)
/*输入n名联系人的信息*/
{inti,j;
printf(〃\nInputName,address,telephone:
\n〃);for(i=0;i{
scanf(〃%s〃,arr[i].name);scanf(〃%s〃,arr[i].addr);scanf(〃%s〃,arr[i].num);
}
}
voidprint(STUDENTarr[],intn)
/*输出联系人信息*/
{inti,j;
printf(〃NameAddressTelephone\n〃);
for(i-0;iprintf(〃%8s%8s%8s\rT,arr[i].name,arr[i].addr,arr[i].num);
2定义一个结构体数组,描述10个学生的学号(intnum),姓名(char
name[10])>三门课的成绩及总成绩(floatscore[4],要求从键盘输入学生的前5项数据,计算每个学生的总成绩,输出最高分的学生的数据(包括学号、姓名、3门课成绩及总成绩)。
#include〃stdio.h〃
#defineN5
struetstudent
{
intnum;
charname[10];
intscore[3];
}stu[N];
voidmain()
{inti,j,count二0;
floatave,sum二0;
intmax=0,k=0;
for(i=0;i{printf(〃inputno.%d\n〃,i+1);scanf(〃%d〃,&stu[i]・num);fflush(stdin);
printf(〃inputname%d\n〃,i+1);gets(stu[i].name);fflush(stdin);
printf(〃input3scoresof%d:
\n〃,i+1);
stu[i].score[3]=0;
for(j二0;j<3;j++){scanf(〃%d〃,&stu[i].score[j]);
stu[i].score[3]+=stu[i].score[j];}if(stu[i].score[3]>max)k二i;
fflush(stdin);
printf(〃themaxis\nno.namescorelscore2score3all\n〃);
printf(〃%-5d〃,stu[k].num);
printf(〃%10s〃,stu[k].name);
for(j二0;j<3;j++)printf(〃%5d〃,stu[k].score[j]);
printf(〃%5d〃,stu[k].score[3]);}
第十四章作业
P269三.1.2
1从键盘输入一个字符串,将该字符串中的小写字母转换成大写字母,输出到文件test,txt中,然后从该文件读出字符串并显示出来。
#include〈stdio.h>
main()
{charstr[100];
inti二0;
FILE*fp;
if((fp=fopen("test,txt",〃w〃))二二NULL)
{printf("Can'topenthefile.\nzz);
exit(0);
}
printf(〃Inputastring:
\n〃);
gets(str);
while(str[i])
{if(str[i]〉二'a'&&str[i]〈二'z')
fputc(str[i],fp);
i++;
}
fclose(fp);
fp二fopen("test,txt",〃r〃);
fgets(str,strlen(str)+l,fp);
printf(〃%s\n〃,str);
fclose(fp);
getch();
}
2函数ReadDat()实现从文件in.dat中读取10个整数存放到数组a中。
请编制函数sortO,函数的功能是:
对10个整型数按从小到大排序,排序后的结果仍存入数组a中,最后调用函数WriteDat()把结果a输出到文件out.dat中。
#include〃stdio.h〃
inta[10];
voidsort()
{inti,j,t;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+l])
{t二a[j];a[j]二a[j+l];a[j+l]二t;}
}
voidmain()
{readDat();
sort();
writeDat();getch();
}
readDat()
{
FILE*in;
inti;
in=iopenvin.dat,r丿;
for(i-0;i<10;i++)fscanf(in,〃%d〃,&a[i]);fclose(in);
}
writeDat()
{
FILE*out;
inti;
clrscr();
out=fopen(〃out.dat〃,〃w〃);
for(i=0;i<10;i++){printf(,za[%d]=%d\n/z,i,a[i]);fprintf(out,zz%d\n/z,a[i]);
fclose(out);}