C语言代码和运行结果如下:
根据提供的输入数据,4号选手刘嘉玲的平均分79明显是最高的,不应被淘汰
最低分应为5号选手梁朝伟的59分,所以图中输出与示例不一致
但结果应该没错,确实输出了最低分选手的相关信息,望采纳~
附源码:
#include <stdio.h>
#define N 5
int main() {
int no[N], score[N][4], i, j, sum, k = 0
char name[N][50]
for (i = 0i <Ni++)
scanf("%d", &no[i])
for (i = 0i <Ni++)
scanf("%s", name[i])
for (i = 0i <Ni++) {
sum = 0// 记录每名选手总成绩并求平均分毁前兆
for (j = 0j <3j++) {
scanf("%d", &score[i][j])
sum += score[i][j]
}
score[i][3] = sum / 3
if (score[i][3] <score[k][3])
k = i// 记录平均分最悔并低纤租的选手下标
}
printf("被淘汰的选手信息为:\n最低分为:%d 编号为:%d 姓名为:%s\n", score[k][3], no[k], name[k])
return 0
}
分类: 电脑/网络 >>程序设计 >>其他编程团芹语言问题描述:
#include <iostream>
#include <string>
#include <fstream>
using namespace std
void main()
{
string file_name1以下是从一个记事本文件薯野中读入数据(我在记事本中写了"10 20"数据,并保存在"D:\\Input.txt"文件中!)
cout<<"请输入源文件名(包括路径和后缀名):"
cin>>file_name1
ifstream infile(file_name1.c_str(),ios::in)
if (!infile)
{
cerr<<"无法打开文件 "<<file_name1.c_str()<<" !!!"<<endl
exit(-1)
}
cout<<endl
char f[100]
infile.getline(f,100,EOF)
infile.close()
int i=0
while(i<100)
{if(f[i]==' ') i++如果是空格,是指向下一个字符
else if(f[i]>'0'&&f[i]<='9') 判断是否为十进制数:第一个数不能是0
{
char a[20]定义数组a,用来保存这个十进制数
int j=0
{a[j]=f[i]
i++j++
}
while(f[i]>='0'&&f[i]<='9')其实数为0~9,包括0!
{
a[j]=f[i]
i++
j++
}
i++
cout<<a<<endl输出数组a
string str=a
cout<<str<<endl输出字符串str
}
}
}
这是一个词法分析器中的判断是否塌手毕为十进制数的一段程序,我在输出时,会出现:
10烫烫烫烫烫烫烫烫烫
10烫烫烫烫烫烫烫烫烫
20烫烫烫烫烫烫烫烫烫
20烫烫烫烫烫烫烫烫烫
这样的情况,为什么会这样啊?怎么把后面那些"烫"弄掉?
解析:
程序问题是:定义了数组变量a,添加数字字符后,在结尾处未添加空字符'\0'。建议在语句
cout<<a<<endl输出数组a
之前添加一行语句
a[j]='\0'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)