| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 443 人关注过本帖
标题:粗手,写的不好!
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:20 回复次数:3 
粗手,写的不好!
下面是我顺便练习的几个习题,感觉写的不好,希望高手指点一二!
2、编程实现:有二维数组a[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}},将数组a的每一行元素均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),按行输出新数组。(20分)
#include<conio.h>
#include<stdio.h>
#define LONG 3
void main()
{
double a[LONG][LONG]={{5.4,3.2.8},{6,4,3.3},{7,3,1.3}},(*p_a)[LONG];
int i,j;
p_a=a;
for(i=0;i<LONG;i++)
for(j=0;j<LONG;j++)
*((*p_a+i)+j)=*(*(p_a+i)+j)/((*(*(p+i)+i))*1.0);
for(i=0;i<LONG;i++)
for(j=0;j<LONG;j++)
printf(“%-4.lf”,a[i][j]);
getch();
}


4、编写函数fun,通过指针实现将一个字符串反向。要求主函数输入字符串,通过调用函数fun实现输入字符串反向。(20分
#define M 40
void fun(char *p_str);
#include<conio.h>
#include<string.h>
#include<stdio.h>
void main()
{
char str[M];
gets(str);
fun(str);
getch();
}
void fun(char *p_str)
{
int i;
char p[M];
for(i=0;i<strlen(p_str);i++)
*(p+i)=*(p_str+strlen(p_str)-i-1);
*(p+strlen(p_str))='\0';
puts(p);
}

5、已知学生三门课程基本信息如下。请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。(20分)

   姓名  数学 英语 计算机

   Mary   93    100   88

   Jone   82    90    90

   Peter  91    76    71

   Rose   100   80    92
#define M 10
#define N 12
#include<conio.h>
#include<stdio.h>
typedef struct node{
char str[N];
int math,english,computer;
double aver;
}DATA;
void main()
{
int i,j;
DATA _stutdent[M],date;
printf(“姓名   数学  英语  计算机”);
for(i=0;i<M;i++){
      gets(_stutdent[i].str);
      scanf("%d%d%d",&_stutdent[i].math,&_stutdent[i].english,&_stutdent[i].computer);
getchar();
     _stutdent[i].aver=(_stutdent[i].math+_stutdent[i].english+_stutdent[i].computer)*1.0/3;
}
   for(i=0;i<M;i++)
   for(j=i+1;j<M-1;j++){
        if(_stutdent[j].aver>_stutdent[j+1].aver){
            date=_stutdent[j];
        _stutdent[j]=_stutdent[j+1];
          _stutdent[j+1]=date;
}
   }
   for(i=0;i<M;i++){
  puts(_stutdent[i].str);
  printf("%-4d%-4d%-4d%-4.2lf\n", _stutdent[i].math,_stutdent[i].english,_stutdent[i].computer,_stutdent[i].aver);
   }
   getch();
}

搜索更多相关主题的帖子: double 20分 include 
2009-11-01 13:54
xuru1990
Rank: 2
等 级:论坛游民
帖 子:36
专家分:23
注 册:2009-10-28
收藏
得分:5 
void f(char *p)
{
int i;
for(i=0;i<strlen(p);i++)
putchar(*--(p+M));

}

2009-11-01 14:15
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:5 
刚看完第一题,发现有错误:
#include<conio.h>
#include<stdio.h>
#define LONG 3
void main()
{
double a[LONG][LONG]={{5.4,3,2.8},{6,4,3.3},{7,3,1.3}},(*p_a)[LONG],t;
int i,j;
p_a=a;
for(i=0;i<LONG;i++)
{
t=a[i][i];
for(j=0;j<LONG;j++)
*(*(p_a+i)+j)=*(*(p_a+i)+j)/t;//你这里本来是想除以((*(*(p_a+i)+i))*1.0);但是以第一行为例,你a[0][0]变为1了,那后面再除以a[0][0]时不是相当于没除嘛,就起不到作用了。
}
for(i=0;i<LONG;i++)
for(j=0;j<LONG;j++)
printf("%-4.1f",a[i][j]);
getch();
}

2009-11-01 18:04
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:10 
冒泡法排序排错了:
 for(i=0;i<M;i++)
   for(j=i+1;j<M-1;j++)
{
        if(_stutdent[j].aver>_stutdent[j+1].aver)//按照你的for循环,首先判断的是_stutdent[1].aver和_stutdent[2].aver,而实际应从_stutdent[0].aver开始判断。
{
            date=_stutdent[j];
        _stutdent[j]=_stutdent[j+1];
          _stutdent[j+1]=date;
}
   }
2009-11-01 18:31
快速回复:粗手,写的不好!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.081483 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved