这个C语言代码我有初步想法,但是有细节问题

img

img


我的想法是,保存输入输出,但是输出页面要求不能有输入的数字显示,解决不了

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7608538
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:不能修改C盘下文件(提示没有所需特权或无法访问)
  • 除此之外, 这篇博客: C语言实现顺序查找中的 算法思想:遍历整个数组,依次将数组中的每一个元素与待查找的数据进行比较,若没找到,则停止循环,输出其位置值;如果遍历结束,都没有找到符合条件的数,则输出“没找到”等提示信息。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 核心从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败

                1.从表中的第一个元素开始,依次与关键字比较。

                2.若某个元素匹配关键字,则 查找成功。

                3.若查找到最后一个元素还未匹配关键字,则 查找失败。

     

    顺序查找对表中元素的排序无要求,这些元素在表中可以任意排序,这使得顺序查找的适应性很高。顺序查找的实现很简单,其示例代码如下:

    #include "stdio.h"
    void main(){
    	int a[10],num,i,flag;                 /*变量定义*/
    	printf("Please input numbers: ");
    	for(i=0;i<=9;i++){
    		scanf("%d",&a[i]);                 /*接收输入的数组*/
    	}
    	printf("Please finding numbers: ");
    	scanf("%d", &num);                   /*接收关键字*/
    	for(i=0;i<=9;i++){
    		if(a[i]=num){                      //查找到所需的元素,跳出循环
    			flag=1;
    			break;
    		}
    	}
    	if(i==10){
    		flag=0;
    	}
    	if(flag){
    		printf("The numbers find!\n");
    	}
    	else{
    		printf("The numbers No find!\n");
    	}
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载

  • 您还可以看一下 刘城龙老师的教你快速查找电脑中的文件课程中的 快速按文件内容查找文件的方法小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案: 你可以使用C语言中的流重定向功能来解决该问题。具体步骤如下:

    1. 在代码中使用文件输入输出功能,将用户的输入和程序的输出以文件的形式保存到磁盘上,代码如下:
    freopen("input.txt", "w", stdin);
    freopen("output.txt", "w", stdout);
    

    其中,"input.txt"为输入文件名,"output.txt"为输出文件名。

    1. 在保存到文件后,使用流重定向功能将保存的信息输出到屏幕上,但不输出用户的输入数字。具体代码如下:
    int tmp;
    while(scanf("%c", &tmp) != -1) {
        if(tmp == '\n' || tmp == ' ') {
            putchar(tmp);
            continue;
        }
        printf("*");
    }
    

    其中,tmp为读入字符的临时变量,当读入数字时使用"*"替代,而其他字符则输出。

    完整代码如下:

    #include <stdio.h>
    
    void calculate_characters(char str[])
    {
        int vocabulary = 0, digit = 0, space = 0, other = 0;
        int i;
        for (i = 0; str[i] != '\0'; i++)
        {
            if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z'))
                vocabulary++;
            else if (str[i] >= '0' && str[i] <= '9')
                digit++;
            else if (str[i] == ' ')
                space++;
            else
                other++;
        }
        printf("vocabulary: %d\ndigit: %d\nspace: %d\nother: %d\n", vocabulary, digit, space, other);
    }
    
    int main()
    {
        freopen("input.txt", "w", stdin); //将标准输入流重定向到文件中
        freopen("output.txt", "w", stdout); //将标准输出流重定向到文件中
    
        char string[1000];
        printf("please enter a string: ");
        gets(string);
    
        calculate_characters(string); //计算字符数并保存到文件中
    
        fclose(stdin); //关闭输入输出流
        fclose(stdout);
    
        printf("Result:\n");
    
        //读出文件内容并输出到屏幕上,但不输出数字
        freopen("output.txt", "r", stdout); //重新将标准输出流重定向到文件中
        int tmp;
        while(scanf("%c", &tmp) != -1) {
            if(tmp == '\n' || tmp == ' ') {
                putchar(tmp);
                continue;
            }
            printf("*");
        }
        fclose(stdout);
        return 0;
    }
    

你的两个之间是逗号,题目要求是空格,你修改下应该就可以了
别的没问题