1、有若干的人员的数据,其中有学生和教师。
学生的数据中包括:姓名、号码、性别、职业、班级。
教师的数据包括:姓名、号码、性别、职业、职务。要求用同一个表格来处理
#include<stdio.h>
struct{ //声明无名结构体类型
int num; //成员num(编号)
char name[10];
char sex;
char job;
union{
int class;
char position[10];
}category; //成员category是共用体变量
}person[2]; //定义结构体数组person,有两个元素
int main(){
int i;
for(i=0;i<2;i++){
printf("输入结构体的数据")
scanf("%d,%s,%c,%c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
if(person[i].job=='s')
scanf("%d",&person[i].category.class);//如是学生,输入班级
else if(person[i].job=='t')
scanf("%d",&person[i].category.position);
else
printf("Input error!");
}
printf("\n");
for(i=0;i<2;i++)
{
if(person[i].job=='s')
printf("%-6d%-10s%-4c%-10s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.class);
else
printf("%-6d%-10s%-4c%-10s\n",person[i].num,person[i].name,preson[i].sex,person[i].job,person[i].category.position);
}
return 0;
}
有n个结构体变量,内含学生学号、姓名和三门课程成绩。要求输出平均分最高的学生的信息(包含学号、姓名、3门成绩和平均分)
#include<stdio.h>
#define N 3//学生数为3
struct Student{
int num;
char name[20];
float score[3];
float aver;
};
int main(){
void input(struct Student stu[]);
struct Student max(struct Student stu[]);
void print(struct Student stu);
struct Student stu[N],*p=stu;
input(p);
print(max(p));
return 0;
}
void input(struct Student stu[])
{ int i;
printf("请输入各个学生的信息:学号、姓名、3门课成绩\n");
for(i=0;i<N;i++)
{scanf("%d %s %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[0],
&stu[i].score[1],&stu[i].score[2]);
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
}
}
struct Student max(struct Student stu[])
{ int i,m=0;
for(i=0;i<N;i++)
if(stu[i].aver>stu[m].aver)m=i;
return stu[m];
}
void print(struct Student stud){
printf("\n成绩最高的学生是:\n");
printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f\n平均成绩:%6.2f\n",
stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver);
}
2、素数的判断
#include<stdio.h>
#include<math.h>
int main(){
int n,i;
print("输入数");
scanf("%d",&n);
k=sqrt(n)
for(i=2;i<k;i++){
if(n%i==0)break;
if(i<k)print("%d不是素数\n",n);
else printf("%d是素数\n",n);
return 0;
}
}
3、鸡兔同笼,a只头,b只脚,问鸡兔各几只。
#include<stdio.h>
int main() {
int a, b;
printf("请输入总头");
scanf_s("%d", &a);
printf("请输入总脚");
scanf_s("%d", &b);
for (int i = 0; i <= a; i++) {//i代表鸡头
int j = a - i; //j代表兔头
if (2 * i + 4 * j == b) { printf("鸡:%d;兔:%d", i, j); }
}
return 0;
}
4、输出所有水仙花数。所谓“水仙花数”是指一个3位数,其各位数字立方和等于数本身。
例如,153是一水仙花数,因为153=+
+
#include<stdio.h>
int main() {
int a,b,c,n;
for (n = 100; n < 1000; n++) {
a = n / 100;
b = n / 10 % 10;
c = n % 10;
if (a * a * a + b * b * b + c * c * c == n) {
printf("%d", n);
}
}
}
5、输入一行字符,分别统计出英文字母、空格、数字和其他字符的个数
#include<stdio.h>
int main(){
char c;
int zhimu=0,kongge=0,shuzi=0,other=0;
printf("快快快输入字符:\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
zhimu++;
else if(c=' ');
kongge++;
else if(c>='0'&&c<='9')
shuzi++;
else:
other++;
}
printf("字母数:%d\n空格数:%d\n其他字符数:%d\n",zhimu,kongge,shuzi,other);
return 0;
}
6、输入两个正整数m和n,求其最大的公约数和最大公倍数。
1.选择两个整数a和b,其中a >= b。
2.用a除以b,得到余数r。
3.将b的值赋给a,将r的值赋给b。
4.重复步骤2和3,直到r等于0。此时,b即为最大公约数。
5.最小公倍数=两数的乘积/最大公约(因)数
#include<stdio.h>
int main(){
int s,r,n,m,t;
printf("输入两个整数n,m:");
scanf("%d",%d",&n,&m);
if(n<m){
t=n;
n=m;
m=t;
}
s=n*m;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("他最大公约数为:%d\n",n);
printf("他最小公倍数是:%d\n",s/n);
return 0;
}
7、口袋中有红、黄、蓝、白、黑5种颜色的球若干。若每次从口袋中先后取出3个球,问得到的三种颜色的可能取法,输出每次排列的情况。
#include<stdio.h>
int main(){
enum Color{red,yellow,blue,white,black};
enum Color i,j,k,pri;
int n,loop;
n=0;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(i!=j)
{
for(k=red,k<=black;k++)
if((k!=i)&&(k!=j))
{n=n+1;
printf("%-4d",n);
for(loop=1;loop<=3;loop++)
{switch(loop)
{
case 1:pri=i;break;
case 2:pri=j;break;
case 3:pri=k;break;
default:break;
}
switch(pri)
{
case red:printf("%-10s","red");break;
case yellow:printf("%-10s","yellow");break;
case blue:printf("%-10s","blue");break;
case white:printf("%-10s","white");break;
case black:printf("%-10s","black");break;
default:break;}
}
printf("\n");
}
}
printf("\ntotal:%5d\n",n);
return 0;
}
}
8、建立动态链表
#include<stio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student
{
long num;
float score;
struct Stuent * next;
};
int n;
struct Student*creat(void)
{
struct Student*head;
struct Stuent *p1,*p2;
n=0;
p1=p2=(struct Student*)malloc(LEN);
scanf("%d,%f",&p1->num,&p1->score);
head=NULL;
while(p1->num!=0){
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Student*)malloc(LEN);
scanf("%ld,%f",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}
int main(){
struct Student * pt;
pt=creat();
printf("\nnum:%d\nscore:%5.1f\n",pt->num,pt->score);
return 0;
};