C++基础问题 读一个txt中大写字母的数量

读一个txt中大写字母的数量
请问为什么是return i-1
还有就是a.txt文件设置为AAA时是输出大写为3
当设置为AAAc时就变成2了
求助!
#include
#include
using namespace std;
int num1(char f[100])
{
fstream file;
file.open(f,ios::in);
char ch;
int i=0;
while(!file.eof())
{
file.get(ch);
if(ch>='A'&&ch<='Z')
i++;
}
file.close();
return i-1;
}
int main()
{
int n;
n=num1("a.txt");
cout<<"大写="<<n<<endl;
return 0;
}

1个回答

因为文件指针到最后一个字符时并不会触发eof,再读一次读不到数据才触发eof,这样ch还保留着上一次的数据,又会被执行一次
如果你最后一个字符是大写字母,那么i的值会被多计算一次,此时返回i-1个数是对的
如果你最后一个字符不是大写字母,那么i的值本来是对的,但由于返回的是i-1所以输出的时候会比正确的少一个
改成下面这样就行了:

 #include<iostream>
#include<fstream>
using namespace std;
int num1(char f[100])
{
    fstream file;
    file.open(f,ios::in);
    char ch;
    int i=0;
    while(!file.eof())
    {
        file.get(ch);
        if(ch>='A'&&ch<='Z')
            i++;
    }
    file.close();
    if(ch>='A'&&ch<='Z')
        return i-1;
    else
        return i;
}
int main()
{
    int n;
    n=num1("a.txt");
    cout<<"大写="<<n<<endl;
    return 0;
}

Mapppletwj
Mapppletwj 谢谢你~!豁然开朗
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言:利用指针编写程序,统计输入的字符串中大写字母、小写字母和数字字符的数量

题目来源:大工慕课 链接 作者:Caleb Sung 题目要求 利用指针编写程序,统计输入的字符串中大写字母、小写字母和数字字符的数量。 参考代码 #include &amp;lt;stdio.h&amp;gt; void main () { char a[100]; int sum0=0, suma=0, sumA=0; gets(a); char *p; ...

从一个文本文件读取正文,将其中的小写字母转化成大写字母,大写字母转换成小写字母,其他字符不变。

#include #include #include using namespace std; int main(int argc, char* argv[]) { ifstream infile("txt"); if (!infile) { cerr << "Can't open file." << endl; } char ch

华为OJ-统计大写字母个数-C语言实现/Java实现

统计大写字母个数 题目描述 找出给定字符串中大写字符(即'A'-'Z')的个数 接口说明     原型:int CalcCapital(String str);     返回值:int     输入描述: 输入一个String数据 输出描述: 输出string中大写字母的个数 示例1 输入 add1

多线程同时读写文件

无聊,写了一个多线程同时读写文件,当然同一时刻只有一个线程读或者写文件import java.io.File; import java.util.Random; public class Test { public static void main(String[]

统计字符串中每个小写字母的个数

统计字符串中每个小写字母的个数

关于深搜的基础题目

题意:给出一个roe*col的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。 。问最多可以经过几个字母。(同时要注意不能转移到曾经过的字母 是指单次的一条路线不能移向曾经经过的字母。) 思路:深搜的经典题目,基础的Dfs 代码: #include using namespace std; const int

在一个字符串中,统计大写字母个数,小写字母个数,其他字符个数的四种算法

题目描述:编写程序,输出字符串中的大写字母、小写小母和其他的个数

从txt文件中读取数据到二维数组

1. 用fopen(“文件名”,“r”)函数打开文件 2. 判断读取文件是否成功:读取文件成功返回文件指针,失败返回NULL 3. 循环中用fscanf(fp,“%”,&a[])函数将文件中的数据读入到数组 4. fclose(fp)函数关闭文件 代码如下: FILE *fp; fp=fopen("ex2data1.txt","r"); if(fp==

(C语言)大写字母转换成小写字母问题

题目描述 从键盘输入一个字符,判别是否大写字母,如果是把它转换成小写字母并输出,否则不转换直接输出。 输入 输入一个字符。 输出 输出对应的字符

怎么用c语言实现读取一个txt文件里的数据 要按行读出来

打开文件 fopen("需要打开的路径") 然后使用fgets函数读取行 #include  #include  #include  #define MAX_LINE 1024 int main() {  char buf[MAX_LINE];  /*缓冲区*/  FILE *fp;            /*文件指针*/  int len;             /*行字符个数*/

蓝桥杯:基础练习 特殊回文数

基础练习 特殊回文数   时间限制:1.0s   内存限制:512.0MB        问题描述   123321是一个非常特殊的数,它从左边读和从右边读是一样的。   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式   输入一行,包含一个正整数n。 输出格式   按从小到大的顺序输出满足条件

多线程并发问题,定义支持单个写线程和多个读线程的锁

 多线程并发是一个非常难搞的一个问题,不知道多少英雄白头,也没达到最好方法,以前我也是申名 static object o_lock=new object;在线程中采用lock(o_lock) ,这是简单的,后来有了ReaderWriterLock,这个类,改变了一点情况量小时还能容易采用,大规模管理仍然困难,如今看到了ReaderWriterLockSlim这个,感觉有希望改变困境了, 

C语言:将字符串中所有小写字母转为大写字母

题目来源:大工慕课 链接 作者:Caleb Sung 解答示范 #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;string.h&amp;gt; #define N 100 int main() { char a[N]; int i; scanf(&quot;%s&quot;, a); ...

求给定字符串中包含单词的个数

字符串只包含0-9十个数字,26个英文字母,英文标点符号, 感叹号,逗号,句号,连接符,问号,双引号一共六个标点 符号。 标点符号不算单词,连接符连接的单词算多个,例如:params_mar_module. 这个词语算作三个单词。

c语言从键盘中输入一串字符串,将字符中的大写转化成小写字母,将小写字母转换成大写字母,以*号键结束

#include int main(int argc, const char * argv[]) {     char c;      c=getchar();     while (c!='*')     {                 if(c>='A'&&c'Z')         {             c=c+32;        

统计一个字符串中大写字母,小写字母,以及数字的个数。

public class StringTest {  public static void main(String[] args) {   // 封装键盘录入数据   Scanner sc = new Scanner(System.in);   System.out.println("请输入一个字符串:");   String line = sc.nextLine();   // 定义

获取指定字符串中,大写字母、小写字母、数字的个数。

代码如下:import java.util.Scanner;/* * 获取指定字符串中,大写字母、小写字母、数字的个数。 */public class StringTest {    public static void main(String[] args) {        System.out.println(&quot;请输入字符串:&quot;);        Scanner sc=new Scanner...

由TXT文件路径,读取并显示该TXT文件

private String loadData(String path){ File file = new File(path); BufferedReader br = null; StringBuffer sb = new StringBuffer(); try{ br = new BufferedRea

C Primer Plus(第六版)第六章编程练习答案。

C Primer Plus第六版第六章编程练习答案

Linux下运用C/C++实现txt文件的读写

一、基于ANSI标准的I/O函数实现文件的读写 在ANSI标准下,进行文件的读写操作会在用户空间中自动为正在使用的文件开开辟内存缓冲区。如下图所示: ANSI标准的C库函数建立在底层的系统调用之上,即C函数库额文件访问函数的实现中使用了低级文件I/O系统调用。ANSI标准的C库函数是为了减少使用系统调用的次数,提高效率,根据应用的不同采取缓冲机制,这样,在对磁盘文件进行读操作时,可以一次性的

C语言读取txt文件实例

本文主要总结用C语言来读txt文本的内容,具体的步骤如下所述。1.1建一个.c源文件,赋值如下代码。#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;#include &amp;lt;string.h&amp;gt;#define MAX_LINE 1024int main(){ char buf[MAX_LINE]; /*缓冲区*/ FILE *fp; ...

C语言读取txt文件的数据

读取txt的数据,在matlab中一条语句就可以实现,C语言中却要复杂很多。尝试了很多种方法,终于读取到了想要的数据,方法比较笨,但好在只是用来试验,可以不用在乎效率,以后看到好的方法再加以改进。 #include "stdafx.h" #include #include #include #include #include using namespace std; #define

从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。

def write(): with open("test.txt",'r+') as f: str=raw_input("please input a string:\n") str=str.upper() f.write(str) if __name__ == '__main__': write()

13:将字符串中的小写字母转换成大写字母

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个字符串,将其中所有的小写字母转换成大写字母。 输入输入一行,包含一个字符串(长度不超过100,可能包含空格)。 输出输出转换后的字符串。 样例输入 helloworld123Ha 样例输出 HELLOWORLD123HA 源码 #include #

打开一个txt文件,读取里面的内容并打印出来

#!E:\Dwimperl\bin open(FILEIP, "E:/Dwimperl/program/test/file3.txt"); ### 打开别的盘的文件 while() { chomp ; # 去除换行 s/00000//ig; print $_."\n"; } close (FILEIP) my $file = "file.tx

C读取txt文件,获取数据

这个是我在做压力测试的时候写的一小段程序,是用来读取对方生成的txt文件

判断输入的字符串中,大小写字母和数字的个数

package string; import java.util.Scanner; public class StringTest2 { public static void main(String[] args) { int bigCount=0; int smallCount=0; int numberCount=0;     Scanner sc=n

C++ 使用ifstream和getline读取txt文件内容

假设有一个叫 data.txt 的文件, 它包含以下内容:  Fry: One Jillion dollars. [Everyone gasps.] Auctioneer: Sir, that's not a number. 数据读取, 测试 。 以下就是基于 data.txt 的数据读取操作: #include  #include  #include 

C语言从txt文件的数据保存到二维数组

代码 #include int main(int argc,char** argv) { float a[3][3]; int i,j; FILE* fp=fopen("a.txt","r"); //打开文件 if(fp==NULL) { printf("无文件");

c语言txt文件读取代码

如何用C实现txt不间断读取 直到文档结束

c语言如何从txt文件读取数据

打开文件 fopen("需要打开的路径")然后使用fgets函数读取行 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE 1024 int main() { char buf[MAX_LINE]; /*缓冲区*/ FILE *fp

java练习题---String类之求给定字符串中大小写字母的个数

//        1: 编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数以及非英文字母数。 public class 练习 { public static void main(String[] args) { String str = "JHKKkj%^&fnn7868(u89%^&T56yuvy8sa7d678&*^&*^%^%";//随机输入一段字符 i

【Python面试必看系列】之计算一个文件中的大写字母数量

Q 14. 请写一个 Python 逻辑,计算一个文件中的大写字母数量 首先在程序所在文件夹下面新建一个test.txt文件,里面写入一些大小写字母,然后运行下面的程序即可: with open('test.txt') as test: count = 0 for i in test.read(): if i.isupper(): co...

C语言练习题一: 《C Primer Plus》第六章 C控制语句:C循环——编程练习题

请先独立完成,再参考答案1. 编写一个程序,创建一个包含 26 个元素的数组,并在其中储存 26 个小写字母。然后打印数组的所有内容。2.使用嵌套循环,按下面的格式打印字符:$$$$$$$$$$$$$$$3.使用嵌套循环,按下面的格式打印字母:FFEFEDFEDCFEDCBFEDCBA注意:如果你的系统不使用ASCII 或其他以数字顺序编码的代码,可以把字符数组初始化为字母表中的字母:char l...

【python入门】python基础13——基础练习题

练习一:1,2,3,4,组成的互不相同的3位数有多少个解:在python中是没有&amp;amp;&amp;amp;及||这两个运算符的,取而代之的是英文and和or。其他运算符没有变动。python不支持类似 x++ 或 x-- 这样的前置/后置自增/自减运算符,因此只能用 += 或 -= 这种。list = {1,2,3,4} cnt = 0 for i in list: for j in list:...

Csharp基础整理

0. C#的几个概念 CLR(Common Language Runtime)公共语言运行库 CLS(Common Language Specifiction)公共语言规范 CTS(Common Language System)通用类型系统 1. C#的变量命名规则 变量的名以字母、下划线或@开头,后面可以跟字母、数字、下划线,而不能包含空格、标点符号、运算符等其它符号。 变量名不能与C#中的关键字

14:大小写字母互换

原题链接 总时间限制: 1000ms 内存限制: 65536kB 描述 把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母。 输入输入一行:待互换的字符串。 输出输出一行:完成互换的字符串(字符串长度小于80)。 样例输入 If so, you already have a Google Account. You can sign

从txt中逐个读出能读的浮点数

//高效率代码 #include int n,r; double d; FILE *f; void main() { f=fopen("d.txt","r"); n=0; while (1) { r=fscanf(f,"%lf",&d); if (1==r) { n++; printf("[%

c语言实现读取txt文件内容到结构体数组中

#include #include #define N 10 typedef struct { char work_ID[5]; char name[20]; char phone_nu[12]; }student; int main(int argc, char *argv[]) { student st[N];

c语言,读取一个内容长度未知的文本文件。

我们常常会用到size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)这个函数进行文件的读取,但有些情况下,我们会发现读取文件之前并不知道文件的具体长度,故而对fread()的第三个参数也就是要读取文件的长度产生疑惑。解决方法如下:char* buffer; long lSize; FILE *fp;fp = fopen("so

c代码读txt文件的某一行

想在TXT文件中读取任意行 或 个  数据 ,比如说 第一个 TXT文件 有30行数据, 第二个TXT文件 有 50行数据,希望能不修改代码直接读取,还有一种情况就是 第一个文件 有40个数据  每个数据间用空格断开,第二个文件中有 60个数据 ,怎么能不修改代码能直接读取 呢?在网上搜了好多没找到合适的答案,有哪个朋友能帮帮忙 谢谢啦 #include #include #de

[object-c]读取txt文本内容

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"gen-rsa1024-key-test-16" ofType:@"cmd"]; NSArray *fileData; NSError *error; //读取file文件并把内容根据换行符分割后赋值给NSArray fil

统计Txt文件中数字的个数

/******************************************************************** /*功能:统计txt文件中16进制数字个数。PS最后一个数字后不能有空格,数字之间是空格不是逗号 /*日期:160816 /*作者: /*结论: /***************************************************

c语言一行一行的读取txt文件

工作中做的项目,经常需要读取一些脚本,就是一些txt文件,用python读取很简单,但是我们很多工具也是用c/c++语言写的,用c的话读取文件我一般是按照如下的方式:while(fscanf(pFile,"%[^\n]",CmdLine)!=EOF) { fgetc(pFile); ...}其中,fFile是调用fopen函数返回的文件句柄,cmdline是定义的char型数组,用来存储一行的内

<C语言>输入某个大写字母,产生一个金字塔图案。(字符与数字间的转换)

题目: 先来看一下源程序和运行结果: #include //作者:wsg //时间:2017年8月11日 int main(int argc, char *argv[]) { char ch; LOOP: printf("请输入一个大写字母:\n"); scanf("%c", &ch); while((getchar()) != '\n'); //scanf

如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)

本文代码都在Windows/VC++6.0下测试过, 在linux/g++下也没有问题。 但是,请一定注意linux和Windows文件格式的区别,比如: 1. 当linux上的代码读取Windows文件格式时, 读取结果的每行都会多一个\r, 想想为什么。 2. 当Windows上的代码读取linux格式文件时, 读取的结果会显示只有一行, 想想为什么。

C语言读取文件大量数据到数组

针对.txt文档的大量有规律数据,譬如100行8列的数据将其读取到二维数组(矩阵)中,留作之后的数据处理。 改程序通过宏定义的方法来确定将要读取程序的行数和列数,将数据读取到二维数组data[100][8]中。 同时加入一个测试函数read(),功能是可以获取txt文档大量数据的行数,本项目中待定使用。 程序如下: #include #include /* 为了以后特定行数的读取,采

c语言创建写入和读取TXT文件数据

下面是一个简单文件读取程序,首先是写数据,将数字0~9写入到data.txt文件中,然后再从data.txt中读取数据,将读到的数据存到数组a[10]中,并且打印到控制台上。 下面是程序: [cpp] view plain copy print? #include     int main()  {      //下面是写数据,将数字0~9写入到data.tx

如何用c语言读出 txt 文档中的数据到结构体中

在txt文档中的四行数据: @FCC2J1CACXX:3:1101:2153:2476#41_112/2 TACCTCTTTAGTATATTAGATTAGATGGGTTTTCTTTTATGAGTTAGTAGATTAGATGCAACTTGTCTTCCTAAGATAGCTTACCTTG + a`e`d[Y`b_ec_gbf_a[IP^P^S^gIY^gdg_dg_cXacaeaeYb\Waef

C语言:从键盘输入一个字符串,以感叹号!作为结束标志,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。

题目:从键盘输入一个字符串,以感叹号!作为结束标志,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。 下面是我写的程序源代码,我通过VS2010,编译通过,运行正常。 下面是生成的test.txt文件和其中的内容: 下面是我写的源代码: //从键盘输入一个字符串,以感叹号!作为结束标志,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问