菜鸟提问 C语言的两个问题 求高数解答 用的VC++6.0编译器
1。题目:某班期末考试科目为英语(EN)数学(MT)物理(PH),有最多不超过40人参加考试。请编程计算1每个学生的总分和平均分2每门课程的总分和平均分score[][]...
1。
题目:某班期末考试科目为英语(EN)数学(MT) 物理(PH),有最多不超过40人参加考试。请编程计算 1每个学生的总分和平均分 2每门课程的总分和平均分
score[][]是按学生,科目的数组 XH[]是学号的数组 st是学生总分的数组 t是学生平均分数组 sb是科目总分的数组 b是课程平均分的数组
写了如下代码 运行后各种错误 都是关于printf的too few actual parameters错误 各种关于printf的警告
困惑了好久 求高手解答 不甚感激。。。
#include<stdio.h>
#define N 3
#define M 40
int Read(int score[][N],long XH[]);
int AST(int score[][N],float st[],int t[],int n);
int ASB(int score[][N],float sb[N],int b[],int n);
int printf(int score[][N],float sb[N],float st[],long XH[],int t[],int b[],int n);
main()
{
int n=0;
int score[M][N],t[M],b[M];
long XH[M];
float st[M];
float sb[N];
n=Read(score,XH);
AST(score,st,t,n);
ASB( score,sb,b,n);
printf( score,sb,st,XH,t,b,n);
return 0;
}
int Read(int score[][N],long XH[])
{
int n,i,m;
printf("input n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("enterthenum:");
scanf("%1d",&XH[i]);
printf("enter the score as MT EN PH:");
for(m=0;m<N;m++)
{
scanf("%d",&score[i][m]);
}
}
i=i+1;
return i;
}
int AST(int score[][N],float st[],int t[],int n)
{
int i,m;
for(i=0;i<n;i++)
{
for(m=0;m<N;m++)
{
t[i]+=score[i][m];
}
st[i]=(float)(t[i])/n;
}
return 0;
}
int ASB(int score[][N],float sb[N],int b[],int n)
{
int i,m;
for(m=0;m<N;m++)
{
for(i=0;i<n;i++)
{
b[m]+=score[i][m];
}
sb[m]=(float)(b[m])/n;
}
return 0;
}
int printf(int score[][N],float sb[N],float st[],long XH[],int t[],int b[],int n)
{
int i,j;
printf("Counting Result:\n");
printf("Student's ID\t MT\n EN\n PH\n Sum\t Aver\n");
for(i=0;i<N;i++)
{
printf("% 121d\t",XH[i]);
for(j=0;j<n;j++)
{
printf("% 4d\t",score[j][i]);
}
printf("% 4d\t% 5.1f\n",t[i],t[i]);
}
printf("SumOfCourse\t");
for(j=0;j<N;j++)
{
printf("% 4d\t",b[j]);
}
printf("\nAverOfCourse\t");
for(j=0;j<N;j++)
{
printf("% 4.1f\t",sb[j]);
}
printf("\n");
2.
#include<stdio.h>
main()
{
unsigned int a;
a=-1;
{printf("%d",a);}
}
运行上面的代码,为什么能printf出-1 unsigned int不是无符号吗 他不应该把把符号位1当成最高位吗而显示为而解释成无符号整数65535吗 求高手解答! 展开
题目:某班期末考试科目为英语(EN)数学(MT) 物理(PH),有最多不超过40人参加考试。请编程计算 1每个学生的总分和平均分 2每门课程的总分和平均分
score[][]是按学生,科目的数组 XH[]是学号的数组 st是学生总分的数组 t是学生平均分数组 sb是科目总分的数组 b是课程平均分的数组
写了如下代码 运行后各种错误 都是关于printf的too few actual parameters错误 各种关于printf的警告
困惑了好久 求高手解答 不甚感激。。。
#include<stdio.h>
#define N 3
#define M 40
int Read(int score[][N],long XH[]);
int AST(int score[][N],float st[],int t[],int n);
int ASB(int score[][N],float sb[N],int b[],int n);
int printf(int score[][N],float sb[N],float st[],long XH[],int t[],int b[],int n);
main()
{
int n=0;
int score[M][N],t[M],b[M];
long XH[M];
float st[M];
float sb[N];
n=Read(score,XH);
AST(score,st,t,n);
ASB( score,sb,b,n);
printf( score,sb,st,XH,t,b,n);
return 0;
}
int Read(int score[][N],long XH[])
{
int n,i,m;
printf("input n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("enterthenum:");
scanf("%1d",&XH[i]);
printf("enter the score as MT EN PH:");
for(m=0;m<N;m++)
{
scanf("%d",&score[i][m]);
}
}
i=i+1;
return i;
}
int AST(int score[][N],float st[],int t[],int n)
{
int i,m;
for(i=0;i<n;i++)
{
for(m=0;m<N;m++)
{
t[i]+=score[i][m];
}
st[i]=(float)(t[i])/n;
}
return 0;
}
int ASB(int score[][N],float sb[N],int b[],int n)
{
int i,m;
for(m=0;m<N;m++)
{
for(i=0;i<n;i++)
{
b[m]+=score[i][m];
}
sb[m]=(float)(b[m])/n;
}
return 0;
}
int printf(int score[][N],float sb[N],float st[],long XH[],int t[],int b[],int n)
{
int i,j;
printf("Counting Result:\n");
printf("Student's ID\t MT\n EN\n PH\n Sum\t Aver\n");
for(i=0;i<N;i++)
{
printf("% 121d\t",XH[i]);
for(j=0;j<n;j++)
{
printf("% 4d\t",score[j][i]);
}
printf("% 4d\t% 5.1f\n",t[i],t[i]);
}
printf("SumOfCourse\t");
for(j=0;j<N;j++)
{
printf("% 4d\t",b[j]);
}
printf("\nAverOfCourse\t");
for(j=0;j<N;j++)
{
printf("% 4.1f\t",sb[j]);
}
printf("\n");
2.
#include<stdio.h>
main()
{
unsigned int a;
a=-1;
{printf("%d",a);}
}
运行上面的代码,为什么能printf出-1 unsigned int不是无符号吗 他不应该把把符号位1当成最高位吗而显示为而解释成无符号整数65535吗 求高手解答! 展开
展开全部
#include <stdio.h>
#define STU 30
#define COURSE 3
void Input(long num[],int score[][COURSE],int n);
void GetSumAver(int score[][COURSE],int n,int sum[],float aver[]);
void Sort(long num[],int score[][COURSE],int n,int sum[],float aver[]);
void Print(long num[],int score[][COURSE],int n,int sum[],float aver[]);
int Search(long num[], int n, long x);
void main()
{
int n, score[STU][COURSE], sum[STU], pos;
long num[STU], x;
float aver[STU];
printf("Please enter the total number of the students(n<=30):");
scanf("%d", &n); /*输入参加考试的学生人数*/
printf("Enter No. and score as: MT EN PH\n");
Input(num, score, n); /*输入学生成绩*/
GetSumAver(score, n, sum, aver); /*计算总分和平均分*/
printf("Before sort:\n");
Print(num, score, n, sum, aver);
Sort(num, score, n, sum, aver); /*排名次*/
printf("After sort:\n");
Print(num, score, n, sum, aver);
printf("Please enter searching number:");
scanf("%ld", &x); /*以长整型格式输入待查找学生的学号*/
pos = Search(num, n, x); /*名次查询*/
if (pos != -1)
{
printf("position:\t NO \t MT \t EN \t PH \t SUM \t AVER\n");
printf("%8d\t%4ld\t%4d\t%4d\t%4d\t%5d\t%5.0f\n",
pos+1,num[pos], score[pos][0],score[pos][1],
score[pos][2], sum[pos],aver[pos]);
}
else
{
printf("Not found!\n");
}
}
/*函数功能:输入某班学生期末考试三门课程成绩
函数参数:长整型数组num,存放学生学号 整型数组score,存放学生成绩
整型变量n,存放学生人数
函数返回值:无
*/
void Input(long num[], int score[][COURSE], int n)
{
int i, j;
for (i=0; i<n; i++)
{
scanf("%ld", &num[i]);
for (j=0; j<COURSE; j++)
{
scanf("%d", &score[i][j]);
}
}
}
/* 函数功能:计算每个学生的总分和平均分
函数参数: 整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,计算得到的每个学生的总分
实型数组aver,计算得到的每个学生的平均分
函数返回值:无
*/
void GetSumAver(int score[][COURSE], int n, int sum[], float aver[])
{
int i, j;
for (i=0; i<n; i++)
{
sum[i] = 0;
for (j=0; j<COURSE; j++)
{
sum[i] = sum[i] + score[i][j];
}
aver[i] = (float)sum[i] / COURSE;
}
}
/* 函数功能:按总分成绩由高到低排出成绩的名次
函数参数:长整型数组num,存放学生学号
整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,存放每个学生的总分
实型数组aver,存放每个学生的平均分
函数返回值:无
*/
void Sort(long num[],int score[][COURSE], int n, int sum[], float aver[])
{
int i, j, k, m;
int temp1;
long temp2;
float temp3;
for (i=0; i<n-1; i++)
{
k = i;
for (j=i+1; j<n; j++)
{
if (sum[j] > sum[k]) k = j;
}
if (k != i)
{
temp1 = sum[k]; sum[k] = sum[i]; sum[i] = temp1;
temp2 = num[k]; num[k] = num[i]; num[i] = temp2;
temp3 = aver[k]; aver[k] = aver[i]; aver[i] = temp3;
for (m=0; m<COURSE; m++)
{
temp1 = score[k][m];
score[k][m] = score[i][m];
score[i][m] = temp1;
}
}
}
}
/* 函数功能: 打印名次表,表格内包括学生编号、各科分数、总分和平均分
函数参数: 长整型数组num,存放学生学号
整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,存放每个学生的总分
实型数组aver,存放每个学生的平均分
函数返回值:无
*/
void Print(long num[], int score[][COURSE], int n,
int sum[], float aver[])
{
int i, j;
printf(" NO \t| MT \t EN \t PH \t SUM \t AVER\n");
printf("----------------------------------------------------\n");
for (i=0; i<n; i++)
{
printf("%ld\t| ", num[i]);
for (j=0; j<COURSE; j++)
{
printf("%4d\t", score[i][j]);
}
printf("%5d\t%5.0f\n", sum[i], aver[i]);
}
}
/* 函数功能:在学号数组中顺序查找学生的学号
函数参数:长整型数组num,存放学生学号
整型变量n,存放学生人数
长整型变量x,存放待查找学生的学号
函数返回值:找到时,返回学生学号在学号数组中的下标位置,否则返回值-1
*/
int Search(long num[], int n, long x)
{
int i;
for (i=0; i<n; i++)
{
if (num[i] == x) return(i);
}
return (-1);
}
Sorry,It's hard to explain .
However,it depends on yourself to figure it out.
Good luck!
#define STU 30
#define COURSE 3
void Input(long num[],int score[][COURSE],int n);
void GetSumAver(int score[][COURSE],int n,int sum[],float aver[]);
void Sort(long num[],int score[][COURSE],int n,int sum[],float aver[]);
void Print(long num[],int score[][COURSE],int n,int sum[],float aver[]);
int Search(long num[], int n, long x);
void main()
{
int n, score[STU][COURSE], sum[STU], pos;
long num[STU], x;
float aver[STU];
printf("Please enter the total number of the students(n<=30):");
scanf("%d", &n); /*输入参加考试的学生人数*/
printf("Enter No. and score as: MT EN PH\n");
Input(num, score, n); /*输入学生成绩*/
GetSumAver(score, n, sum, aver); /*计算总分和平均分*/
printf("Before sort:\n");
Print(num, score, n, sum, aver);
Sort(num, score, n, sum, aver); /*排名次*/
printf("After sort:\n");
Print(num, score, n, sum, aver);
printf("Please enter searching number:");
scanf("%ld", &x); /*以长整型格式输入待查找学生的学号*/
pos = Search(num, n, x); /*名次查询*/
if (pos != -1)
{
printf("position:\t NO \t MT \t EN \t PH \t SUM \t AVER\n");
printf("%8d\t%4ld\t%4d\t%4d\t%4d\t%5d\t%5.0f\n",
pos+1,num[pos], score[pos][0],score[pos][1],
score[pos][2], sum[pos],aver[pos]);
}
else
{
printf("Not found!\n");
}
}
/*函数功能:输入某班学生期末考试三门课程成绩
函数参数:长整型数组num,存放学生学号 整型数组score,存放学生成绩
整型变量n,存放学生人数
函数返回值:无
*/
void Input(long num[], int score[][COURSE], int n)
{
int i, j;
for (i=0; i<n; i++)
{
scanf("%ld", &num[i]);
for (j=0; j<COURSE; j++)
{
scanf("%d", &score[i][j]);
}
}
}
/* 函数功能:计算每个学生的总分和平均分
函数参数: 整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,计算得到的每个学生的总分
实型数组aver,计算得到的每个学生的平均分
函数返回值:无
*/
void GetSumAver(int score[][COURSE], int n, int sum[], float aver[])
{
int i, j;
for (i=0; i<n; i++)
{
sum[i] = 0;
for (j=0; j<COURSE; j++)
{
sum[i] = sum[i] + score[i][j];
}
aver[i] = (float)sum[i] / COURSE;
}
}
/* 函数功能:按总分成绩由高到低排出成绩的名次
函数参数:长整型数组num,存放学生学号
整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,存放每个学生的总分
实型数组aver,存放每个学生的平均分
函数返回值:无
*/
void Sort(long num[],int score[][COURSE], int n, int sum[], float aver[])
{
int i, j, k, m;
int temp1;
long temp2;
float temp3;
for (i=0; i<n-1; i++)
{
k = i;
for (j=i+1; j<n; j++)
{
if (sum[j] > sum[k]) k = j;
}
if (k != i)
{
temp1 = sum[k]; sum[k] = sum[i]; sum[i] = temp1;
temp2 = num[k]; num[k] = num[i]; num[i] = temp2;
temp3 = aver[k]; aver[k] = aver[i]; aver[i] = temp3;
for (m=0; m<COURSE; m++)
{
temp1 = score[k][m];
score[k][m] = score[i][m];
score[i][m] = temp1;
}
}
}
}
/* 函数功能: 打印名次表,表格内包括学生编号、各科分数、总分和平均分
函数参数: 长整型数组num,存放学生学号
整型数组score,存放学生成绩
整型变量n,存放学生人数
整型数组sum,存放每个学生的总分
实型数组aver,存放每个学生的平均分
函数返回值:无
*/
void Print(long num[], int score[][COURSE], int n,
int sum[], float aver[])
{
int i, j;
printf(" NO \t| MT \t EN \t PH \t SUM \t AVER\n");
printf("----------------------------------------------------\n");
for (i=0; i<n; i++)
{
printf("%ld\t| ", num[i]);
for (j=0; j<COURSE; j++)
{
printf("%4d\t", score[i][j]);
}
printf("%5d\t%5.0f\n", sum[i], aver[i]);
}
}
/* 函数功能:在学号数组中顺序查找学生的学号
函数参数:长整型数组num,存放学生学号
整型变量n,存放学生人数
长整型变量x,存放待查找学生的学号
函数返回值:找到时,返回学生学号在学号数组中的下标位置,否则返回值-1
*/
int Search(long num[], int n, long x)
{
int i;
for (i=0; i<n; i++)
{
if (num[i] == x) return(i);
}
return (-1);
}
Sorry,It's hard to explain .
However,it depends on yourself to figure it out.
Good luck!
展开全部
* 函数名:CountDifferentCharactersInFile
* 功能:功能给定文件中各类字符的个数
* 1. 根据文件信息结构体指针pTextFileInfo中所给的文件名,打开文件
* 2. 顺序读出文件中的字符,统计中各类字符数
* 3. 关闭文件
* 参数:TEXTFILEINFO *pTextFileInfo
* 返回值:0 成功 -1 无法打开文件*/
int CountDifferentCharactersInFile(TEXTFILEINFO *pTextFileInfo)
{ FILE *fp; //文件指针
//补充必要的变量说明
//打开文件
if ((fp = fopen(pTextFileInfo->szFileName, "r")) == NULL)
{return -1; //文件打开不成功时返回-1
}
//请补充从文件中读并统计的其他代码
//提示:可以调用函数fgetc从文件中读一个字符
//关闭文件
fclose(fp);
return 0;
}
* 功能:功能给定文件中各类字符的个数
* 1. 根据文件信息结构体指针pTextFileInfo中所给的文件名,打开文件
* 2. 顺序读出文件中的字符,统计中各类字符数
* 3. 关闭文件
* 参数:TEXTFILEINFO *pTextFileInfo
* 返回值:0 成功 -1 无法打开文件*/
int CountDifferentCharactersInFile(TEXTFILEINFO *pTextFileInfo)
{ FILE *fp; //文件指针
//补充必要的变量说明
//打开文件
if ((fp = fopen(pTextFileInfo->szFileName, "r")) == NULL)
{return -1; //文件打开不成功时返回-1
}
//请补充从文件中读并统计的其他代码
//提示:可以调用函数fgetc从文件中读一个字符
//关闭文件
fclose(fp);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个int printf(int score[][N],float sb[N],float st[],long XH[],int t[],int b[],int n)中printf的函数,和标准输入输出库中的函数重名了。建议把函数名改成Print试试。其他地方太长了
第二个整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。
http://baike.baidu.com/view/5550013.htm
第二个整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。
http://baike.baidu.com/view/5550013.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前一个问题好长啊,实在是不想看了,抱歉。
不过后一个问题想了下,是不是因为打印的问题?unsigned是一个修饰符,本身对于计算机存储数字是没有太大影响的,用printf函数的话,是需要指定类型的,而unsigned int应该用%u吧。试试改成%u看看。第一个问题我再看看。
希望有帮助。
刚才看了下第一个,应该是不能自定义一个叫做printf的函数吧,和标准输入输出库中的函数重名了。建议把函数名改成Print试试。printf的错误的话,应该就是这个问题。
不过后一个问题想了下,是不是因为打印的问题?unsigned是一个修饰符,本身对于计算机存储数字是没有太大影响的,用printf函数的话,是需要指定类型的,而unsigned int应该用%u吧。试试改成%u看看。第一个问题我再看看。
希望有帮助。
刚才看了下第一个,应该是不能自定义一个叫做printf的函数吧,和标准输入输出库中的函数重名了。建议把函数名改成Print试试。printf的错误的话,应该就是这个问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询