当前位置:编程学习 > C/C++ >>

C语言编程题 帮我检查下程序

/*程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符,如果找到,输出该字符在字符串中所对应的最大下标 (下标从0开始);否则输出"Not Found"。 输入输出示例:括号内为说明 输入: 2 (repeat=2) m (字符'm') programming (字符串"programming") a (字符'a') 1234 (字符串"1234") 输出: index = 7 ('m'在"programming"中对应的最大下标是7) Not Found ("1234"中没有'a') */ #include "stdio.h" #define MAXLEN 80 int main(void) { char cc, ch; char str[MAXLEN]; int count, flag, i, index; int repeat, ri; scanf("%d", &repeat); getchar(); for(ri = 1; ri <= repeat; ri++){ cc = getchar(); getchar(); i = 0; while((ch = getchar()) != '\n'){ str[i++] = ch; } str[i] = 0; count=i; flag=0; for(i=0;i<count-1;i++) if(str[i]==cc){ index=i; flag=1; } if(flag != 0) printf("index = %d\n", index); else printf("Not Found\n"); } }
追问:我是想看看我的哪里不对了
答案:是类型转换的问题 或者把c,d定义成float 或者把输出变成%d,%d就OK 了   
#include<stdio.h>
main()
{
 int a;
 int b;
 float c;
 float d;

 printf("请输入两个整数 中间以空格隔开:\n");
 
 scanf("%d %d",&a,&b);

 c = a / b;
 
 d = a % b;
 
 printf("它们的商是%f,余数是%f\n",c,d);

}
你再试试看
其他:#include <iostream.h>
#include<string.h>
#include<stdio.h>
int main()
{ 
    char cc;
    char str[100];
    int count, flag, i, index ,repeat;
    scanf("%d", &repeat);
	while(repeat--)
    {	  cin>>cc;
		cin>>str;
		count=strlen(str);
		flag=0;
		for(i=0;i<count;i++)
			if(str[i]==cc)
			{
				index=i;
				flag=1;
			}
        if(flag != 0)  
            printf("index = %d\n", index);
        else 
            printf("Not Found\n");
    }
	return 0;
}
不知道为什么我用C的输入法、、输不进去
我换了C++就可以了! 我只说你的错误,错误有2点
1) 
or(i=0;i<count;i++)              //此处是 i<count 
			if(str[i]==cc){
				index=i;
				flag=1;
			}
2)看题目是让你全部输入完毕后,才把结果全部输出来,你的程序是输入一次,输出一次结果
要改成定义一个10元素的数组,把结果先保存起来,最后再输出。可以用 -1表示没有。
定义  int result[10];

 if(flag != 0)  result[ri-1]=index;           //因为你 ri 是用 1开始循环的,所以此处用 ri-1
 else result[ri-1]=-1;

最后  
   for(ri=0;ri<repeat;ri++)
          if(result[ri]>=0)  
            printf("index = %d\n", result[ri]);
        else 
            printf("Not Found\n"); for(i=0;i<count-1;i++)改为
for(i=0;i<count;i++) 首先,最明显但不重要的一个错误:str[i]应给其赋值为'\0',而不是数字0,它是作为字符串结束标志输入的。
然后,你测试一下这组数据:
m
fjslhfm
也就是字符在字符串末尾的情况:
结果是not found
实际应该是index=6
原因是:for(i=0;i<count-1;i++)
你改为for(i=0;i<count;i++)
不必用count-1,因为你的 i 本身就是数组下标,而count=i;所以count也是数组下标,是从零开始计算的。若你用了count-1,上面那个例子中i=7,count=6只能循环到第str[5],对于处于str[6]的m自然就计算不到了,就出现错误了。 

上一个:计算机二级C语言考试的南开百题是历年真题吗?还有公共基础知识、笔试、上机什么关系呢?谢谢各位了!!!
下一个:谁能提供C语言的哈弗曼压缩算法

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,