经典的题目

1、有若干的人员的数据,其中有学生和教师 。
学生的数据中包括:姓名、号码、性别、职业、班级 。
教师的数据包括:姓名、号码、性别、职业、职务 。要求用同一个表格来处理
#includestruct{//声明无名结构体类型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);elseprintf("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);elseprintf("%-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#define N 3//学生数为3struct 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;istu[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#includeint main(){int n,i;print("输入数");scanf("%d",&n);k=sqrt(n)for(i=2;i
3、鸡兔同笼,a只头,b只脚,问鸡兔各几只 。

经典的题目

文章插图
#includeint 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=
#includeint 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、输入一行字符,分别统计出英文字母、空格、数字和其他字符的个数
#includeint 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.最小公倍数=两数的乘积/最大公约(因)数
#includeint main(){int s,r,n,m,t;printf("输入两个整数n,m:");scanf("%d",%d",&n,&m);if(n
7、口袋中有红、黄、蓝、白、黑5种颜色的球若干 。若每次从口袋中先后取出3个球,问得到的三种颜色的可能取法,输出每次排列的情况 。
#includeint 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#include#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;};