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;
}