❶ 求大神解答c语言编程
#include <stdio.h>
#include <stdlib.h>
//定义一个结构体保存裁判id和分数
typedef struct{
unsigned char judegId;//裁判ID
unsigned char judegScore;//裁判给的分数
}judge;
int main()
{
judge jg[10];
int i;
int score;
for(i = 0;i < 10;i++)
{
printf("请输入裁判%d打的分数\n",i+1);
scanf("%d",&score);
getchar();
if(score <= 0 || score > 100)
{
printf("输入分数无效,重新输入,分数要求1-100!\n");
printf("请输入裁判%d打的分数\n",i+1);
scanf("%d",&score);
getchar();
if(score <= 0 || score > 100)
{
printf("无效输入,程序退出!\n");
return -1;
}
}
jg[i].judegId = i;
jg[i].judegScore = score;
}
//对数组从分数低到分数高排序
for(i = 0;i < 9;i++)
{
if(jg[i].judegScore > jg[i+1].judegScore)
{
unsigned char tmpId = jg[i].judegId;
unsigned char tmpScore = jg[i].judegScore;
jg[i].judegId = jg[i+1].judegId;
jg[i].judegScore = jg[i+1].judegScore;
jg[i+1].judegScore = tmpScore;
jg[i+1].judegId = tmpId;
}
}
//打印所有得分
printf("选手得分为:\n");
for(i = 0;i < 10;i++)
{
printf("%d ",jg[i].judegScore);
}
printf("\n");
//计算评价得分
unsigned short sum = 0;
for(i = 1;i < 9;i++)
{
sum+=jg[i].judegScore;
}
unsigned char average = sum/8;
printf("去掉最高分%d,最低分%d,评价得分为%d分\n",jg[9].judegScore,jg[0].judegScore,average);
unsigned char fairIndex0 = 0;
unsigned char unfairIndex = 0;
//查找与平均值差距最小的
for(i = 1;i < 10;i++)
{
//abs为求绝对值函数
if(abs(jg[i].judegScore-average) < abs(jg[fairIndex].judegScore-average))
{
fairIndex = i;
}
}
printf("最公平的教练是%d,打分为%d\n",jg[fairIndex].judegId,jg[fairIndex].judegScore);
//查找与平均分差距最大的
for(i = 1;i < 10;i++)
{
if(abs(jg[i].judegScore-average) > abs(jg[unfairIndex].judegScore-average))
{
unfairIndex = i;
}
}
printf("最不公平的教练是%d,打分为%d\n",jg[unfairIndex].judegId,jg[unfairIndex].judegScore);
return 0;
}
//留一个问题给你,可能有两个裁判是最公平或者最不公平的,这个自己想想怎么做
❷ 求这几题C语言程序设计题目的解析
14 while循环没有加{ },所以只控制printf一条打印语句
第一次 :n-- 为6 n使用时是5 --n为4;
第二次 :n-- 为4 n使用时是3 --n为2;
第三次 :n-- 为2 n使用时是1 --n为0;
从第一次循环中我们得到打印的结果每次-2,循环三次,所以结果为420
15 b==c中的==为判断符号,其结果只有两种0或1,条件成立返回1,不成则立返回0
16 x为二维数组
| 0 1 2 |
| 3 4 5 |
| 6 7 8 |
其for 循环的结果为0,1,2所以其取值为x[0][2],x[1][1],x[2][0],结果就是246
❸ c语言程序设计求详解
1、先看s型变量,它是由两个int型变量x和y组成的一个结构体变量类型;
2、再看a变量,它是由4个s型变量组成的一个数组;
3、关于s型结构体变量数组a,它由4个元素组成(每个元素是一个结构体变量),分别是:
a[0]={x=1,y=10}
a[1]={x=2,y=20}
a[2]={x=3,y=30}
a[3]={x=4,y=40}
4、接着看main函数的执行:
第一句:struct s *p=a+1;
这一句定义了一个s型指针,并且让p指向a+1,即指向a[1]。注意a[1]的x=2,y=20。
5、最后一句打印,打印的内容是++(p->x),p->x含义是p指针指向的s型变量中x的值,再自增1。由于p指向的是a[1],a[1]中的x=2,2自增1后是3,所以,输出的是3。
6、选项C是正确的。
❹ C语言编程题目,求大神解析!
没增加
p++相当于一个普通变量++运算,只不过具体加的数是指定数据类型的宽度,即sizeof(teacher).只是递增了一块地址,
只有new一个teacher时才会是实实在在增加一块内存占用.
你在快递盒上原先的XXX路10号+1,不会实实在在创建一幢房子,是吧?,只有在隔壁造一幢新房子,然后申请编号,这个XXX路11号才有意义.new就是向政府申请造新房子并编号.这个政府就是系统.
❺ 关于一题C语言的程序设计求大神详解。
struct stud
{ char name[20]; //前五个都是信息
long num;
int age;
char sex;
float score;
struct stud *next; //这是指针,指向下一个结点。
};
void new_record()
{ char numstr[20];
new1=(struct stud *)malloc(sizeof(struct stud)); //分配一个结点
if(head==NULL) //如果没有结点,新建一个
head=new1;
else //否则往后寻找插入的地方
{ this1=head;
while(this1->next!=NULL)
this1=this1->next;
this1->next=new1;
}
this1=new1; //找到插入的位置了,开始插入信息
printf("please enter name:");
gets(thi
……
其他的自己琢磨吧,这是学习的过程,实在不会的话,看看数据结构的链表部分。
❻ c语言程序设计题 跪求大神解答 答得好继续追加财富值
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structstudent{
intnumber;
char*name;
int*score;
intnum_scores;
intavarage;
};
structstudent_data{
structstudent**arr;
intarr_num;
intarr_size;
intnum_scores;
};
structstudent*student_new(intnum_scores){
structstudent*stu=(structstudent*)malloc(sizeof(structstudent));
if(stu==NULL)
returnNULL;
memset(stu,0,sizeof(structstudent));
stu->score=(int*)malloc(sizeof(int)*num_scores);
if(stu->score==NULL){
free(stu);
returnNULL;
}
stu->num_scores=num_scores;
returnstu;
}
voidstudent_free(structstudent*stu){
free(stu->name);
free(stu->score);
free(stu);
}
structstudent_data*student_data_new(intnum_scores){
structstudent_data*data=(structstudent_data*)malloc(sizeof(structstudent_data));
inti;
if(data==NULL)
returnNULL;
data->arr_num=0;
data->arr_size=1024;
data->arr=(structstudent**)malloc(sizeof(void*)*data->arr_size);
if(data->arr==NULL){
free(data);
returnNULL;
}
for(i=0;i<data->arr_size;i++)
data->arr[i]=NULL;
data->num_scores=num_scores;
returndata;
}
voidstudent_data_free(structstudent_data*data){
inti;
for(i=0;i<data->arr_num;i++){
student_free(data->arr[i]);
}
free(data->arr);
free(data);
}
#defineBUF_PIECE_SIZE256
structstudent*student_parse(intnum_scores,charpiece[][BUF_PIECE_SIZE],intn){
structstudent*stu=NULL;
inti,total=0;
if(n!=num_scores+2)//number,name,score0,score1,...scoren
returnNULL;
stu=student_new(num_scores);
if(stu==NULL)
returnNULL;
stu->number=atoi(piece[0]);
stu->name=strp(piece[1]);
for(i=0;i<num_scores;i++){
stu->score[i]=atoi(piece[i+2]);
total+=stu->score[i];
}
stu->avarage=total/stu->num_scores;
returnstu;
}
voidstudent_mp(structstudent*stu){
inti;
printf("number=%-5dname=%-8savarage=%-3dscores=[",stu->number,stu->name,stu->avarage);
for(i=0;i<stu->num_scores;i++)
printf("%-3d",stu->score[i]);
printf("] ");
}
voidstudent_data_mp(structstudent_data*data){
inti;
for(i=0;i<data->arr_num;i++)
student_mp(data->arr[i]);
}
structstudent*student_data_search(structstudent_data*data,intnumber){
inti;
for(i=0;i<data->arr_num;i++){
if(data->arr[i]->number==number)
returndata->arr[i];
}
returnNULL;
}
voidstudent_data_insert(structstudent_data*data,structstudent*stu){
inti,j;
if(data->arr_num==data->arr_size){
i=data->arr_size;
data->arr_size+=1024;
data->arr=(structstudent**)realloc(data->arr,sizeof(void*)*data->arr_size);
for(;i<data->arr_size;i++)
data->arr[i]=NULL;
}
for(i=0;i<data->arr_num;i++){
if(data->arr[i]->number==stu->number){
student_free(data->arr[i]);
data->arr[i]=stu;
return;
}
if(data->arr[i]->avarage<stu->avarage){
break;
}
}
j=data->arr_num;
data->arr_num++;
for(;j>i;j--){
data->arr[j]=data->arr[j-1];
}
data->arr[j]=stu;
}
#defineM5
intmain(intargc,char**argv){
charbuf[1024];
structstudent_data*data;
structstudent*stu,*s;
char*p;
charpiece[M+2][BUF_PIECE_SIZE];
intn;
data=student_data_new(M);
if(data==NULL)
return-1;
while(1){
memset(buf,0,sizeof(buf));
memset(piece,0,sizeof(piece));
fgets(buf,sizeof(buf),stdin);
p=strtok(buf,"");
n=0;
while(p&&n<M+2){
strncpy(piece[n++],p,BUF_PIECE_SIZE);
p=strtok(NULL,"");
}
if(n>1){
if((stu=student_parse(data->num_scores,piece,n))!=NULL){
s=student_data_search(data,stu->number);
if(s!=NULL){
printf("WARNING:overwritedata ");
}
student_data_insert(data,stu);
student_data_mp(data);
}
else
printf("invaliddata ");
}
else{
stu=student_data_search(data,atoi(piece[0]));
if(stu==NULL){
printf("studentnotfound ");
}
else
student_mp(stu);
}
}
student_data_free(data);
return0;
}