scanf("%d",p);
12、输入两个学生学号、姓名和成绩,输出成绩较高的学生的学号、姓名和成绩。
#include
voidmain()
{structstudent
{intnum;
charname[20];
intscore;
}s1,s2;
scanf("%d%s%d",&s1.num,s1.name,&s1.score);
scanf("%d%s%d",&s2.num,s2.name,&s2.score);
printf("numnamescore\n");
if(s1.score>=s2.score)
printf("%d%s%d\n",s1.num,s1.name,s1.score);
else
printf("%d%s%d",s2.num,s2.name,s2.score);
}
13、有N个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序存储并输出各学生的信息。
#include
#include
voidmain()
{structstudent
{intnum;
charname[20];
intscore;
}s[6]={{1,"aaa",59},{2,"bbb",78},{3,"ccc",85},{4,"ddd",64},{5,"eee",98},{6,"fff",83}};
inti,j,max,temp;
chartemp_name[20];
for(i=0;i<6;i++)
{max=i;
for(j=i+1;j<=5;j++)
{if(s[max].score
max=j;
}
/*temp_stu=s[i];
s[i]=s[max];
s[max]=temp_stu;*/
temp=s[i].num;
s[i].num=s[max].num;
s[max].num=temp;
strcpy(temp_name,s[i].name);
strcpy(s[i].name,s[max].name);
strcpy(s[max].name,temp_name);
temp=s[i].score;
s[i].score=s[max].score;
s[max].score=temp;
}
printf("numnamescore\n");
for(i=0;i<6;i++)
printf("%d%s%d\n",s[i].num,s[i].name,s[i].score);
}
14、从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去。
#include
#defineSIZE4
structstudent_type
{charname[10];
intnum;
intage;
charaddr[15];
}stud[SIZE];
voidmain()
{voidsave();
inti;
for(i=0;iscanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
save();
}
voidsave()
{FILE*fp;
inti;
if((fp=fopen("stu-list","wb"))==NULL)
{printf("cannotopenfile\n");
return;}
for(i=0;iif(fwrite(&stud[i],sizeof(structstudent_type),1,fp)!
=1)
printf(“filewriteerror\n”);/*出错*/
fclose(fp);/*关闭文件*/
}
15、将以上数据读出并显示
#include
#defineSIZE4
structstudent_type
{charname[10];
intnum;
intage;
charaddr[15];
}stud[SIZE];
voidmain()
{inti;
FILE*fp;
if((fp=fopen("stu_list","rb"))==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;i{fread(&stud[i],sizeof(structstudent_type),1,fp);
printf("%-10s%4d%4d%-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
}
fclose(fp);
}
16、//有15个数按照从小到大的顺序存放在一个数组中。
输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
如果该数不在数组中,输出“不在表中”
#include"stdio.h"
#defineN15
voidmain()
{inti,number,top,bott,mid,loca,flag=1,sign;
inta[N]={1,3,4,5,6,8,12,23,34,44,45,56,57,58,68};
charc;
for(i=0;iprintf("%d",a[i]);
printf("\n");
while(flag)
{printf("inputnumbertolookfor:
");
scanf("%d",&number);
getchar();
sign=0;
top=0;
bott=N-1;
if((numbera[N-1]))
loca=-1;
while((!
sign)&&(top<=bott))
{mid=(bott+top)/2;
if(number==a[mid])
{loca=mid;
printf("Hasfound%d,itspositionis%d\n",number,loca+1);
sign=1;
}
elseif(numberbott=mid-1;
else
top=mid+1;
}
if(!
sign||loca==-1)
printf("cannotfind%d.\n",number);
printf("continueornot(Y/N)?
");
scanf("%c",&c);
getchar();
if(c=='N'||c=='n')
flag=0;
}
}
6
01234567891011121314
134568122334444556575868
134568122334444556575868
134568122334444556575868
134568122334444556575868
7
01234567891011121314
134568122334444556575868
134568122334444556575868
134568122334444556575868
134568122334444556575868
134568122334444556575868
区分:
break语句跳出循环,用continue语句结束本次循环
(1)break:
判断整数m是否素数
#include
#include
voidmain()
{intm,i,k;
printf("输入一个整数:
");
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
printf("%d是一个素数。
\n",m);
else
printf("%d不是一个素数。
\n",m);
}
(2)写出以下程序运行结果
voidmain()
{
intj;
for(j=1;j<=5;j++)
{
if(j%2==1)
printf(“D”);
else
continue;
printf(“B”);
}
printf(“P\n”);
}
答案:
DBDBDBP