/*编写函数,判断某一个四位数是不是玫瑰花数,
*所谓玫瑰花数即该四位数各位数字的四次方1+69+9和恰好等于该数本身。
*如:1634=14+64+34+44。在主函数中从键盘任意输入一个四位数,调用
*该函数判断该数是否为玫瑰花数,若是则输出" yes ",否则输出" no "。
*/#include<stdio.h>voidrose();intmain(){int num;printf("请输入一个四位数判断是否为玫瑰花数:\n");scanf("%d",&num);rose(num);return0;}voidrose(int num){int ge = num%10;int shi = num%100/10;int bai = num%1000/100;int qian = num/1000;if(ge*ge*ge*ge+shi*shi*shi*shi+bai*bai*bai*bai+qian*qian*qian*qian==num){printf("yes");}else{printf("no");}}
demo02_30
/*
请编写一个函数 void fun(int tt[m][n],int pp[n]),
tt 指向一个 m 行 n 列的二维函数组,求出二维函数组每列中最小元素,
并依次放入 pp 所指定一维数组中。二维数组中的数已在主函数中赋予。
*/#include<stdio.h>#defineM3#defineN4voidshow_column_min(int tt[M][N],int pp[N]);intmain(){int tt[M][N]={{55,2,41,4},{5,55,55,8},{9,10,65,12}};int pp[N];show_column_min(tt, pp);for(int i =0; i < N; i++){printf("%-4d", pp[i]);}return0;}voidshow_column_min(int tt[M][N],int pp[N]){int min;for(int j =0; j < N; j++){
min = tt[0][j];for(int i =0; i < M; i++){if(tt[i][j]< min){
min = tt[i][j];}}
pp[j]= min;}}
demo02_31
/*有10个学生结构体已定义,每个学生的数据包括
学号(stu _ num ,6个字符,如s0001)、姓名( name ,8个字符)、
三门课的成绩( score [3],实型)及其平均分( avr ,实型,初始时不赋值)。
首先输入这10个学生数据,然后再计算每个学生3门课程的平均分,
存回 avr 中,并输出第6个学生的所有信息。
*/#include<stdio.h>#defineNUM3#defineN1structstudent{char stu_num[6];char stu_name[8];float score[3];float avr;};intmain(){structstudent stu[NUM];float sum=0.0;for(int i =0;i<NUM;i++){printf("name:");scanf("%s",stu[i].stu_name);printf("id:");scanf("%s",stu[i].stu_num);printf("三科成绩:\n");for(int j =0;j<3;j++){scanf("%f",&stu[i].score[j]);
sum+=stu[i].score[j];}
stu[i].avr = sum/3;
sum =0.0;if(i==N){printf("第%d个学生:name=%s,id=%s,avr=%.2f\n",i+1,stu[N].stu_name,stu[N].stu_num,stu[N].avr);printf("各科成绩:\n");for(int i =0;i<3;i++){printf("%d=%.2f\n",i+1,stu[N].score[i]);}}}return0;}
demo03_29
/*定义一个含有30个元素的数组 s ,函数 favl 的功能是按顺序分别赋给
各元素从2开始的偶数,函数fav2则按顺序每5个元素求一个平均值,
并将该值存放在w数组中。*/#include<stdio.h>fav1(float a[]){int num =2;for(int i =0;i<30;i++){
a[i]=num;
num+=2;}}fav2(float s[],float w[]){float sum =0.0;int k =0;int j =0;for(int i =0;i<30;i++){
sum+=s[i];
k+=1;if(k%5==0){
w[j]=sum/5;
sum =0.0;
j++;}}}intmain(){float s[30];float w[30/5];fav1(s);fav2(s,w);for(int i =0;i<30;i++){printf("%.f, ",s[i]);}printf("\n");for(int i =0;i<6;i++){printf("%.f, ",w[i]);}return0;}
demo03_30
/*
*对数组a进行降序排序使用选择排序
*int[a]={4,2,3,5,1,45,11,9,0,12}
*
*/#include<stdio.h>voidselect_sort_up(int a[],int n);//声明函数voidselect_sort_down(int a[],int n);intmain(){int a[10]={4,2,3,5,1,45,11,9,0,12};select_sort_up(a,10);for(int i =0;i<10;i++){printf("%d,",a[i]);}printf("\n");select_sort_down(a,10);for(int i =0;i<10;i++){printf("%d,",a[i]);}return0;}//选择排序降序voidselect_sort_up(int a[],int n){int max,temp;for(int i =0;i<n-1;i++){
max = i;//假设第一个为最大值,将下标赋值给max;for(int j = i+1;j<n;j++)//比较第一个数后面的数{if(a[j]>a[max]){
max = j;//如果后一个数大于前面,将较大值下标赋值给max;}//将较大值移到前边
temp = a[i];
a[i]=a[max];
a[max]=temp;}}}//选择排序升序voidselect_sort_down(int a[],int n){int min,temp;for(int i =0;i<n-1;i++){
min = i;for(int j=i+1;j<n;j++){if(a[j]<a[min]){
min = j;}
temp = a[i];
a[i]= a[min];
a[min]= temp;}}}
demo03_31
/*编写函数,实现矩阵(3行3列)的转置(即行列转换);
*/
#include <stdio.h>
#define N 3
void matrix_transpose(int a[N][N]);
int main()
{
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
matrix_transpose(a);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
printf("%-4d", a[i][j]);
}
printf("\n");
}
return 0;
}
void matrix_transpose(int a[N][N])
{
int temp;
for (int i = 0; i < N; i++) {
for (int j = 0; j < i; j++) {
temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
}
}