46----50

46.
#include <stdio.h>
#include <math.h>
#include <string.h>

int main( )
{
  void hexadecimal_to_decimalism(char hexadecimal[]); 
  char hexadecimal[100];
  printf("请输入一个十六进制数:");
  gets(hexadecimal); 
  hexadecimal_to_decimalism(hexadecimal);
  return 0;
}

void hexadecimal_to_decimalism(char hexadecimal[])
{
  int n,i,num=0;
  n=strlen(hexadecimal);
  for(i=n-1;i>=0;i--){
    if(hexadecimal[i]>='0' && hexadecimal[i]<='9'){
           num += (hexadecimal[i]-'0')*pow(16,n-1-i);
    }
    else if(hexadecimal[i]>='A' && hexadecimal[i]<='Z'){
        num += (10+(hexadecimal[i]-'A'))*pow(16,n-1-i);
    }
    else if(hexadecimal[i]>='a' && hexadecimal[i]<='z'){
        num += (10+(hexadecimal[i]-'a'))*pow(16,n-1-i);
    }
  }
  printf("十六进制转换十进制结果为:");
  printf("%d",num);
}

47.

#include<stdio.h>

int main()

    int a[16][16],i=0,j=0,k=0,p=0,n=0;
      p=1;
      while(p==1)
    {
        printf("请输入n(0<n<=15,n是奇数):\n");
         scanf("%d",&n);
         if ((n>=0) && (n<=15) && (n%2!=0))
               p=0;
    }
    printf("矩阵阶数是:%d\n",n);
      for(i=1;i<=n;i++)   //初始化操作 
      {
          for(j=1;j<=n;j++)
            a[i][j]=0;
    }
    j=n/2+1;
      a[1][j]=1;
      for(k=2;k<=n*n;k++)
    {
        i=i-1;
        j=j+1;
        if((i<1)&&(j>n))
        {
            i=i+2;
            j=j-1;
        }
         else
           {
            if(i<1)
                i=n;
             if(j>n)
                j=1;
           }
         if(a[i][j]==0)
         {
             a[i][j]=k;
        }    
         else
           {
            i=i+2;
             j=j-1;
             a[i][j]=k;
       }
    }
      for (i=1;i<=n;i++)
      {    
          int sum=0;
        for (j=1;j<=n;j++)
        {
            printf("%3d",a[i][j]);
            sum+=a[i][j];
        }    
        printf("\n");
    }
    printf("\n\n");
  return 0;
}
48.

#include<stdio.h>
#include<string.h>
#define WAIT 5      //候选人人数
#define CHOOSE 10   //投票人投票姓名

struct wait     //定义结构体
{
    char name[20];
    int count;
};
void wait_input(struct wait *p);   //函数声明,指向waits结构体数组的指针
int main()
{

    struct wait waits[WAIT];    //定义结构体数组
    int i;
    for(i=0;i<WAIT;i++)
    {
        waits[i].count=0;   //投票数初始化
    }

    printf("投票数初始化验证\n");
    for(i=0;i<WAIT;i++)
    {
       printf("---\t%d",waits[i].count);
       printf("\n");
    }

    wait_input(waits);  //waits结构体数组名 传递给 结构体指针*p

    printf("投票验证\n");
    for(i=0;i<WAIT;i++)
    {
       printf("%s\t%d\n",waits[i].name,waits[i].count);
    }
}
void wait_input(struct wait *p)
{
    int i,j;
    struct wait *c;
    c=p;
    printf("输入%d位候选人的姓名:\n",WAIT);
    for(i=0;i<WAIT;i++)
    {
        scanf("%s",p->name);
        p++;
    }
    
    char choose[CHOOSE][20];    //定义字符数组,存放投票姓名
    printf("输入要投票的%d个人的投票姓名:\n",CHOOSE);
    for(i=0;i<CHOOSE;i++)
    {
        scanf("%s",choose[i]);
    }

    for(i=0;i<WAIT;i++)
    {
        for(j=0;j<CHOOSE;j++)
        {
            if(strcmp(c[i].name,choose[j])==0)  //遍历匹配
            {
                c[i].count++;   //相等,则count+1
            }
        }
    }
}
49.

/* Note:Your choice is C IDE */
#include "stdio.h"
void average(struct Student *p,int n);
void max(struct Student *p,int n);
void pus(struct Student *p);
struct Student{
 long int num;
 char name[15];
 float score[3];//存放三门课程的成绩
 float aver;//三门课程的平均成绩
 };
int main()
{
    int n=3;
    struct Student stu[]={
     //平均成绩先设为0,最后在赋值求值
     {2019022,"Lucy",{79.5,81.5,69},0},
     {2019011,"Killy",{86.5,93.5,96},0},
     {2019088,"Noddy",{94.5,96.5,70.3},0}
    };
    struct Student *p=stu;
    average(p,n);
    max(p,n);
    pus(p);
    return 0;
}
void average(struct Student *p,int n)//定义一个求平均值的函数
{
 int i,j;
 for(i=0;i<n;i++){
  float sum=0;
  for(j=0;j<3;j++){
   sum+=(*(p+i)).score[j];//求出三门成绩的总和
   //sum+=p[i].score[j];
   //sum+=(p+i)->score[j];
  }
  (*(p+i)).aver=sum/3;
  //p[i].aver=sum/3;
  //(p+i)->aver=sum/3;
  }
}
void max(struct Student *p,int n)//定义一个求最大值的函数
{
 int i;
 for(i=1;i<n;i++)
 if(p[i].aver>p[0].aver)
  p[0]=p[i];//此时p【0】的地址就会缺失,所以不妥
}
void pus(struct Student *p)//定义一个输出的函数
{
 printf("学号:%6ld\n姓名: %8s\n",p[0].num,p[0].name);
 printf("三门课的成绩:%6.1f %6.1f %6.1f\n",p[0].score[0],p[0].score[1],p[0].score[2]);
 printf("平均成绩:%6.2f\n",p[0].aver);
}

50.

#include<stdio.h>
#include<math.h>
#include<string.h>
struct Student
    {
        long  num;
        float score;
        struct Student *next;
};
int main() {
    struct Student a, b, c, *head, *p;
    a.num = 10101; a.score = 89.5;
    b.num = 10103; b.score = 90;
    c.num = 10107; c.score = 85;
    head = &a;
    a.next = &b;
    b.next = &c;
    c.next = NULL;
    p = head;
    do {
        printf("%-10d%5.1f\n", p->num, p->score);
        p = p->next;
    } while (p != NULL);
    return 0;

}

 
 
 
 
 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值