getchar(cin,a)
时间: 2023-08-28 14:34:34 浏览: 78
`getchar(cin, a)` 不是 C++ 的合法语句。在 C++ 中,`getchar()` 函数是 C 标准库中的函数,用于从标准输入流(stdin)中读取一个字符。而在 C++ 中,我们通常使用 `cin` 对象来读取用户输入。因此,正确的语法应该是 `cin.get(a)`,其中 `a` 是一个 char 类型的变量,用于存储读取到的字符。这个语句会从标准输入流中读取一个字符,并将其存储到变量 `a` 中。需要注意的是,`cin.get()` 函数会读取输入流中的任何字符,包括空格和换行符。如果需要忽略空格和换行符,可以使用 `cin >> a` 语句来读取输入。
相关问题
char ch; ch=getchar(); // getchar用不了我*** // cin>>ch; while(ch<'0'||ch>'9') ch=getchar(); a[i][j]=ch-'0';为什么getchar用不了
根据您提供的代码,您遇到了无法使用`get()`函数的问题。这可能是因在使用`getchar()`函数之前,标准输入缓冲区中还有其他字符残留,导致`getchar()`读取到了不正确的字符。
为了解决这个问题,您可以在调用`getchar()`之前使用`getchar()`来清空输入缓冲区中的残留字符,直到读取到一个有效的字符为止。修改后的代码如下所示:
```c
char ch;
while ((ch = getchar()) != EOF && ch != '\n'); // 清空输入缓冲区
ch = getchar(); // 读取有效字符
while (ch < '0' || ch > '9')
ch = getchar();
a[i][j] = ch - '0';
```
这样,您可以确保在调用`getchar()`函数之前输入缓冲区中没有残留的无效字符。
请注意,`getchar()`函数返回的是`int`类型,而不是`char`类型。这是为了能够表示特殊字符`EOF`(文件结束符)。因此,您可以将其与字符常量`EOF`进行比较,以检查是否达到文件末尾。
如果您还有其他问题,请随时提问。我会尽力帮助您解决问题。
#include <iostream> using namespace std; #include <iomanip> struct shuji { char name[31]; double price; }books[10]; int main() { int n; cin>>n; getchar(); int i; double a[10]; for(i=0;i<n;i++) { cin.getline(books[i].name ,32); cin>>books[i].price ; getchar(); a[i]=books[i].price; } double max=a[0],min=a[0]; int flag1=0,flag2=0; for(i=1;i<n;i++) { if(a[i]>max) { max=a[i]; flag1=i; } else if(a[i]<min) { min=a[i]; flag2=i; } } cout<<setiosflags(ios::fixed)<<setprecision(2)<<max<<", " <<books[flag1].name <<endl; cout<<setiosflags(ios::fixed)<<setprecision(2)<<min<<", " <<books[flag2].name ; return 0; }实验报告
实验目的:
通过本次实验,我们将学习如何使用结构体和数组来存储一组数据,并进行排序和查找操作。
实验要求:
编写一个程序,输入n个书籍的名称和价格,然后输出其中价格最高和价格最低的书籍名称及价格。
实验步骤:
1. 定义结构体shuji,包括书籍名称和价格两个成员变量。
2. 在main函数中,定义一个长度为10的shuji型数组books,用来存储n个书籍的信息。
3. 输入n的值,并使用循环输入每个书籍的名称和价格,并将价格存储在一个double型数组a中。
4. 使用循环遍历数组a,找出其中的最高和最低价格,并记录它们的下标。
5. 输出最高价格对应的书籍名称和价格,以及最低价格对应的书籍名称和价格。
6. 在输出时需要设置输出格式,保留两位小数。
实验代码:
```cpp
#include <iostream>
using namespace std;
#include <iomanip>
struct shuji {
char name[31];
double price;
}books[10];
int main() {
int n;
cin>>n;
getchar();
int i;
double a[10];
for(i=0;i<n;i++) {
cin.getline(books[i].name, 32);
cin>>books[i].price;
getchar();
a[i]=books[i].price;
}
double max=a[0],min=a[0];
int flag1=0,flag2=0;
for(i=1;i<n;i++) {
if(a[i]>max) {
max=a[i];
flag1=i;
}
else if(a[i]<min) {
min=a[i];
flag2=i;
}
}
cout<<setiosflags(ios::fixed)<<setprecision(2)<<max<<", " <<books[flag1].name <<endl;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<min<<", " <<books[flag2].name ;
return 0;
}
```
实验结果:
假设输入的n为4,书籍名称和价格分别为:
```
C++ Primer Plus, 99.9
Effective C++, 89.8
Thinking in Java, 120.5
Head First Design Patterns, 78.6
```
则程序输出结果为:
```
120.50, Thinking in Java
78.60, Head First Design Patterns
```
实验总结:
本次实验通过使用结构体和数组来存储一组数据,并进行排序和查找操作,加深了我们对于结构体和数组的理解和应用。同时,我们也学会了如何使用setiosflags和setprecision设置输出格式,使输出结果更加美观。
阅读全文